88be9a85fff6708153699b73daf3e5dc38354ac0
[openwrt.git] / toolchain / gcc / patches / 4.4.1+cs / 000-codesourcery_2009q3_68.patch
1 diff -Nur a/config/mh-mingw b/config/mh-mingw
2 --- a/config/mh-mingw   2008-11-21 14:54:41.000000000 +0100
3 +++ b/config/mh-mingw   2010-01-25 09:50:28.945687353 +0100
4 @@ -1,6 +1,8 @@
5  # Add -D__USE_MINGW_ACCESS to enable the built compiler to work on Windows
6  # Vista (see PR33281 for details).
7 -BOOT_CFLAGS += -D__USE_MINGW_ACCESS -Wno-pedantic-ms-format
8 -CFLAGS += -D__USE_MINGW_ACCESS
9 +# Because we wrap access in libiberty/cygpath.c, we do not want to use
10 +# the MinGW wrappers for access.
11 +BOOT_CFLAGS += -Wno-pedantic-ms-format
12 +# CFLAGS += -D__USE_MINGW_ACCESS
13  # Increase stack limit to same as Linux default.
14  LDFLAGS += -Wl,--stack,8388608
15 diff -Nur a/config/stdint.m4 b/config/stdint.m4
16 --- a/config/stdint.m4  2007-04-12 15:06:43.000000000 +0200
17 +++ b/config/stdint.m4  2010-01-25 09:50:28.945687353 +0100
18 @@ -115,19 +115,19 @@
19  
20  # Lacking an uintptr_t?  Test size of void *
21  case "$acx_cv_header_stdint:$ac_cv_type_uintptr_t" in
22 -  stddef.h:* | *:no) AC_CHECK_SIZEOF(void *) ;;
23 +  stddef.h:* | *:no) AC_CHECK_SIZEOF(void *,,/* no standard headers */) ;;
24  esac
25  
26  # Lacking an uint64_t?  Test size of long
27  case "$acx_cv_header_stdint:$ac_cv_type_uint64_t:$ac_cv_type_u_int64_t" in
28 -  stddef.h:*:* | *:no:no) AC_CHECK_SIZEOF(long) ;;
29 +  stddef.h:*:* | *:no:no) AC_CHECK_SIZEOF(long,,/* no standard headers */) ;;
30  esac
31  
32  if test $acx_cv_header_stdint = stddef.h; then
33    # Lacking a good header?  Test size of everything and deduce all types.
34 -  AC_CHECK_SIZEOF(int)
35 -  AC_CHECK_SIZEOF(short)
36 -  AC_CHECK_SIZEOF(char)
37 +  AC_CHECK_SIZEOF(int,,/* no standard headers */)
38 +  AC_CHECK_SIZEOF(short,,/* no standard headers */)
39 +  AC_CHECK_SIZEOF(char,,/* no standard headers */)
40  
41    AC_MSG_CHECKING(for type equivalent to int8_t)
42    case "$ac_cv_sizeof_char" in
43 diff -Nur a/config/tls.m4 b/config/tls.m4
44 --- a/config/tls.m4     2009-01-23 05:58:03.000000000 +0100
45 +++ b/config/tls.m4     2010-01-25 09:50:28.945687353 +0100
46 @@ -1,5 +1,6 @@
47  dnl Check whether the target supports TLS.
48  AC_DEFUN([GCC_CHECK_TLS], [
49 +  AC_REQUIRE([AC_CANONICAL_HOST])
50    GCC_ENABLE(tls, yes, [], [Use thread-local storage])
51    AC_CACHE_CHECK([whether the target supports thread-local storage],
52                  gcc_cv_have_tls, [
53 @@ -66,7 +67,24 @@
54        [dnl This is the cross-compiling case. Assume libc supports TLS if the
55         dnl binutils and the compiler do.
56         AC_LINK_IFELSE([__thread int a; int b; int main() { return a = b; }],
57 -                     [gcc_cv_have_tls=yes], [gcc_cv_have_tls=no])
58 +        [chktls_save_LDFLAGS="$LDFLAGS"
59 +         dnl Shared library options may depend on the host; this check
60 +         dnl is only known to be needed for GNU/Linux.
61 +         case $host in
62 +           *-*-linux*)
63 +             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
64 +             ;;
65 +         esac
66 +         chktls_save_CFLAGS="$CFLAGS"
67 +         CFLAGS="-fPIC $CFLAGS"
68 +         dnl If -shared works, test if TLS works in a shared library.
69 +         AC_LINK_IFELSE([int f() { return 0; }],
70 +           [AC_LINK_IFELSE([__thread int a; int b; int f() { return a = b; }],
71 +             [gcc_cv_have_tls=yes],
72 +             [gcc_cv_have_tls=no])],
73 +           [gcc_cv_have_tls=yes])
74 +         CFLAGS="$chktls_save_CFLAGS"
75 +         LDFLAGS="$chktls_save_LDFLAGS"], [gcc_cv_have_tls=no])
76        ]
77      )])
78    if test "$enable_tls $gcc_cv_have_tls" = "yes yes"; then
79 diff -Nur a/configure b/configure
80 --- a/configure 2009-04-25 06:10:29.000000000 +0200
81 +++ b/configure 2010-01-25 09:50:28.945687353 +0100
82 @@ -2277,7 +2277,7 @@
83      noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}"
84      ;;
85    *-*-vxworks*)
86 -    noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}"
87 +    noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj}"
88      ;;
89    alpha*-dec-osf*)
90      # ld works, but does not support shared libraries.
91 diff -Nur a/configure.ac b/configure.ac
92 --- a/configure.ac      2009-04-25 06:10:29.000000000 +0200
93 +++ b/configure.ac      2010-01-25 09:50:28.945687353 +0100
94 @@ -512,7 +512,7 @@
95      noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}"
96      ;;
97    *-*-vxworks*)
98 -    noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}"
99 +    noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj}"
100      ;;
101    alpha*-dec-osf*)
102      # ld works, but does not support shared libraries.
103 diff -Nur a/fixincludes/fixincl.tpl b/fixincludes/fixincl.tpl
104 --- a/fixincludes/fixincl.tpl   2008-09-06 21:57:26.000000000 +0200
105 +++ b/fixincludes/fixincl.tpl   2010-01-25 09:50:28.945687353 +0100
106 @@ -38,7 +38,7 @@
107  #ifndef SED_PROGRAM
108  #define SED_PROGRAM "/usr/bin/sed"
109  #endif
110 -static char const sed_cmd_z[] = SED_PROGRAM;
111 +static char const sed_cmd_z[] = "sed";
112  [=
113  
114  FOR fix =]
115 diff -Nur a/fixincludes/fixincl.x b/fixincludes/fixincl.x
116 --- a/fixincludes/fixincl.x     2009-02-28 19:13:31.000000000 +0100
117 +++ b/fixincludes/fixincl.x     2010-01-25 09:50:28.945687353 +0100
118 @@ -2,11 +2,11 @@
119   * 
120   * DO NOT EDIT THIS FILE   (fixincl.x)
121   * 
122 - * It has been AutoGen-ed  Saturday February 28, 2009 at 10:11:41 AM PST
123 + * It has been AutoGen-ed  Monday July 20, 2009 at 01:53:53 PM PDT
124   * From the definitions    inclhack.def
125   * and the template file   fixincl
126   */
127 -/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Feb 28 10:11:41 PST 2009
128 +/* DO NOT SVN-MERGE THIS FILE, EITHER Mon Jul 20 13:53:53 PDT 2009
129   *
130   * You must regenerate it.  Use the ./genfixes script.
131   *
132 @@ -15,7 +15,7 @@
133   * certain ANSI-incompatible system header files which are fixed to work
134   * correctly with ANSI C and placed in a directory that GNU C will search.
135   *
136 - * This file contains 180 fixup descriptions.
137 + * This file contains 181 fixup descriptions.
138   *
139   * See README for more information.
140   *
141 @@ -39,7 +39,7 @@
142  #ifndef SED_PROGRAM
143  #define SED_PROGRAM "/usr/bin/sed"
144  #endif
145 -static char const sed_cmd_z[] = SED_PROGRAM;
146 +static char const sed_cmd_z[] = "sed";
147  
148  /* * * * * * * * * * * * * * * * * * * * * * * * * *
149   *
150 @@ -2300,6 +2300,42 @@
151  
152  /* * * * * * * * * * * * * * * * * * * * * * * * * *
153   *
154 + *  Description of Glibc_String2_Memset fix
155 + */
156 +tSCC zGlibc_String2_MemsetName[] =
157 +     "glibc_string2_memset";
158 +
159 +/*
160 + *  File name selection pattern
161 + */
162 +tSCC zGlibc_String2_MemsetList[] =
163 +  "bits/string2.h\0";
164 +/*
165 + *  Machine/OS name selection pattern
166 + */
167 +#define apzGlibc_String2_MemsetMachs (const char**)NULL
168 +
169 +/*
170 + *  content selection pattern - do fix if pattern found
171 + */
172 +tSCC zGlibc_String2_MemsetSelect0[] =
173 +       "#ifndef _HAVE_STRING_ARCH_memset\n\
174 +# if _STRING_ARCH_unaligned";
175 +
176 +#define    GLIBC_STRING2_MEMSET_TEST_CT  1
177 +static tTestDesc aGlibc_String2_MemsetTests[] = {
178 +  { TT_EGREP,    zGlibc_String2_MemsetSelect0, (regex_t*)NULL }, };
179 +
180 +/*
181 + *  Fix Command Arguments for Glibc_String2_Memset
182 + */
183 +static const char* apzGlibc_String2_MemsetPatch[] = {
184 +    "format",
185 +    "%0 && 0",
186 +    (char*)NULL };
187 +
188 +/* * * * * * * * * * * * * * * * * * * * * * * * * *
189 + *
190   *  Description of Gnu_Types fix
191   */
192  tSCC zGnu_TypesName[] =
193 @@ -5617,8 +5653,7 @@
194   *  Machine/OS name selection pattern
195   */
196  tSCC* apzSolaris_Mutex_Init_2Machs[] = {
197 -        "*-*-solaris2.[0-9]",
198 -        "*-*-solaris2.[0-9][!0-9]*",
199 +        "*-*-solaris*",
200          (const char*)NULL };
201  
202  /*
203 @@ -5627,8 +5662,15 @@
204  tSCC zSolaris_Mutex_Init_2Select0[] =
205         "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
206  
207 -#define    SOLARIS_MUTEX_INIT_2_TEST_CT  1
208 +/*
209 + *  perform the 'test' shell command - do fix on success
210 + */
211 +tSCC zSolaris_Mutex_Init_2Test0[] =
212 +       " -n \"`grep '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' \\`dirname $file\\`/sys/types.h`\"";
213 +
214 +#define    SOLARIS_MUTEX_INIT_2_TEST_CT  2
215  static tTestDesc aSolaris_Mutex_Init_2Tests[] = {
216 +  { TT_TEST,     zSolaris_Mutex_Init_2Test0,   0 /* unused */ },
217    { TT_EGREP,    zSolaris_Mutex_Init_2Select0, (regex_t*)NULL }, };
218  
219  /*
220 @@ -5670,8 +5712,15 @@
221  tSCC zSolaris_Rwlock_Init_1Select0[] =
222         "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
223  
224 -#define    SOLARIS_RWLOCK_INIT_1_TEST_CT  1
225 +/*
226 + *  perform the 'test' shell command - do fix on success
227 + */
228 +tSCC zSolaris_Rwlock_Init_1Test0[] =
229 +       " -n \"`grep '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' \\`dirname $file\\`/sys/types.h`\"";
230 +
231 +#define    SOLARIS_RWLOCK_INIT_1_TEST_CT  2
232  static tTestDesc aSolaris_Rwlock_Init_1Tests[] = {
233 +  { TT_TEST,     zSolaris_Rwlock_Init_1Test0,   0 /* unused */ },
234    { TT_EGREP,    zSolaris_Rwlock_Init_1Select0, (regex_t*)NULL }, };
235  
236  /*
237 @@ -5741,8 +5790,7 @@
238   *  Machine/OS name selection pattern
239   */
240  tSCC* apzSolaris_Once_Init_2Machs[] = {
241 -        "*-*-solaris2.[0-9]",
242 -        "*-*-solaris2.[0-9][!0-9]*",
243 +        "*-*-solaris*",
244          (const char*)NULL };
245  
246  /*
247 @@ -5751,8 +5799,15 @@
248  tSCC zSolaris_Once_Init_2Select0[] =
249         "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
250  
251 -#define    SOLARIS_ONCE_INIT_2_TEST_CT  1
252 +/*
253 + *  perform the 'test' shell command - do fix on success
254 + */
255 +tSCC zSolaris_Once_Init_2Test0[] =
256 +       " -n \"`grep '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' \\`dirname $file\\`/sys/types.h`\"";
257 +
258 +#define    SOLARIS_ONCE_INIT_2_TEST_CT  2
259  static tTestDesc aSolaris_Once_Init_2Tests[] = {
260 +  { TT_TEST,     zSolaris_Once_Init_2Test0,   0 /* unused */ },
261    { TT_EGREP,    zSolaris_Once_Init_2Select0, (regex_t*)NULL }, };
262  
263  /*
264 @@ -7308,9 +7363,9 @@
265   *
266   *  List of all fixes
267   */
268 -#define REGEX_COUNT          226
269 -#define MACH_LIST_SIZE_LIMIT 181
270 -#define FIX_COUNT            180
271 +#define REGEX_COUNT          227
272 +#define MACH_LIST_SIZE_LIMIT 169
273 +#define FIX_COUNT            181
274  
275  /*
276   *  Enumerate the fixes
277 @@ -7371,6 +7426,7 @@
278      GLIBC_C99_INLINE_3_FIXIDX,
279      GLIBC_C99_INLINE_4_FIXIDX,
280      GLIBC_MUTEX_INIT_FIXIDX,
281 +    GLIBC_STRING2_MEMSET_FIXIDX,
282      GNU_TYPES_FIXIDX,
283      HP_INLINE_FIXIDX,
284      HP_SYSFILE_FIXIDX,
285 @@ -7774,6 +7830,11 @@
286       GLIBC_MUTEX_INIT_TEST_CT, FD_MACH_ONLY,
287       aGlibc_Mutex_InitTests,   apzGlibc_Mutex_InitPatch, 0 },
288  
289 +  {  zGlibc_String2_MemsetName,    zGlibc_String2_MemsetList,
290 +     apzGlibc_String2_MemsetMachs,
291 +     GLIBC_STRING2_MEMSET_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
292 +     aGlibc_String2_MemsetTests,   apzGlibc_String2_MemsetPatch, 0 },
293 +
294    {  zGnu_TypesName,    zGnu_TypesList,
295       apzGnu_TypesMachs,
296       GNU_TYPES_TEST_CT, FD_MACH_IFNOT | FD_SUBROUTINE,
297 diff -Nur a/fixincludes/inclhack.def b/fixincludes/inclhack.def
298 --- a/fixincludes/inclhack.def  2009-02-28 19:13:31.000000000 +0100
299 +++ b/fixincludes/inclhack.def  2010-01-25 09:50:28.955687088 +0100
300 @@ -1302,6 +1302,21 @@
301  };
302  
303  
304 +/* glibc's bits/string2.h (before 2004-05-26) generates bogus
305 +   -Wstrict-aliasing warnings from calls to memset.  */
306 +fix = {
307 +    hackname  = glibc_string2_memset;
308 +    files     = "bits/string2.h";
309 +    select    = "#ifndef _HAVE_STRING_ARCH_memset\n# if _STRING_ARCH_unaligned";
310 +    c_fix     = format;
311 +    c_fix_arg = "%0 && 0";
312 +    test_text = "#ifndef _HAVE_STRING_ARCH_memset\n"
313 +                "# if _STRING_ARCH_unaligned\n"
314 +                "# endif\n"
315 +                "#endif\n";
316 +};
317 +
318 +
319  /*
320   * Fix these files to use the types we think they should for
321   * ptrdiff_t, size_t, and wchar_t.
322 @@ -2939,24 +2954,32 @@
323  };
324  
325  /*
326 - * Sun Solaris defines PTHREAD_MUTEX_INITIALIZER with a trailing
327 - * "0" for the last field of the pthread_mutex_t structure, which is
328 - * of type upad64_t, which itself is typedef'd to int64_t, but with
329 - * __STDC__ defined (e.g. by -ansi) it is a union. So change the
330 - * initializer to "{0}" instead
331 + * Sun Solaris defines the last field of the pthread_mutex_t structure
332 + * to have type upad64_t.  Whether upad64_t is an integer type or a
333 + * union depends on whether or not the headers believe that a 64-bit
334 + * integer type is available.  But, PTHREAD_MUTEX_INITIALIZER is not
335 + * appropriately conditionalized; it always uses "0", and never "{0}".
336 + * In order to avoid warnings/errors from the compiler, we must make
337 + * the initializer use braces where appropriate.
338 + *
339 + * Prior to Solaris 10, if __STDC__ is 1 (as when compiling with
340 + * -ansi), the definition would be a union.  Beginning with Solaris
341 + * 10, the headers check for __GNUC__, and will never use a union with
342 + * GCC.  We check /usr/include/sys/types.h to see if it checks for
343 + * __STDC__.
344 + *
345 + * A "mach" test for Solaris 10 is undesirable because we want to
346 + * allow a compiler built for Solaris <10 to be used on Solaris >=10,
347 + * but the installed version of fixincludes hard-wires the target
348 + * machine to the configure-time $target, rather than automatically
349 + * determining it at installation time.
350   */
351  fix = {
352      hackname = solaris_mutex_init_2;
353      select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
354      files = pthread.h;
355 -    /*
356 -     * On Solaris 10, this fix is unnecessary because upad64_t is
357 -     * always defined correctly regardless of the definition of the
358 -     * __STDC__ macro.  The first "mach" pattern matches up to
359 -     * solaris9.  The second "mach" pattern will not match any two (or
360 -     * more) digit solaris version, but it will match e.g. 2.5.1.
361 -     */
362 -    mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*';
363 +    mach = '*-*-solaris*';
364 +    test = " -n \"`grep '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' \\`dirname $file\\`/sys/types.h`\"";
365      c_fix = format;
366      c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
367                  "%0\n"
368 @@ -2967,6 +2990,7 @@
369                  "(|/\*.*\*/[ \t]*\\\\\n[ \t]*)\\{.*)"
370                  ",[ \t]*0\\}" "(|[ \t].*)$";
371      test_text =
372 +    "`mkdir -p sys; echo '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' >> sys/types.h`"
373      '#ident "@(#)pthread.h  1.26  98/04/12 SMI"'"\n"
374      "#define PTHREAD_MUTEX_INITIALIZER\t{{{0},0}, {{{0}}}, 0}\n"
375      "#define PTHREAD_COND_INITIALIZER\t{{{0}, 0}, 0}\t/* DEFAULTCV */\n"
376 @@ -2978,17 +3002,14 @@
377  
378  
379  /*
380 - * Sun Solaris defines PTHREAD_RWLOCK_INITIALIZER with a "0" for some
381 - *  fields of the pthread_rwlock_t structure, which are of type
382 - *  upad64_t, which itself is typedef'd to int64_t, but with __STDC__
383 - *  defined (e.g. by -ansi) it is a union. So change the initializer
384 - *  to "{0}" instead.
385 + * See comments for solaris_mutex_init_2 re. upad64_t.
386   */
387  fix = {
388      hackname = solaris_rwlock_init_1;
389      select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
390      files = pthread.h;
391      mach = '*-*-solaris*';
392 +    test = " -n \"`grep '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' \\`dirname $file\\`/sys/types.h`\"";
393      c_fix = format;
394      c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
395                  "%0\n"
396 @@ -3024,24 +3045,14 @@
397  
398  
399  /*
400 - * Sun Solaris defines PTHREAD_ONCE_INIT with a "0" for some
401 - *  fields of the pthread_once_t structure, which are of type
402 - *  upad64_t, which itself is typedef'd to int64_t, but with __STDC__
403 - *  defined (e.g. by -ansi) it is a union. So change the initializer
404 - *  to "{0}" instead.  This test relies on solaris_once_init_1.
405 + * See comments for solaris_mutex_init_2 re. upad64_t.
406   */
407  fix = {
408      hackname = solaris_once_init_2;
409      select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
410      files = pthread.h;
411 -    /*
412 -     * On Solaris 10, this fix is unnecessary because upad64_t is
413 -     * always defined correctly regardless of the definition of the
414 -     * __STDC__ macro.  The first "mach" pattern matches up to
415 -     * solaris9.  The second "mach" pattern will not match any two (or
416 -     * more) digit solaris version, but it will match e.g. 2.5.1.
417 -     */
418 -    mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*';
419 +    mach = '*-*-solaris*';
420 +    test = " -n \"`grep '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' \\`dirname $file\\`/sys/types.h`\"";
421      c_fix = format;
422      c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
423                  "%0\n"
424 diff -Nur a/fixincludes/server.c b/fixincludes/server.c
425 --- a/fixincludes/server.c      2005-08-15 02:50:43.000000000 +0200
426 +++ b/fixincludes/server.c      2010-01-25 09:50:28.955687088 +0100
427 @@ -266,7 +266,7 @@
428    /*  Make sure the process will pay attention to us, send the
429       supplied command, and then have it output a special marker that
430       we can find.  */
431 -  fprintf (server_pair.pf_write, "cd %s\n%s\n\necho\necho %s\n",
432 +  fprintf (server_pair.pf_write, "cd '%s'\n%s\n\necho\necho %s\n",
433             p_cur_dir, pz_cmd, z_done);
434    fflush (server_pair.pf_write);
435  
436 diff -Nur a/fixincludes/tests/base/bits/string2.h b/fixincludes/tests/base/bits/string2.h
437 --- a/fixincludes/tests/base/bits/string2.h     2007-03-26 15:25:26.000000000 +0200
438 +++ b/fixincludes/tests/base/bits/string2.h     2010-01-25 09:50:28.955687088 +0100
439 @@ -16,3 +16,12 @@
440  #  define __STRING_INLINE extern __inline
441  # endif
442  #endif  /* GLIBC_C99_INLINE_3_CHECK */
443 +
444 +
445 +#if defined( GLIBC_STRING2_MEMSET_CHECK )
446 +#ifndef _HAVE_STRING_ARCH_memset
447 +# if _STRING_ARCH_unaligned && 0
448 +# endif
449 +#endif
450 +
451 +#endif  /* GLIBC_STRING2_MEMSET_CHECK */
452 diff -Nur a/fixincludes/tests/base/sys/types.h b/fixincludes/tests/base/sys/types.h
453 --- a/fixincludes/tests/base/sys/types.h        2004-08-31 11:27:00.000000000 +0200
454 +++ b/fixincludes/tests/base/sys/types.h        2010-01-25 09:50:28.955687088 +0100
455 @@ -28,3 +28,4 @@
456  
457  #endif /* ushort_t */
458  #endif  /* GNU_TYPES_CHECK */
459 +#if  !defined(__STRICT_ANSI__) && !defined(_NO_LONGLONG)
460 diff -Nur a/gcc/acinclude.m4 b/gcc/acinclude.m4
461 --- a/gcc/acinclude.m4  2008-06-02 21:37:45.000000000 +0200
462 +++ b/gcc/acinclude.m4  2010-01-25 09:50:28.955687088 +0100
463 @@ -482,3 +482,53 @@
464  AC_DEFUN([gcc_AC_BUILD_EXEEXT], [
465  ac_executable_extensions="$build_exeext"])
466  
467 +
468 +# --with-license=PATH
469 +AC_DEFUN([CSL_AC_LICENSE],[
470 +  AC_ARG_WITH(license,
471 +    AC_HELP_STRING([--with-license],
472 +                   [the path to the installed license component]),
473 +    [case "$withval" in
474 +     (yes) AC_MSG_ERROR([license not specified]) ;;
475 +     (no)  with_license= ;;
476 +     (*) ;;
477 +  esac],
478 +  [with_license=])
479 +  AC_SUBST(licensedir, $with_license)
480 +])
481 +
482 +# --with-csl-license-feature=FOO
483 +AC_DEFUN([CSL_AC_LICENSE_FEATURE],[
484 +  AC_ARG_WITH(csl-license-feature,
485 +    AC_HELP_STRING([--with-csl-license-feature=FEATURE],
486 +                   [Use FEATURE to communicate with the license manager]),
487 +    [case "$withval" in
488 +      (yes) AC_MSG_ERROR([license feature not specified]) ;;
489 +      (no)  CSL_LICENSE_FEATURE="" ;; 
490 +      (*)   CSL_LICENSE_FEATURE="$withval" ;;
491 +     esac],
492 +     CSL_LICENSE_FEATURE=""
493 +  )
494 +  if test x"$CSL_LICENSE_FEATURE" != x; then
495 +    AC_DEFINE_UNQUOTED(CSL_LICENSE_FEATURE, "$CSL_LICENSE_FEATURE",
496 +                       [Required license feature])
497 +  fi
498 +])
499 +
500 +# --with-csl-license-version=VERSION
501 +AC_DEFUN([CSL_AC_LICENSE_VERSION],[
502 +  AC_ARG_WITH(csl-license-version,
503 +    AC_HELP_STRING([--with-csl-license-version=VERSION],
504 +                   [Use VERSION to communicate with the license manager]),
505 +    [case "$withval" in
506 +      (yes) AC_MSG_ERROR([license version not specified]) ;;
507 +      (no)  CSL_LICENSE_VERSION="" ;; 
508 +      (*)   CSL_LICENSE_VERSION="$withval" ;;
509 +     esac],
510 +     CSL_LICENSE_VERSION=""
511 +  )
512 +  if test x"$CSL_LICENSE_VERSION" != x; then
513 +    AC_DEFINE_UNQUOTED(CSL_LICENSE_VERSION, "$CSL_LICENSE_VERSION",
514 +                       [Required license version])
515 +  fi
516 +])
517 diff -Nur a/gcc/addresses.h b/gcc/addresses.h
518 --- a/gcc/addresses.h   2007-07-26 10:37:01.000000000 +0200
519 +++ b/gcc/addresses.h   2010-01-25 09:50:28.955687088 +0100
520 @@ -78,3 +78,42 @@
521  
522    return ok_for_base_p_1 (regno, mode, outer_code, index_code);
523  }
524 +
525 +/* Wrapper function to unify target macros MODE_INDEX_REG_CLASS and
526 +   INDEX_REG_CLASS.  Arguments as for the MODE_INDEX_REG_CLASS macro.  */
527 +
528 +static inline enum reg_class
529 +index_reg_class (enum machine_mode mode ATTRIBUTE_UNUSED)
530 +{
531 +#ifdef MODE_INDEX_REG_CLASS
532 +  return MODE_INDEX_REG_CLASS (mode);
533 +#else
534 +  return INDEX_REG_CLASS;
535 +#endif
536 +}
537 +
538 +/* Wrapper function to unify target macros REGNO_MODE_OK_FOR_INDEX_P
539 +   and REGNO_OK_FOR_INDEX_P.  Arguments as for the
540 +   REGNO_MODE_OK_FOR_INDEX_P macro.  */
541 +
542 +static inline bool
543 +ok_for_index_p_1 (unsigned regno, enum machine_mode mode ATTRIBUTE_UNUSED)
544 +{
545 +#ifdef REGNO_MODE_OK_FOR_INDEX_P
546 +  return REGNO_MODE_OK_FOR_INDEX_P (regno, mode);
547 +#else
548 +  return REGNO_OK_FOR_INDEX_P (regno);
549 +#endif
550 +}
551 +
552 +/* Wrapper around ok_for_index_p_1, for use after register allocation is
553 +   complete.  Arguments as for the called function.  */
554 +
555 +static inline bool
556 +regno_ok_for_index_p (unsigned regno, enum machine_mode mode)
557 +{
558 +  if (regno >= FIRST_PSEUDO_REGISTER && reg_renumber[regno] >= 0)
559 +    regno = reg_renumber[regno];
560 +
561 +  return ok_for_index_p_1 (regno, mode);
562 +}
563 diff -Nur a/gcc/calls.c b/gcc/calls.c
564 --- a/gcc/calls.c       2009-02-20 12:19:34.000000000 +0100
565 +++ b/gcc/calls.c       2010-01-25 09:50:28.955687088 +0100
566 @@ -3803,7 +3803,7 @@
567       cse'ing of library calls could delete a call and leave the pop.  */
568    NO_DEFER_POP;
569    valreg = (mem_value == 0 && outmode != VOIDmode
570 -           ? hard_libcall_value (outmode) : NULL_RTX);
571 +           ? hard_libcall_value (outmode, orgfun) : NULL_RTX);
572  
573    /* Stack must be properly aligned now.  */
574    gcc_assert (!(stack_pointer_delta
575 @@ -4048,8 +4048,17 @@
576               /* We need to make a save area.  */
577               unsigned int size = arg->locate.size.constant * BITS_PER_UNIT;
578               enum machine_mode save_mode = mode_for_size (size, MODE_INT, 1);
579 -             rtx adr = memory_address (save_mode, XEXP (arg->stack_slot, 0));
580 -             rtx stack_area = gen_rtx_MEM (save_mode, adr);
581 +             rtx adr;
582 +             rtx stack_area;
583 +
584 +             /* We can only use save_mode if the arg is sufficiently
585 +                aligned.  */
586 +             if (STRICT_ALIGNMENT
587 +                 && GET_MODE_ALIGNMENT (save_mode) > arg->locate.boundary)
588 +               save_mode = BLKmode;
589 +
590 +             adr = memory_address (save_mode, XEXP (arg->stack_slot, 0));
591 +             stack_area = gen_rtx_MEM (save_mode, adr);
592  
593               if (save_mode == BLKmode)
594                 {
595 diff -Nur a/gcc/c-common.c b/gcc/c-common.c
596 --- a/gcc/c-common.c    2009-03-30 19:42:27.000000000 +0200
597 +++ b/gcc/c-common.c    2010-01-25 09:50:28.955687088 +0100
598 @@ -33,7 +33,6 @@
599  #include "varray.h"
600  #include "expr.h"
601  #include "c-common.h"
602 -#include "diagnostic.h"
603  #include "tm_p.h"
604  #include "obstack.h"
605  #include "cpplib.h"
606 @@ -42,6 +41,7 @@
607  #include "tree-inline.h"
608  #include "c-tree.h"
609  #include "toplev.h"
610 +#include "diagnostic.h"
611  #include "tree-iterator.h"
612  #include "hashtab.h"
613  #include "tree-mudflap.h"
614 @@ -497,6 +497,10 @@
615     This is a count, since unevaluated expressions can nest.  */
616  int skip_evaluation;
617  
618 +/* Whether lexing has been completed, so subsequent preprocessor
619 +   errors should use the compiler's input_location.  */
620 +bool done_lexing = false;
621 +
622  /* Information about how a function name is generated.  */
623  struct fname_var_t
624  {
625 @@ -7522,6 +7526,68 @@
626  #undef catenate_messages
627  }
628  
629 +/* Callback from cpp_error for PFILE to print diagnostics from the
630 +   preprocessor.  The diagnostic is of type LEVEL, at location
631 +   LOCATION unless this is after lexing and the compiler's location
632 +   should be used instead, with column number possibly overridden by
633 +   COLUMN_OVERRIDE if not zero; MSG is the translated message and AP
634 +   the arguments.  Returns true if a diagnostic was emitted, false
635 +   otherwise.  */
636 +
637 +bool
638 +c_cpp_error (cpp_reader *pfile ATTRIBUTE_UNUSED, int level,
639 +            location_t location, unsigned int column_override,
640 +            const char *msg, va_list *ap)
641 +{
642 +  diagnostic_info diagnostic;
643 +  diagnostic_t dlevel;
644 +  int save_warn_system_headers = warn_system_headers;
645 +  bool ret;
646 +
647 +  switch (level)
648 +    {
649 +    case CPP_DL_WARNING_SYSHDR:
650 +      if (flag_no_output)
651 +       return false;
652 +      warn_system_headers = 1;
653 +      /* Fall through.  */
654 +    case CPP_DL_WARNING:
655 +      if (flag_no_output)
656 +       return false;
657 +      dlevel = DK_WARNING;
658 +      break;
659 +    case CPP_DL_PEDWARN:
660 +      if (flag_no_output && !flag_pedantic_errors)
661 +       return false;
662 +      dlevel = DK_PEDWARN;
663 +      break;
664 +    case CPP_DL_ERROR:
665 +      dlevel = DK_ERROR;
666 +      break;
667 +    case CPP_DL_ICE:
668 +      dlevel = DK_ICE;
669 +      break;
670 +    case CPP_DL_NOTE:
671 +      dlevel = DK_NOTE;
672 +      break;
673 +    case CPP_DL_FATAL:
674 +      dlevel = DK_FATAL;
675 +      break;
676 +    default:
677 +      gcc_unreachable ();
678 +    }
679 +  if (done_lexing)
680 +    location = input_location;
681 +  diagnostic_set_info_translated (&diagnostic, msg, ap,
682 +                                 location, dlevel);
683 +  if (column_override)
684 +    diagnostic_override_column (&diagnostic, column_override);
685 +  ret = report_diagnostic (&diagnostic);
686 +  if (level == CPP_DL_WARNING_SYSHDR)
687 +    warn_system_headers = save_warn_system_headers;
688 +  return ret;
689 +}
690 +
691  /* Walk a gimplified function and warn for functions whose return value is
692     ignored and attribute((warn_unused_result)) is set.  This is done before
693     inlining, so we don't have to worry about that.  */
694 diff -Nur a/gcc/c-common.h b/gcc/c-common.h
695 --- a/gcc/c-common.h    2009-03-30 19:42:27.000000000 +0200
696 +++ b/gcc/c-common.h    2010-01-25 09:50:28.955687088 +0100
697 @@ -658,6 +658,11 @@
698  
699  extern int skip_evaluation;
700  
701 +/* Whether lexing has been completed, so subsequent preprocessor
702 +   errors should use the compiler's input_location.  */
703 +
704 +extern bool done_lexing;
705 +
706  /* C types are partitioned into three subsets: object, function, and
707     incomplete types.  */
708  #define C_TYPE_OBJECT_P(type) \
709 diff -Nur a/gcc/c-convert.c b/gcc/c-convert.c
710 --- a/gcc/c-convert.c   2009-02-20 16:20:38.000000000 +0100
711 +++ b/gcc/c-convert.c   2010-01-25 09:50:28.955687088 +0100
712 @@ -70,6 +70,7 @@
713    tree e = expr;
714    enum tree_code code = TREE_CODE (type);
715    const char *invalid_conv_diag;
716 +  tree ret;
717  
718    if (type == error_mark_node
719        || expr == error_mark_node
720 @@ -85,6 +86,9 @@
721  
722    if (type == TREE_TYPE (expr))
723      return expr;
724 +  ret = targetm.convert_to_type (type, expr);
725 +  if (ret)
726 +      return ret;
727  
728    if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (TREE_TYPE (expr)))
729      return fold_convert (type, expr);
730 diff -Nur a/gcc/c-decl.c b/gcc/c-decl.c
731 --- a/gcc/c-decl.c      2009-02-20 16:20:38.000000000 +0100
732 +++ b/gcc/c-decl.c      2010-01-25 09:50:28.955687088 +0100
733 @@ -3994,6 +3994,7 @@
734    bool bitfield = width != NULL;
735    tree element_type;
736    struct c_arg_info *arg_info = 0;
737 +  const char *errmsg;
738  
739    if (decl_context == FUNCDEF)
740      funcdef_flag = true, decl_context = NORMAL;
741 @@ -4531,6 +4532,12 @@
742                 error ("%qs declared as function returning an array", name);
743                 type = integer_type_node;
744               }
745 +           errmsg = targetm.invalid_return_type (type);
746 +           if (errmsg)
747 +             {
748 +               error (errmsg);
749 +               type = integer_type_node;
750 +             }
751  
752             /* Construct the function type and go to the next
753                inner layer of declarator.  */
754 @@ -5044,6 +5051,7 @@
755      {
756        tree parm, type, typelt;
757        unsigned int parmno;
758 +      const char *errmsg;
759  
760        /* If there is a parameter of incomplete type in a definition,
761          this is an error.  In a declaration this is valid, and a
762 @@ -5087,6 +5095,14 @@
763                 }
764             }
765  
766 +         errmsg = targetm.invalid_parameter_type (type);
767 +         if (errmsg)
768 +           {
769 +             error (errmsg);
770 +             TREE_VALUE (typelt) = error_mark_node;
771 +             TREE_TYPE (parm) = error_mark_node;
772 +           }
773 +
774           if (DECL_NAME (parm) && TREE_USED (parm))
775             warn_if_shadowing (parm);
776         }
777 @@ -8071,7 +8087,7 @@
778  
779    /* Don't waste time on further processing if -fsyntax-only or we've
780       encountered errors.  */
781 -  if (flag_syntax_only || errorcount || sorrycount || cpp_errors (parse_in))
782 +  if (flag_syntax_only || errorcount || sorrycount)
783      return;
784  
785    /* Close the external scope.  */
786 diff -Nur a/gcc/cfgexpand.c b/gcc/cfgexpand.c
787 --- a/gcc/cfgexpand.c   2009-07-11 21:06:26.000000000 +0200
788 +++ b/gcc/cfgexpand.c   2010-01-25 09:50:28.955687088 +0100
789 @@ -488,7 +488,8 @@
790  {
791    unsigned int align;
792  
793 -  align = LOCAL_DECL_ALIGNMENT (decl);
794 +  align = alignment_for_aligned_arrays (TREE_TYPE (decl),
795 +                                       LOCAL_DECL_ALIGNMENT (decl));
796  
797    if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
798      align = MAX_SUPPORTED_STACK_ALIGNMENT;
799 diff -Nur a/gcc/cgraph.c b/gcc/cgraph.c
800 --- a/gcc/cgraph.c      2008-11-16 23:31:58.000000000 +0100
801 +++ b/gcc/cgraph.c      2010-01-25 09:50:28.955687088 +0100
802 @@ -475,9 +475,11 @@
803    if (DECL_CONTEXT (decl) && TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL)
804      {
805        node->origin = cgraph_node (DECL_CONTEXT (decl));
806 +      node->origin->ever_was_nested = 1;
807        node->next_nested = node->origin->nested;
808        node->origin->nested = node;
809        node->master_clone = node;
810 +      node->ever_was_nested = 1;
811      }
812    if (assembler_name_hash)
813      {
814 diff -Nur a/gcc/cgraph.h b/gcc/cgraph.h
815 --- a/gcc/cgraph.h      2009-03-23 17:29:33.000000000 +0100
816 +++ b/gcc/cgraph.h      2010-01-25 09:50:28.955687088 +0100
817 @@ -185,6 +185,8 @@
818    unsigned output : 1;
819    /* Set for aliases once they got through assemble_alias.  */
820    unsigned alias : 1;
821 +  /* Set if the function is a nested function or has nested functions.  */
822 +  unsigned ever_was_nested : 1;
823  
824    /* In non-unit-at-a-time mode the function body of inline candidates is saved
825       into clone before compiling so the function in original form can be
826 diff -Nur a/gcc/common.opt b/gcc/common.opt
827 --- a/gcc/common.opt    2009-03-28 18:28:45.000000000 +0100
828 +++ b/gcc/common.opt    2010-01-25 09:50:28.955687088 +0100
829 @@ -153,6 +153,10 @@
830  Common Var(warn_padded) Warning
831  Warn when padding is required to align structure members
832  
833 +Wpoison-system-directories
834 +Common Var(flag_poison_system_directories) Init(1)
835 +Warn for -I and -L options using system directories if cross compiling
836 +
837  Wshadow
838  Common Var(warn_shadow) Warning
839  Warn when one local variable shadows another
840 @@ -270,6 +274,12 @@
841  fabi-version=
842  Common Joined UInteger Var(flag_abi_version) Init(2)
843  
844 +falign-arrays
845 +Target Report Var(flag_align_arrays)
846 +Set the minimum alignment for array variables to be the largest power
847 +of two less than or equal to their total storage size, or the biggest
848 +alignment used on the machine, whichever is smaller.
849 +
850  falign-functions
851  Common Report Var(align_functions,0) Optimization UInteger
852  Align the start of functions
853 @@ -467,6 +477,10 @@
854  Common Report Var(flag_early_inlining) Init(1) Optimization
855  Perform early inlining
856  
857 +feglibc=
858 +Common Report Joined Undocumented
859 +EGLIBC configuration specifier, serves multilib purposes.
860 +
861  feliminate-dwarf2-dups
862  Common Report Var(flag_eliminate_dwarf2_dups)
863  Perform DWARF2 duplicate elimination
864 @@ -895,6 +909,10 @@
865  Common Report Var(flag_profile_values)
866  Insert code to profile values of expressions
867  
868 +fpromote-loop-indices
869 +Common Report Var(flag_promote_loop_indices) Optimization
870 +Promote loop indices to word-sized indices when safe
871 +
872  frandom-seed
873  Common
874  
875 @@ -1227,6 +1245,15 @@
876  Common Report Var(flag_tree_pre) Optimization
877  Enable SSA-PRE optimization on trees
878  
879 +ftree-pre-partial-partial
880 +Common Report Var(flag_tree_pre_partial_partial) Optimization
881 +In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
882 +
883 +ftree-pre-partial-partial-obliviously
884 +Common Report Var(flag_tree_pre_partial_partial_obliviously) Optimization
885 +In SSA-PRE optimization on trees, enable partial-partial redundancy
886 +elimination without regard for the cost of the inserted phi nodes.
887 +
888  ftree-reassoc
889  Common Report Var(flag_tree_reassoc) Init(1) Optimization
890  Enable reassociation on tree level
891 diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
892 --- a/gcc/config/arm/arm.c      2009-06-02 09:18:16.000000000 +0200
893 +++ b/gcc/config/arm/arm.c      2010-01-25 09:50:28.975687047 +0100
894 @@ -43,6 +43,7 @@
895  #include "optabs.h"
896  #include "toplev.h"
897  #include "recog.h"
898 +#include "cgraph.h"
899  #include "ggc.h"
900  #include "except.h"
901  #include "c-pragma.h"
902 @@ -53,6 +54,8 @@
903  #include "debug.h"
904  #include "langhooks.h"
905  #include "df.h"
906 +#include "intl.h"
907 +#include "params.h"
908  
909  /* Forward definitions of types.  */
910  typedef struct minipool_node    Mnode;
911 @@ -110,6 +113,7 @@
912  static unsigned long arm_isr_value (tree);
913  static unsigned long arm_compute_func_type (void);
914  static tree arm_handle_fndecl_attribute (tree *, tree, tree, int, bool *);
915 +static tree arm_handle_pcs_attribute (tree *, tree, tree, int, bool *);
916  static tree arm_handle_isr_attribute (tree *, tree, tree, int, bool *);
917  #if TARGET_DLLIMPORT_DECL_ATTRIBUTES
918  static tree arm_handle_notshared_attribute (tree *, tree, tree, int, bool *);
919 @@ -123,6 +127,10 @@
920  static int count_insns_for_constant (HOST_WIDE_INT, int);
921  static int arm_get_strip_length (int);
922  static bool arm_function_ok_for_sibcall (tree, tree);
923 +static bool arm_return_in_memory (const_tree, const_tree);
924 +static rtx arm_function_value (const_tree, const_tree, bool);
925 +static rtx arm_libcall_value (enum machine_mode, rtx);
926 +
927  static void arm_internal_label (FILE *, const char *, unsigned long);
928  static void arm_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT,
929                                  tree);
930 @@ -148,6 +156,9 @@
931  static rtx emit_set_insn (rtx, rtx);
932  static int arm_arg_partial_bytes (CUMULATIVE_ARGS *, enum machine_mode,
933                                   tree, bool);
934 +static rtx aapcs_allocate_return_reg (enum machine_mode, const_tree,
935 +                                     const_tree);
936 +static int aapcs_select_return_coproc (const_tree, const_tree);
937  
938  #ifdef OBJECT_FORMAT_ELF
939  static void arm_elf_asm_constructor (rtx, int) ATTRIBUTE_UNUSED;
940 @@ -175,6 +186,7 @@
941  static bool arm_output_ttype (rtx);
942  #endif
943  static void arm_dwarf_handle_frame_unspec (const char *, rtx, int);
944 +static rtx arm_dwarf_register_span(rtx);
945  
946  static tree arm_cxx_guard_type (void);
947  static bool arm_cxx_guard_mask_bit (void);
948 @@ -197,6 +209,15 @@
949  static int arm_issue_rate (void);
950  static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
951  static bool arm_allocate_stack_slots_for_args (void);
952 +static bool arm_warn_func_result (void);
953 +static int arm_multipass_dfa_lookahead (void);
954 +static const char *arm_invalid_parameter_type (const_tree t);
955 +static const char *arm_invalid_return_type (const_tree t);
956 +static tree arm_promoted_type (const_tree t);
957 +static tree arm_convert_to_type (tree type, tree expr);
958 +static bool arm_scalar_mode_supported_p (enum machine_mode);
959 +static int arm_vector_min_alignment (const_tree type);
960 +static bool arm_vector_always_misalign(const_tree);
961  
962  \f
963  /* Initialize the GCC target structure.  */
964 @@ -256,6 +277,12 @@
965  #undef  TARGET_FUNCTION_OK_FOR_SIBCALL
966  #define TARGET_FUNCTION_OK_FOR_SIBCALL arm_function_ok_for_sibcall
967  
968 +#undef  TARGET_FUNCTION_VALUE
969 +#define TARGET_FUNCTION_VALUE arm_function_value
970 +
971 +#undef  TARGET_LIBCALL_VALUE
972 +#define TARGET_LIBCALL_VALUE arm_libcall_value
973 +
974  #undef  TARGET_ASM_OUTPUT_MI_THUNK
975  #define TARGET_ASM_OUTPUT_MI_THUNK arm_output_mi_thunk
976  #undef  TARGET_ASM_CAN_OUTPUT_MI_THUNK
977 @@ -299,6 +326,9 @@
978  #undef TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS
979  #define TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS arm_allocate_stack_slots_for_args
980  
981 +#undef TARGET_WARN_FUNC_RESULT
982 +#define TARGET_WARN_FUNC_RESULT arm_warn_func_result
983 +
984  #undef TARGET_DEFAULT_SHORT_ENUMS
985  #define TARGET_DEFAULT_SHORT_ENUMS arm_default_short_enums
986  
987 @@ -353,6 +383,9 @@
988  #undef TARGET_ASM_TTYPE
989  #define TARGET_ASM_TTYPE arm_output_ttype
990  
991 +#undef TARGET_CXX_TTYPE_REF_ENCODE
992 +#define TARGET_CXX_TTYPE_REF_ENCODE hook_cxx_ttype_ref_in_bit0
993 +
994  #undef TARGET_ARM_EABI_UNWINDER
995  #define TARGET_ARM_EABI_UNWINDER true
996  #endif /* TARGET_UNWIND_INFO */
997 @@ -360,6 +393,9 @@
998  #undef TARGET_DWARF_HANDLE_FRAME_UNSPEC
999  #define TARGET_DWARF_HANDLE_FRAME_UNSPEC arm_dwarf_handle_frame_unspec
1000  
1001 +#undef TARGET_DWARF_REGISTER_SPAN
1002 +#define TARGET_DWARF_REGISTER_SPAN arm_dwarf_register_span
1003 +
1004  #undef  TARGET_CANNOT_COPY_INSN_P
1005  #define TARGET_CANNOT_COPY_INSN_P arm_cannot_copy_insn_p
1006  
1007 @@ -398,6 +434,30 @@
1008  #define TARGET_ASM_OUTPUT_DWARF_DTPREL arm_output_dwarf_dtprel
1009  #endif
1010  
1011 +#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD
1012 +#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD arm_multipass_dfa_lookahead
1013 +
1014 +#undef TARGET_INVALID_PARAMETER_TYPE
1015 +#define TARGET_INVALID_PARAMETER_TYPE arm_invalid_parameter_type
1016 +
1017 +#undef TARGET_INVALID_RETURN_TYPE
1018 +#define TARGET_INVALID_RETURN_TYPE arm_invalid_return_type
1019 +
1020 +#undef TARGET_PROMOTED_TYPE
1021 +#define TARGET_PROMOTED_TYPE arm_promoted_type
1022 +
1023 +#undef TARGET_CONVERT_TO_TYPE
1024 +#define TARGET_CONVERT_TO_TYPE arm_convert_to_type
1025 +
1026 +#undef TARGET_SCALAR_MODE_SUPPORTED_P
1027 +#define TARGET_SCALAR_MODE_SUPPORTED_P arm_scalar_mode_supported_p
1028 +
1029 +#undef TARGET_VECTOR_MIN_ALIGNMENT
1030 +#define TARGET_VECTOR_MIN_ALIGNMENT arm_vector_min_alignment
1031 +
1032 +#undef TARGET_VECTOR_ALWAYS_MISALIGN
1033 +#define TARGET_VECTOR_ALWAYS_MISALIGN arm_vector_always_misalign
1034 +
1035  struct gcc_target targetm = TARGET_INITIALIZER;
1036  \f
1037  /* Obstack for minipool constant handling.  */
1038 @@ -423,18 +483,18 @@
1039  /* The default processor used if not overridden by commandline.  */
1040  static enum processor_type arm_default_cpu = arm_none;
1041  
1042 -/* Which floating point model to use.  */
1043 -enum arm_fp_model arm_fp_model;
1044 -
1045 -/* Which floating point hardware is available.  */
1046 -enum fputype arm_fpu_arch;
1047 -
1048  /* Which floating point hardware to schedule for.  */
1049 -enum fputype arm_fpu_tune;
1050 +int arm_fpu_attr;
1051 +
1052 +/* Which floating popint hardware to use.  */
1053 +const struct arm_fpu_desc *arm_fpu_desc;
1054  
1055  /* Whether to use floating point hardware.  */
1056  enum float_abi_type arm_float_abi;
1057  
1058 +/* Which __fp16 format to use.  */
1059 +enum arm_fp16_format_type arm_fp16_format;
1060 +
1061  /* Which ABI to use.  */
1062  enum arm_abi_type arm_abi;
1063  
1064 @@ -473,9 +533,19 @@
1065  #define FL_DIV       (1 << 18)       /* Hardware divide.  */
1066  #define FL_VFPV3      (1 << 19)       /* Vector Floating Point V3.  */
1067  #define FL_NEON       (1 << 20)       /* Neon instructions.  */
1068 +#define FL_MARVELL_F  (1 << 21)       /* Marvell Feroceon.  */
1069 +#define FL_ARCH7EM    (1 << 22)              /* Instructions present in ARMv7E-M.  */
1070  
1071  #define FL_IWMMXT     (1 << 29)              /* XScale v2 or "Intel Wireless MMX technology".  */
1072  
1073 +/* Some flags are ignored when comparing -mcpu and -march:
1074 +    FL_MARVELL_F so that -mcpu=marvell-f -march=v5te works.
1075 +    FL_LDSCHED and FL_WBUF only effect tuning,
1076 +    FL_CO_PROC, FL_VFPV2, FL_VFPV3 and FL_NEON because FP
1077 +      coprocessors are handled separately.  */
1078 +#define FL_COMPAT (FL_MARVELL_F | FL_LDSCHED | FL_WBUF | FL_CO_PROC | \
1079 +                  FL_VFPV2 | FL_VFPV3 | FL_NEON)
1080 +
1081  #define FL_FOR_ARCH2   FL_NOTM
1082  #define FL_FOR_ARCH3   (FL_FOR_ARCH2 | FL_MODE32)
1083  #define FL_FOR_ARCH3M  (FL_FOR_ARCH3 | FL_ARCH3M)
1084 @@ -497,6 +567,7 @@
1085  #define FL_FOR_ARCH7A  (FL_FOR_ARCH7 | FL_NOTM)
1086  #define FL_FOR_ARCH7R  (FL_FOR_ARCH7A | FL_DIV)
1087  #define FL_FOR_ARCH7M  (FL_FOR_ARCH7 | FL_DIV)
1088 +#define FL_FOR_ARCH7EM  (FL_FOR_ARCH7M | FL_ARCH7EM)
1089  
1090  /* The bits in this mask specify which
1091     instructions we are allowed to generate.  */
1092 @@ -533,6 +604,9 @@
1093  /* Nonzero if instructions not present in the 'M' profile can be used.  */
1094  int arm_arch_notm = 0;
1095  
1096 +/* Nonzero if instructions present in ARMv7E-M can be used.  */
1097 +int arm_arch7em = 0;
1098 +
1099  /* Nonzero if this chip can benefit from load scheduling.  */
1100  int arm_ld_sched = 0;
1101  
1102 @@ -551,6 +625,9 @@
1103  /* Nonzero if tuning for XScale  */
1104  int arm_tune_xscale = 0;
1105  
1106 +/* Nonzero if tuning for Marvell Feroceon.  */
1107 +int arm_tune_marvell_f = 0;
1108 +
1109  /* Nonzero if we want to tune for stores that access the write-buffer.
1110     This typically means an ARM6 or ARM7 with MMU or MPU.  */
1111  int arm_tune_wbuf = 0;
1112 @@ -561,6 +638,9 @@
1113  /* Nonzero if generating Thumb instructions.  */
1114  int thumb_code = 0;
1115  
1116 +/* Nonzero if generating code for Janus2. */
1117 +int janus2_code = 0;
1118 +
1119  /* Nonzero if we should define __THUMB_INTERWORK__ in the
1120     preprocessor.
1121     XXX This is a bit of a hack, it's intended to help work around
1122 @@ -593,6 +673,8 @@
1123  /* The maximum number of insns to be used when loading a constant.  */
1124  static int arm_constant_limit = 3;
1125  
1126 +static enum arm_pcs arm_pcs_default;
1127 +
1128  /* For an explanation of these variables, see final_prescan_insn below.  */
1129  int arm_ccfsm_state;
1130  /* arm_current_cc is also used for Thumb-2 cond_exec blocks.  */
1131 @@ -673,9 +755,11 @@
1132    {"armv7-a", cortexa8,          "7A",  FL_CO_PROC |             FL_FOR_ARCH7A, NULL},
1133    {"armv7-r", cortexr4,          "7R",  FL_CO_PROC |             FL_FOR_ARCH7R, NULL},
1134    {"armv7-m", cortexm3,          "7M",  FL_CO_PROC |             FL_FOR_ARCH7M, NULL},
1135 +  {"armv7e-m",   cortexm3, "7EM", FL_CO_PROC |           FL_FOR_ARCH7EM, NULL},
1136    {"ep9312",  ep9312,     "4T",  FL_LDSCHED | FL_CIRRUS | FL_FOR_ARCH4, NULL},
1137    {"iwmmxt",  iwmmxt,     "5TE", FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT , NULL},
1138    {"iwmmxt2", iwmmxt2,     "5TE", FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT , NULL},
1139 +  {"marvell-f", marvell_f, "5TE", FL_CO_PROC | FL_FOR_ARCH5TE | FL_MARVELL_F, NULL},
1140    {NULL, arm_none, NULL, 0 , NULL}
1141  };
1142  
1143 @@ -705,49 +789,34 @@
1144  
1145  /* The name of the preprocessor macro to define for this architecture.  */
1146  
1147 -char arm_arch_name[] = "__ARM_ARCH_0UNK__";
1148 -
1149 -struct fpu_desc
1150 -{
1151 -  const char * name;
1152 -  enum fputype fpu;
1153 -};
1154 -
1155 +#define ARM_ARCH_NAME_SIZE 25
1156 +char arm_arch_name[ARM_ARCH_NAME_SIZE] = "__ARM_ARCH_0UNK__";
1157  
1158  /* Available values for -mfpu=.  */
1159  
1160 -static const struct fpu_desc all_fpus[] =
1161 +static const struct arm_fpu_desc all_fpus[] =
1162  {
1163 -  {"fpa",      FPUTYPE_FPA},
1164 -  {"fpe2",     FPUTYPE_FPA_EMU2},
1165 -  {"fpe3",     FPUTYPE_FPA_EMU2},
1166 -  {"maverick", FPUTYPE_MAVERICK},
1167 -  {"vfp",      FPUTYPE_VFP},
1168 -  {"vfp3",     FPUTYPE_VFP3},
1169 -  {"vfpv3",    FPUTYPE_VFP3},
1170 -  {"vfpv3-d16",        FPUTYPE_VFP3D16},
1171 -  {"neon",     FPUTYPE_NEON}
1172 +  {"fpa",              ARM_FP_MODEL_FPA, 0, 0, false, false},
1173 +  {"fpe2",             ARM_FP_MODEL_FPA, 2, 0, false, false},
1174 +  {"fpe3",             ARM_FP_MODEL_FPA, 3, 0, false, false},
1175 +  {"maverick",         ARM_FP_MODEL_MAVERICK, 0, 0, false, false},
1176 +  {"vfp",              ARM_FP_MODEL_VFP, 2, VFP_REG_D16, false, false},
1177 +  {"vfpv3",            ARM_FP_MODEL_VFP, 3, VFP_REG_D32, false, false},
1178 +  {"vfpv3-fp16",       ARM_FP_MODEL_VFP, 3, VFP_REG_D32, false, true },
1179 +  {"vfpv3-d16",                ARM_FP_MODEL_VFP, 3, VFP_REG_D16, false, false},
1180 +  {"vfpv3xd",          ARM_FP_MODEL_VFP, 3, VFP_REG_SINGLE, false, false},
1181 +  {"vfpv3xd-fp16",     ARM_FP_MODEL_VFP, 3, VFP_REG_SINGLE, false, true },
1182 +  {"vfpv3-d16-fp16",   ARM_FP_MODEL_VFP, 3, VFP_REG_D16, false, true },
1183 +  {"neon",             ARM_FP_MODEL_VFP, 3, VFP_REG_D32, true , false},
1184 +  {"neon-fp16",                ARM_FP_MODEL_VFP, 3, VFP_REG_D32, true , true },
1185 +  {"vfpv4",            ARM_FP_MODEL_VFP, 4, VFP_REG_D32, false, true },
1186 +  {"vfpv4-d16",                ARM_FP_MODEL_VFP, 4, VFP_REG_D16, false, true },
1187 +  {"fpv4-sp-d16",      ARM_FP_MODEL_VFP, 4, VFP_REG_SINGLE, false, true },
1188 +  {"neon-vfpv4",       ARM_FP_MODEL_VFP, 4, VFP_REG_D32, true , true },
1189 +  /* Compatibility aliases.  */
1190 +  {"vfp3",             ARM_FP_MODEL_VFP, 3, VFP_REG_D32, false, false},
1191  };
1192  
1193 -
1194 -/* Floating point models used by the different hardware.
1195 -   See fputype in arm.h.  */
1196 -
1197 -static const enum fputype fp_model_for_fpu[] =
1198 -{
1199 -  /* No FP hardware.  */
1200 -  ARM_FP_MODEL_UNKNOWN,                /* FPUTYPE_NONE  */
1201 -  ARM_FP_MODEL_FPA,            /* FPUTYPE_FPA  */
1202 -  ARM_FP_MODEL_FPA,            /* FPUTYPE_FPA_EMU2  */
1203 -  ARM_FP_MODEL_FPA,            /* FPUTYPE_FPA_EMU3  */
1204 -  ARM_FP_MODEL_MAVERICK,       /* FPUTYPE_MAVERICK  */
1205 -  ARM_FP_MODEL_VFP,            /* FPUTYPE_VFP  */
1206 -  ARM_FP_MODEL_VFP,            /* FPUTYPE_VFP3D16  */
1207 -  ARM_FP_MODEL_VFP,            /* FPUTYPE_VFP3  */
1208 -  ARM_FP_MODEL_VFP             /* FPUTYPE_NEON  */
1209 -};
1210 -
1211 -
1212  struct float_abi
1213  {
1214    const char * name;
1215 @@ -765,6 +834,23 @@
1216  };
1217  
1218  
1219 +struct fp16_format
1220 +{
1221 +  const char *name;
1222 +  enum arm_fp16_format_type fp16_format_type;
1223 +};
1224 +
1225 +
1226 +/* Available values for -mfp16-format=.  */
1227 +
1228 +static const struct fp16_format all_fp16_formats[] =
1229 +{
1230 +  {"none",             ARM_FP16_FORMAT_NONE},
1231 +  {"ieee",             ARM_FP16_FORMAT_IEEE},
1232 +  {"alternative",      ARM_FP16_FORMAT_ALTERNATIVE}
1233 +};
1234 +
1235 +
1236  struct abi_name
1237  {
1238    const char *name;
1239 @@ -922,6 +1008,44 @@
1240    set_optab_libfunc (umod_optab, DImode, NULL);
1241    set_optab_libfunc (smod_optab, SImode, NULL);
1242    set_optab_libfunc (umod_optab, SImode, NULL);
1243 +
1244 +  /* Half-precision float operations.  The compiler handles all operations
1245 +     with NULL libfuncs by converting the SFmode.  */
1246 +  switch (arm_fp16_format)
1247 +    {
1248 +    case ARM_FP16_FORMAT_IEEE:
1249 +    case ARM_FP16_FORMAT_ALTERNATIVE:
1250 +
1251 +      /* Conversions.  */
1252 +      set_conv_libfunc (trunc_optab, HFmode, SFmode,
1253 +                       (arm_fp16_format == ARM_FP16_FORMAT_IEEE
1254 +                        ? "__gnu_f2h_ieee"
1255 +                        : "__gnu_f2h_alternative"));
1256 +      set_conv_libfunc (sext_optab, SFmode, HFmode, 
1257 +                       (arm_fp16_format == ARM_FP16_FORMAT_IEEE
1258 +                        ? "__gnu_h2f_ieee"
1259 +                        : "__gnu_h2f_alternative"));
1260 +      
1261 +      /* Arithmetic.  */
1262 +      set_optab_libfunc (add_optab, HFmode, NULL);
1263 +      set_optab_libfunc (sdiv_optab, HFmode, NULL);
1264 +      set_optab_libfunc (smul_optab, HFmode, NULL);
1265 +      set_optab_libfunc (neg_optab, HFmode, NULL);
1266 +      set_optab_libfunc (sub_optab, HFmode, NULL);
1267 +
1268 +      /* Comparisons.  */
1269 +      set_optab_libfunc (eq_optab, HFmode, NULL);
1270 +      set_optab_libfunc (ne_optab, HFmode, NULL);
1271 +      set_optab_libfunc (lt_optab, HFmode, NULL);
1272 +      set_optab_libfunc (le_optab, HFmode, NULL);
1273 +      set_optab_libfunc (ge_optab, HFmode, NULL);
1274 +      set_optab_libfunc (gt_optab, HFmode, NULL);
1275 +      set_optab_libfunc (unord_optab, HFmode, NULL);
1276 +      break;
1277 +
1278 +    default:
1279 +      break;
1280 +    }
1281  }
1282  
1283  /* On AAPCS systems, this is the "struct __va_list".  */
1284 @@ -1135,6 +1259,7 @@
1285  arm_override_options (void)
1286  {
1287    unsigned i;
1288 +  int len;
1289    enum processor_type target_arch_cpu = arm_none;
1290    enum processor_type selected_cpu = arm_none;
1291  
1292 @@ -1152,7 +1277,11 @@
1293                {
1294                 /* Set the architecture define.  */
1295                 if (i != ARM_OPT_SET_TUNE)
1296 -                 sprintf (arm_arch_name, "__ARM_ARCH_%s__", sel->arch);
1297 +                 {
1298 +                   len = snprintf (arm_arch_name, ARM_ARCH_NAME_SIZE,
1299 +                                   "__ARM_ARCH_%s__", sel->arch);
1300 +                   gcc_assert (len < ARM_ARCH_NAME_SIZE);
1301 +                 }
1302  
1303                 /* Determine the processor core for which we should
1304                    tune code-generation.  */
1305 @@ -1178,8 +1307,8 @@
1306                        make sure that they are compatible.  We only generate
1307                        a warning though, and we prefer the CPU over the
1308                        architecture.  */
1309 -                   if (insn_flags != 0 && (insn_flags ^ sel->flags))
1310 -                     warning (0, "switch -mcpu=%s conflicts with -march= switch",
1311 +                   if (insn_flags != 0 && ((insn_flags ^ sel->flags) & ~FL_COMPAT))
1312 +                     warning (0, "switch -mcpu=%s conflicts with -march= switch, assuming CPU feature set",
1313                                ptr->string);
1314  
1315                     insn_flags = sel->flags;
1316 @@ -1279,7 +1408,11 @@
1317  
1318           insn_flags = sel->flags;
1319         }
1320 -      sprintf (arm_arch_name, "__ARM_ARCH_%s__", sel->arch);
1321 +
1322 +      len = snprintf (arm_arch_name, ARM_ARCH_NAME_SIZE,
1323 +                     "__ARM_ARCH_%s__", sel->arch);
1324 +      gcc_assert (len < ARM_ARCH_NAME_SIZE);
1325 +
1326        arm_default_cpu = (enum processor_type) (sel - all_cores);
1327        if (arm_tune == arm_none)
1328         arm_tune = arm_default_cpu;
1329 @@ -1289,8 +1422,35 @@
1330       chosen.  */
1331    gcc_assert (arm_tune != arm_none);
1332  
1333 +  if (arm_tune == cortexa8 && optimize >= 3)
1334 +    {
1335 +      /* These alignments were experimentally determined to improve SPECint
1336 +        performance on SPECCPU 2000.  */
1337 +      if (align_functions <= 0)
1338 +       align_functions = 16;
1339 +      if (align_jumps <= 0)
1340 +       align_jumps = 16;
1341 +    }
1342 +
1343    tune_flags = all_cores[(int)arm_tune].flags;
1344  
1345 +  if (target_fp16_format_name)
1346 +    {
1347 +      for (i = 0; i < ARRAY_SIZE (all_fp16_formats); i++)
1348 +       {
1349 +         if (streq (all_fp16_formats[i].name, target_fp16_format_name))
1350 +           {
1351 +             arm_fp16_format = all_fp16_formats[i].fp16_format_type;
1352 +             break;
1353 +           }
1354 +       }
1355 +      if (i == ARRAY_SIZE (all_fp16_formats))
1356 +       error ("invalid __fp16 format option: -mfp16-format=%s",
1357 +              target_fp16_format_name);
1358 +    }
1359 +  else
1360 +    arm_fp16_format = ARM_FP16_FORMAT_NONE;
1361 +
1362    if (target_abi_name)
1363      {
1364        for (i = 0; i < ARRAY_SIZE (arm_all_abis); i++)
1365 @@ -1383,6 +1543,7 @@
1366    arm_arch6 = (insn_flags & FL_ARCH6) != 0;
1367    arm_arch6k = (insn_flags & FL_ARCH6K) != 0;
1368    arm_arch_notm = (insn_flags & FL_NOTM) != 0;
1369 +  arm_arch7em = (insn_flags & FL_ARCH7EM) != 0;
1370    arm_arch_thumb2 = (insn_flags & FL_THUMB2) != 0;
1371    arm_arch_xscale = (insn_flags & FL_XSCALE) != 0;
1372    arm_arch_cirrus = (insn_flags & FL_CIRRUS) != 0;
1373 @@ -1390,12 +1551,25 @@
1374    arm_ld_sched = (tune_flags & FL_LDSCHED) != 0;
1375    arm_tune_strongarm = (tune_flags & FL_STRONG) != 0;
1376    thumb_code = (TARGET_ARM == 0);
1377 +  janus2_code = (TARGET_FIX_JANUS != 0);
1378 +  if (janus2_code && TARGET_THUMB2)
1379 +    error ("janus2 fix is not applicable when targeting a thumb2 core");
1380    arm_tune_wbuf = (tune_flags & FL_WBUF) != 0;
1381    arm_tune_xscale = (tune_flags & FL_XSCALE) != 0;
1382 +  arm_tune_marvell_f = (tune_flags & FL_MARVELL_F) != 0;
1383    arm_arch_iwmmxt = (insn_flags & FL_IWMMXT) != 0;
1384 -  arm_arch_hwdiv = (insn_flags & FL_DIV) != 0;
1385    arm_tune_cortex_a9 = (arm_tune == cortexa9) != 0;
1386  
1387 + /* Hardware integer division is supported by some variants of the ARM
1388 +    architecture in Thumb-2 mode.  In addition some (but not all) Marvell
1389 +    CPUs support their own hardware integer division instructions.
1390 +    The assembler will pick the correct encoding.  */
1391 +  if (TARGET_MARVELL_DIV && (insn_flags & FL_MARVELL_F) == 0)
1392 +    error ("-mmarvell-div is only supported when targeting a Marvell core");
1393 +
1394 +  arm_arch_hwdiv = (TARGET_ARM && TARGET_MARVELL_DIV)
1395 +                  || (TARGET_THUMB2 && (insn_flags & FL_DIV) != 0);
1396 +
1397    /* If we are not using the default (ARM mode) section anchor offset
1398       ranges, then set the correct ranges now.  */
1399    if (TARGET_THUMB1)
1400 @@ -1434,7 +1608,6 @@
1401    if (TARGET_IWMMXT_ABI && !TARGET_IWMMXT)
1402      error ("iwmmxt abi requires an iwmmxt capable cpu");
1403  
1404 -  arm_fp_model = ARM_FP_MODEL_UNKNOWN;
1405    if (target_fpu_name == NULL && target_fpe_name != NULL)
1406      {
1407        if (streq (target_fpe_name, "2"))
1408 @@ -1445,46 +1618,52 @@
1409         error ("invalid floating point emulation option: -mfpe=%s",
1410                target_fpe_name);
1411      }
1412 -  if (target_fpu_name != NULL)
1413 -    {
1414 -      /* The user specified a FPU.  */
1415 -      for (i = 0; i < ARRAY_SIZE (all_fpus); i++)
1416 -       {
1417 -         if (streq (all_fpus[i].name, target_fpu_name))
1418 -           {
1419 -             arm_fpu_arch = all_fpus[i].fpu;
1420 -             arm_fpu_tune = arm_fpu_arch;
1421 -             arm_fp_model = fp_model_for_fpu[arm_fpu_arch];
1422 -             break;
1423 -           }
1424 -       }
1425 -      if (arm_fp_model == ARM_FP_MODEL_UNKNOWN)
1426 -       error ("invalid floating point option: -mfpu=%s", target_fpu_name);
1427 -    }
1428 -  else
1429 +
1430 +  if (target_fpu_name == NULL)
1431      {
1432  #ifdef FPUTYPE_DEFAULT
1433 -      /* Use the default if it is specified for this platform.  */
1434 -      arm_fpu_arch = FPUTYPE_DEFAULT;
1435 -      arm_fpu_tune = FPUTYPE_DEFAULT;
1436 +      target_fpu_name = FPUTYPE_DEFAULT;
1437  #else
1438 -      /* Pick one based on CPU type.  */
1439 -      /* ??? Some targets assume FPA is the default.
1440 -      if ((insn_flags & FL_VFP) != 0)
1441 -       arm_fpu_arch = FPUTYPE_VFP;
1442 -      else
1443 -      */
1444        if (arm_arch_cirrus)
1445 -       arm_fpu_arch = FPUTYPE_MAVERICK;
1446 +       target_fpu_name = "maverick";
1447        else
1448 -       arm_fpu_arch = FPUTYPE_FPA_EMU2;
1449 +       target_fpu_name = "fpe2";
1450  #endif
1451 -      if (tune_flags & FL_CO_PROC && arm_fpu_arch == FPUTYPE_FPA_EMU2)
1452 -       arm_fpu_tune = FPUTYPE_FPA;
1453 +    }
1454 +
1455 +  arm_fpu_desc = NULL;
1456 +  for (i = 0; i < ARRAY_SIZE (all_fpus); i++)
1457 +    {
1458 +      if (streq (all_fpus[i].name, target_fpu_name))
1459 +       {
1460 +         arm_fpu_desc = &all_fpus[i];
1461 +         break;
1462 +       }
1463 +    }
1464 +  if (!arm_fpu_desc)
1465 +    error ("invalid floating point option: -mfpu=%s", target_fpu_name);
1466 +
1467 +  switch (arm_fpu_desc->model)
1468 +    {
1469 +    case ARM_FP_MODEL_FPA:
1470 +      if (arm_fpu_desc->rev == 2)
1471 +       arm_fpu_attr = FPU_FPE2;
1472 +      else if (arm_fpu_desc->rev == 3)
1473 +       arm_fpu_attr = FPU_FPE3;
1474        else
1475 -       arm_fpu_tune = arm_fpu_arch;
1476 -      arm_fp_model = fp_model_for_fpu[arm_fpu_arch];
1477 -      gcc_assert (arm_fp_model != ARM_FP_MODEL_UNKNOWN);
1478 +       arm_fpu_attr = FPU_FPA;
1479 +      break;
1480 +
1481 +    case ARM_FP_MODEL_MAVERICK:
1482 +      arm_fpu_attr = FPU_MAVERICK;
1483 +      break;
1484 +
1485 +    case ARM_FP_MODEL_VFP:
1486 +      arm_fpu_attr = FPU_VFP;
1487 +      break;
1488 +
1489 +    default:
1490 +      gcc_unreachable();
1491      }
1492  
1493    if (target_float_abi_name != NULL)
1494 @@ -1505,9 +1684,6 @@
1495    else
1496      arm_float_abi = TARGET_DEFAULT_FLOAT_ABI;
1497  
1498 -  if (arm_float_abi == ARM_FLOAT_ABI_HARD && TARGET_VFP)
1499 -    sorry ("-mfloat-abi=hard and VFP");
1500 -
1501    /* FPA and iWMMXt are incompatible because the insn encodings overlap.
1502       VFP and iWMMXt can theoretically coexist, but it's unlikely such silicon
1503       will ever exist.  GCC makes no attempt to support this combination.  */
1504 @@ -1518,15 +1694,40 @@
1505    if (TARGET_THUMB2 && TARGET_IWMMXT)
1506      sorry ("Thumb-2 iWMMXt");
1507  
1508 +  /* __fp16 support currently assumes the core has ldrh.  */
1509 +  if (!arm_arch4 && arm_fp16_format != ARM_FP16_FORMAT_NONE)
1510 +    sorry ("__fp16 and no ldrh");
1511 +
1512    /* If soft-float is specified then don't use FPU.  */
1513    if (TARGET_SOFT_FLOAT)
1514 -    arm_fpu_arch = FPUTYPE_NONE;
1515 +    arm_fpu_attr = FPU_NONE;
1516 +
1517 +  if (TARGET_AAPCS_BASED)
1518 +    {
1519 +      if (arm_abi == ARM_ABI_IWMMXT)
1520 +       arm_pcs_default = ARM_PCS_AAPCS_IWMMXT;
1521 +      else if (arm_float_abi == ARM_FLOAT_ABI_HARD
1522 +              && TARGET_HARD_FLOAT
1523 +              && TARGET_VFP)
1524 +       arm_pcs_default = ARM_PCS_AAPCS_VFP;
1525 +      else
1526 +       arm_pcs_default = ARM_PCS_AAPCS;
1527 +    }
1528 +  else
1529 +    {
1530 +      if (arm_float_abi == ARM_FLOAT_ABI_HARD && TARGET_VFP)
1531 +       sorry ("-mfloat-abi=hard and VFP");
1532 +
1533 +      if (arm_abi == ARM_ABI_APCS)
1534 +       arm_pcs_default = ARM_PCS_APCS;
1535 +      else
1536 +       arm_pcs_default = ARM_PCS_ATPCS;
1537 +    }
1538  
1539    /* For arm2/3 there is no need to do any scheduling if there is only
1540       a floating point emulator, or we are doing software floating-point.  */
1541    if ((TARGET_SOFT_FLOAT
1542 -       || arm_fpu_tune == FPUTYPE_FPA_EMU2
1543 -       || arm_fpu_tune == FPUTYPE_FPA_EMU3)
1544 +       || (TARGET_FPA && arm_fpu_desc->rev))
1545        && (tune_flags & FL_MODE32) == 0)
1546      flag_schedule_insns = flag_schedule_insns_after_reload = 0;
1547  
1548 @@ -1616,8 +1817,7 @@
1549         fix_cm3_ldrd = 0;
1550      }
1551  
1552 -  /* ??? We might want scheduling for thumb2.  */
1553 -  if (TARGET_THUMB && flag_schedule_insns)
1554 +  if (TARGET_THUMB1 && flag_schedule_insns)
1555      {
1556        /* Don't warn since it's on by default in -O2.  */
1557        flag_schedule_insns = 0;
1558 @@ -1653,6 +1853,36 @@
1559  
1560    /* Register global variables with the garbage collector.  */
1561    arm_add_gc_roots ();
1562 +
1563 +  if (low_irq_latency && TARGET_THUMB)
1564 +    {
1565 +      warning (0, 
1566 +              "-low-irq-latency has no effect when compiling for the Thumb");
1567 +      low_irq_latency = 0;
1568 +    }
1569 +
1570 +  /* CSL LOCAL */
1571 +  /* Loop unrolling can be a substantial win.  At -O2, limit to 2x
1572 +     unrolling by default to prevent excessive code growth; at -O3,
1573 +     limit to 4x unrolling by default.  We know we are not optimizing
1574 +     for size if this is set (see arm_optimization_options).  */
1575 +  if (flag_unroll_loops == 2)
1576 +    {
1577 +      if (optimize == 2)
1578 +       {
1579 +         flag_unroll_loops = 1;
1580 +         if (!PARAM_SET_P (PARAM_MAX_UNROLL_TIMES))
1581 +           set_param_value ("max-unroll-times", 2);
1582 +       }
1583 +      else if (optimize > 2)
1584 +       {
1585 +         flag_unroll_loops = 1;
1586 +         if (!PARAM_SET_P (PARAM_MAX_UNROLL_TIMES))
1587 +           set_param_value ("max-unroll-times", 4);
1588 +       }
1589 +      else
1590 +       flag_unroll_loops = 0;
1591 +    }
1592  }
1593  
1594  static void
1595 @@ -1782,6 +2012,14 @@
1596    return !IS_NAKED (arm_current_func_type ());
1597  }
1598  
1599 +static bool
1600 +arm_warn_func_result (void)
1601 +{
1602 +  /* Naked functions are implemented entirely in assembly, including the
1603 +     return sequence, so suppress warnings about this.  */
1604 +  return !IS_NAKED (arm_current_func_type ());
1605 +}
1606 +
1607  \f
1608  /* Return 1 if it is possible to return using a single instruction.
1609     If SIBLING is non-null, this is a test for a return before a sibling
1610 @@ -2873,14 +3111,19 @@
1611  
1612  /* Define how to find the value returned by a function.  */
1613  
1614 -rtx
1615 -arm_function_value(const_tree type, const_tree func ATTRIBUTE_UNUSED)
1616 +static rtx
1617 +arm_function_value(const_tree type, const_tree func,
1618 +                  bool outgoing ATTRIBUTE_UNUSED)
1619  {
1620    enum machine_mode mode;
1621    int unsignedp ATTRIBUTE_UNUSED;
1622    rtx r ATTRIBUTE_UNUSED;
1623  
1624    mode = TYPE_MODE (type);
1625 +
1626 +  if (TARGET_AAPCS_BASED)
1627 +    return aapcs_allocate_return_reg (mode, type, func);
1628 +
1629    /* Promote integer types.  */
1630    if (INTEGRAL_TYPE_P (type))
1631      PROMOTE_FUNCTION_MODE (mode, unsignedp, type);
1632 @@ -2897,7 +3140,36 @@
1633         }
1634      }
1635  
1636 -  return LIBCALL_VALUE(mode);
1637 +  return LIBCALL_VALUE (mode);
1638 +}
1639 +
1640 +rtx
1641 +arm_libcall_value (enum machine_mode mode, rtx libcall)
1642 +{
1643 +  if (TARGET_AAPCS_BASED && arm_pcs_default != ARM_PCS_AAPCS
1644 +      && GET_MODE_CLASS (mode) == MODE_FLOAT)
1645 +    {
1646 +      /* The following libcalls return their result in integer registers,
1647 +        even though they return a floating point value.  */
1648 +      if (rtx_equal_p (libcall,
1649 +                      convert_optab_libfunc (sfloat_optab, mode, SImode))
1650 +         || rtx_equal_p (libcall,
1651 +                         convert_optab_libfunc (ufloat_optab, mode, SImode))
1652 +         || rtx_equal_p (libcall,
1653 +                         convert_optab_libfunc (sfloat_optab, mode, DImode))
1654 +         || rtx_equal_p (libcall,
1655 +                         convert_optab_libfunc (ufloat_optab, mode, DImode))
1656 +         || rtx_equal_p (libcall,
1657 +                         convert_optab_libfunc (trunc_optab, HFmode, SFmode))
1658 +         || rtx_equal_p (libcall,
1659 +                         convert_optab_libfunc (sext_optab, SFmode, HFmode)))
1660 +       return gen_rtx_REG (mode, ARG_REGISTER(1));
1661 +
1662 +      /* XXX There are other libcalls that return in integer registers,
1663 +        but I think they are all handled by hard insns.  */
1664 +    }
1665 +
1666 +  return LIBCALL_VALUE (mode);
1667  }
1668  
1669  /* Determine the amount of memory needed to store the possible return
1670 @@ -2907,10 +3179,12 @@
1671  {
1672    int size = 16;
1673  
1674 -  if (TARGET_ARM)
1675 +  if (TARGET_32BIT)
1676      {
1677        if (TARGET_HARD_FLOAT_ABI)
1678         {
1679 +         if (TARGET_VFP)
1680 +           size += 32;
1681           if (TARGET_FPA)
1682             size += 12;
1683           if (TARGET_MAVERICK)
1684 @@ -2923,27 +3197,56 @@
1685    return size;
1686  }
1687  
1688 -/* Decide whether a type should be returned in memory (true)
1689 -   or in a register (false).  This is called as the target hook
1690 -   TARGET_RETURN_IN_MEMORY.  */
1691 +/* Decide whether TYPE should be returned in memory (true)
1692 +   or in a register (false).  FNTYPE is the type of the function making
1693 +   the call.  */
1694  static bool
1695 -arm_return_in_memory (const_tree type, const_tree fntype ATTRIBUTE_UNUSED)
1696 +arm_return_in_memory (const_tree type, const_tree fntype)
1697  {
1698    HOST_WIDE_INT size;
1699  
1700 -  size = int_size_in_bytes (type);
1701 +  size = int_size_in_bytes (type);  /* Negative if not fixed size.  */
1702 +
1703 +  if (TARGET_AAPCS_BASED)
1704 +    {
1705 +      /* Simple, non-aggregate types (ie not including vectors and
1706 +        complex) are always returned in a register (or registers).
1707 +        We don't care about which register here, so we can short-cut
1708 +        some of the detail.  */
1709 +      if (!AGGREGATE_TYPE_P (type)
1710 +         && TREE_CODE (type) != VECTOR_TYPE
1711 +         && TREE_CODE (type) != COMPLEX_TYPE)
1712 +       return false;
1713 +
1714 +      /* Any return value that is no larger than one word can be
1715 +        returned in r0.  */
1716 +      if (((unsigned HOST_WIDE_INT) size) <= UNITS_PER_WORD)
1717 +       return false;
1718 +
1719 +      /* Check any available co-processors to see if they accept the
1720 +        type as a register candidate (VFP, for example, can return
1721 +        some aggregates in consecutive registers).  These aren't
1722 +        available if the call is variadic.  */
1723 +      if (aapcs_select_return_coproc (type, fntype) >= 0)
1724 +       return false;
1725 +
1726 +      /* Vector values should be returned using ARM registers, not
1727 +        memory (unless they're over 16 bytes, which will break since
1728 +        we only have four call-clobbered registers to play with).  */
1729 +      if (TREE_CODE (type) == VECTOR_TYPE)
1730 +       return (size < 0 || size > (4 * UNITS_PER_WORD));
1731 +
1732 +      /* The rest go in memory.  */
1733 +      return true;
1734 +    }
1735  
1736 -  /* Vector values should be returned using ARM registers, not memory (unless
1737 -     they're over 16 bytes, which will break since we only have four
1738 -     call-clobbered registers to play with).  */
1739    if (TREE_CODE (type) == VECTOR_TYPE)
1740      return (size < 0 || size > (4 * UNITS_PER_WORD));
1741  
1742    if (!AGGREGATE_TYPE_P (type) &&
1743 -      !(TARGET_AAPCS_BASED && TREE_CODE (type) == COMPLEX_TYPE))
1744 -    /* All simple types are returned in registers.
1745 -       For AAPCS, complex types are treated the same as aggregates.  */
1746 -    return 0;
1747 +      (TREE_CODE (type) != VECTOR_TYPE))
1748 +    /* All simple types are returned in registers.  */
1749 +    return false;
1750  
1751    if (arm_abi != ARM_ABI_APCS)
1752      {
1753 @@ -2960,7 +3263,7 @@
1754       the aggregate is either huge or of variable size, and in either case
1755       we will want to return it via memory and not in a register.  */
1756    if (size < 0 || size > UNITS_PER_WORD)
1757 -    return 1;
1758 +    return true;
1759  
1760    if (TREE_CODE (type) == RECORD_TYPE)
1761      {
1762 @@ -2980,18 +3283,18 @@
1763         continue;
1764  
1765        if (field == NULL)
1766 -       return 0; /* An empty structure.  Allowed by an extension to ANSI C.  */
1767 +       return false; /* An empty structure.  Allowed by an extension to ANSI C.  */
1768  
1769        /* Check that the first field is valid for returning in a register.  */
1770  
1771        /* ... Floats are not allowed */
1772        if (FLOAT_TYPE_P (TREE_TYPE (field)))
1773 -       return 1;
1774 +       return true;
1775  
1776        /* ... Aggregates that are not themselves valid for returning in
1777          a register are not allowed.  */
1778        if (arm_return_in_memory (TREE_TYPE (field), NULL_TREE))
1779 -       return 1;
1780 +       return true;
1781  
1782        /* Now check the remaining fields, if any.  Only bitfields are allowed,
1783          since they are not addressable.  */
1784 @@ -3003,10 +3306,10 @@
1785             continue;
1786  
1787           if (!DECL_BIT_FIELD_TYPE (field))
1788 -           return 1;
1789 +           return true;
1790         }
1791  
1792 -      return 0;
1793 +      return false;
1794      }
1795  
1796    if (TREE_CODE (type) == UNION_TYPE)
1797 @@ -3023,18 +3326,18 @@
1798             continue;
1799  
1800           if (FLOAT_TYPE_P (TREE_TYPE (field)))
1801 -           return 1;
1802 +           return true;
1803  
1804           if (arm_return_in_memory (TREE_TYPE (field), NULL_TREE))
1805 -           return 1;
1806 +           return true;
1807         }
1808  
1809 -      return 0;
1810 +      return false;
1811      }
1812  #endif /* not ARM_WINCE */
1813  
1814    /* Return all other types in memory.  */
1815 -  return 1;
1816 +  return true;
1817  }
1818  
1819  /* Indicate whether or not words of a double are in big-endian order.  */
1820 @@ -3059,14 +3362,780 @@
1821    return 1;
1822  }
1823  
1824 +const struct pcs_attribute_arg
1825 +{
1826 +  const char *arg;
1827 +  enum arm_pcs value;
1828 +} pcs_attribute_args[] =
1829 +  {
1830 +    {"aapcs", ARM_PCS_AAPCS},
1831 +    {"aapcs-vfp", ARM_PCS_AAPCS_VFP},
1832 +    {"aapcs-iwmmxt", ARM_PCS_AAPCS_IWMMXT},
1833 +    {"atpcs", ARM_PCS_ATPCS},
1834 +    {"apcs", ARM_PCS_APCS},
1835 +    {NULL, ARM_PCS_UNKNOWN}
1836 +  };
1837 +
1838 +static enum arm_pcs
1839 +arm_pcs_from_attribute (tree attr)
1840 +{
1841 +  const struct pcs_attribute_arg *ptr;
1842 +  const char *arg;
1843 +
1844 +  /* Get the value of the argument.  */
1845 +  if (TREE_VALUE (attr) == NULL_TREE
1846 +      || TREE_CODE (TREE_VALUE (attr)) != STRING_CST)
1847 +    return ARM_PCS_UNKNOWN;
1848 +
1849 +  arg = TREE_STRING_POINTER (TREE_VALUE (attr));
1850 +
1851 +  /* Check it against the list of known arguments.  */
1852 +  for (ptr = pcs_attribute_args; ptr->arg != NULL; ptr++)
1853 +    if (streq (arg, ptr->arg))
1854 +      return ptr->value;
1855 +
1856 +  /* An unrecognized interrupt type.  */
1857 +  return ARM_PCS_UNKNOWN;
1858 +}
1859 +
1860 +/* Get the PCS variant to use for this call.  TYPE is the function's type
1861 +   specification, DECL is the specific declartion.  DECL may be null if
1862 +   the call could be indirect or if this is a library call.  */
1863 +static enum arm_pcs
1864 +arm_get_pcs_model (const_tree type, const_tree decl)
1865 +{
1866 +  bool user_convention = false;
1867 +  enum arm_pcs user_pcs = arm_pcs_default;
1868 +  tree attr;
1869 +
1870 +  gcc_assert (type);
1871 +
1872 +  attr = lookup_attribute ("pcs", TYPE_ATTRIBUTES (type));
1873 +  if (attr)
1874 +    {
1875 +      user_pcs = arm_pcs_from_attribute (TREE_VALUE (attr));
1876 +      user_convention = true;
1877 +    }
1878 +
1879 +  if (TARGET_AAPCS_BASED)
1880 +    {
1881 +      /* Detect varargs functions.  These always use the base rules
1882 +        (no argument is ever a candidate for a co-processor
1883 +        register).  */
1884 +      bool base_rules = (TYPE_ARG_TYPES (type) != 0
1885 +                        && (TREE_VALUE (tree_last (TYPE_ARG_TYPES (type)))
1886 +                            != void_type_node));
1887 +      
1888 +      if (user_convention)
1889 +       {
1890 +         if (user_pcs > ARM_PCS_AAPCS_LOCAL)
1891 +           sorry ("Non-AAPCS derived PCS variant");
1892 +         else if (base_rules && user_pcs != ARM_PCS_AAPCS)
1893 +           error ("Variadic functions must use the base AAPCS variant");
1894 +       }
1895 +
1896 +      if (base_rules)
1897 +       return ARM_PCS_AAPCS;
1898 +      else if (user_convention)
1899 +       return user_pcs;
1900 +      else if (decl && flag_unit_at_a_time)
1901 +       {
1902 +         /* Local functions never leak outside this compilation unit,
1903 +            so we are free to use whatever conventions are
1904 +            appropriate.  */
1905 +         /* FIXME: remove CONST_CAST_TREE when cgraph is constified.  */
1906 +         struct cgraph_local_info *i = cgraph_local_info (CONST_CAST_TREE(decl));
1907 +         if (i && i->local)
1908 +           return ARM_PCS_AAPCS_LOCAL;
1909 +       }
1910 +    }
1911 +  else if (user_convention && user_pcs != arm_pcs_default)
1912 +    sorry ("PCS variant");
1913 +
1914 +  /* For everything else we use the target's default.  */
1915 +  return arm_pcs_default;
1916 +}
1917 +
1918 +
1919 +static void
1920 +aapcs_vfp_cum_init (CUMULATIVE_ARGS *pcum  ATTRIBUTE_UNUSED,
1921 +                   const_tree fntype ATTRIBUTE_UNUSED,
1922 +                   rtx libcall ATTRIBUTE_UNUSED, 
1923 +                   const_tree fndecl ATTRIBUTE_UNUSED)
1924 +{
1925 +  /* Record the unallocated VFP registers.  */
1926 +  pcum->aapcs_vfp_regs_free = (1 << NUM_VFP_ARG_REGS) - 1;
1927 +  pcum->aapcs_vfp_reg_alloc = 0;
1928 +}
1929 +
1930 +/* Walk down the type tree of TYPE counting consecutive base elements.
1931 +   If *MODEP is VOIDmode, then set it to the first valid floating point
1932 +   type.  If a non-floating point type is found, or if a floating point
1933 +   type that doesn't match a non-VOIDmode *MODEP is found, then return -1,
1934 +   otherwise return the count in the sub-tree.  */
1935 +static int
1936 +aapcs_vfp_sub_candidate (const_tree type, enum machine_mode *modep)
1937 +{
1938 +  enum machine_mode mode;
1939 +  HOST_WIDE_INT size;
1940 +
1941 +  switch (TREE_CODE (type))
1942 +    {
1943 +    case REAL_TYPE:
1944 +      mode = TYPE_MODE (type);
1945 +      if (mode != DFmode && mode != SFmode)
1946 +       return -1;
1947 +
1948 +      if (*modep == VOIDmode)
1949 +       *modep = mode;
1950 +
1951 +      if (*modep == mode)
1952 +       return 1;
1953 +
1954 +      break;
1955 +
1956 +    case COMPLEX_TYPE:
1957 +      mode = TYPE_MODE (TREE_TYPE (type));
1958 +      if (mode != DFmode && mode != SFmode)
1959 +       return -1;
1960 +
1961 +      if (*modep == VOIDmode)
1962 +       *modep = mode;
1963 +
1964 +      if (*modep == mode)
1965 +       return 2;
1966 +
1967 +      break;
1968 +
1969 +    case VECTOR_TYPE:
1970 +      /* Use V2SImode and V4SImode as representatives of all 64-bit
1971 +        and 128-bit vector types, whether or not those modes are
1972 +        supported with the present options.  */
1973 +      size = int_size_in_bytes (type);
1974 +      switch (size)
1975 +       {
1976 +       case 8:
1977 +         mode = V2SImode;
1978 +         break;
1979 +       case 16:
1980 +         mode = V4SImode;
1981 +         break;
1982 +       default:
1983 +         return -1;
1984 +       }
1985 +
1986 +      if (*modep == VOIDmode)
1987 +       *modep = mode;
1988 +
1989 +      /* Vector modes are considered to be opaque: two vectors are
1990 +        equivalent for the purposes of being homogeneous aggregates
1991 +        if they are the same size.  */
1992 +      if (*modep == mode)
1993 +       return 1;
1994 +
1995 +      break;
1996 +
1997 +    case ARRAY_TYPE:
1998 +      {
1999 +       int count;
2000 +       tree index = TYPE_DOMAIN (type);
2001 +
2002 +       /* Can't handle incomplete types.  */
2003 +       if (!COMPLETE_TYPE_P(type))
2004 +         return -1;
2005 +
2006 +       count = aapcs_vfp_sub_candidate (TREE_TYPE (type), modep);
2007 +       if (count == -1
2008 +           || !index
2009 +           || !TYPE_MAX_VALUE (index)
2010 +           || !host_integerp (TYPE_MAX_VALUE (index), 1)
2011 +           || !TYPE_MIN_VALUE (index)
2012 +           || !host_integerp (TYPE_MIN_VALUE (index), 1)
2013 +           || count < 0)
2014 +         return -1;
2015 +
2016 +       count *= (1 + tree_low_cst (TYPE_MAX_VALUE (index), 1)
2017 +                     - tree_low_cst (TYPE_MIN_VALUE (index), 1));
2018 +
2019 +       /* There must be no padding.  */
2020 +       if (!host_integerp (TYPE_SIZE (type), 1)
2021 +           || (tree_low_cst (TYPE_SIZE (type), 1)
2022 +               != count * GET_MODE_BITSIZE (*modep)))
2023 +         return -1;
2024 +
2025 +       return count;
2026 +      }
2027 +      
2028 +    case RECORD_TYPE:
2029 +      {
2030 +       int count = 0;
2031 +       int sub_count;
2032 +       tree field;
2033 +
2034 +       /* Can't handle incomplete types.  */
2035 +       if (!COMPLETE_TYPE_P(type))
2036 +         return -1;
2037 +
2038 +       for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
2039 +         {
2040 +           if (TREE_CODE (field) != FIELD_DECL)
2041 +             continue;
2042 +
2043 +           sub_count = aapcs_vfp_sub_candidate (TREE_TYPE (field), modep);
2044 +           if (sub_count < 0)
2045 +             return -1;
2046 +           count += sub_count;
2047 +         }
2048 +
2049 +       /* There must be no padding.  */
2050 +       if (!host_integerp (TYPE_SIZE (type), 1)
2051 +           || (tree_low_cst (TYPE_SIZE (type), 1)
2052 +               != count * GET_MODE_BITSIZE (*modep)))
2053 +         return -1;
2054 +
2055 +       return count;
2056 +      }
2057 +
2058 +    case UNION_TYPE:
2059 +    case QUAL_UNION_TYPE:
2060 +      {
2061 +       /* These aren't very interesting except in a degenerate case.  */
2062 +       int count = 0;
2063 +       int sub_count;
2064 +       tree field;
2065 +
2066 +       /* Can't handle incomplete types.  */
2067 +       if (!COMPLETE_TYPE_P(type))
2068 +         return -1;
2069 +
2070 +       for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
2071 +         {
2072 +           if (TREE_CODE (field) != FIELD_DECL)
2073 +             continue;
2074 +
2075 +           sub_count = aapcs_vfp_sub_candidate (TREE_TYPE (field), modep);
2076 +           if (sub_count < 0)
2077 +             return -1;
2078 +           count = count > sub_count ? count : sub_count;
2079 +         }
2080 +
2081 +       /* There must be no padding.  */
2082 +       if (!host_integerp (TYPE_SIZE (type), 1)
2083 +           || (tree_low_cst (TYPE_SIZE (type), 1)
2084 +               != count * GET_MODE_BITSIZE (*modep)))
2085 +         return -1;
2086 +
2087 +       return count;
2088 +      }
2089 +
2090 +    default:
2091 +      break;
2092 +    }
2093 +
2094 +  return -1;
2095 +}
2096 +
2097 +/* Return true if PCS_VARIANT should use VFP registers.  */
2098 +static bool
2099 +use_vfp_abi (enum arm_pcs pcs_variant, bool is_double)
2100 +{
2101 +  if (pcs_variant == ARM_PCS_AAPCS_VFP)
2102 +    return true;
2103 +
2104 +  if (pcs_variant != ARM_PCS_AAPCS_LOCAL)
2105 +    return false;
2106 +
2107 +  return (TARGET_32BIT && TARGET_VFP && TARGET_HARD_FLOAT &&
2108 +         (TARGET_VFP_DOUBLE || !is_double));
2109 +}
2110 +
2111 +static bool
2112 +aapcs_vfp_is_call_or_return_candidate (enum arm_pcs pcs_variant,
2113 +                                      enum machine_mode mode, const_tree type,
2114 +                                      int *base_mode, int *count)
2115 +{
2116 +  enum machine_mode new_mode = VOIDmode;
2117 +
2118 +  if (GET_MODE_CLASS (mode) == MODE_FLOAT
2119 +      || GET_MODE_CLASS (mode) == MODE_VECTOR_INT
2120 +      || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
2121 +    {
2122 +      *count = 1;
2123 +      new_mode = mode;
2124 +    }
2125 +  else if (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT)
2126 +    {
2127 +      *count = 2;
2128 +      new_mode = (mode == DCmode ? DFmode : SFmode);
2129 +    }
2130 +  else if (type && (mode == BLKmode || TREE_CODE (type) == VECTOR_TYPE))
2131 +    {
2132 +      int ag_count = aapcs_vfp_sub_candidate (type, &new_mode);
2133 +
2134 +      if (ag_count > 0 && ag_count <= 4)
2135 +       *count = ag_count;
2136 +      else
2137 +       return false;
2138 +    }
2139 +  else
2140 +    return false;
2141 +
2142 +
2143 +  if (!use_vfp_abi (pcs_variant, ARM_NUM_REGS (new_mode) > 1))
2144 +    return false;
2145 +
2146 +  *base_mode = new_mode;
2147 +  return true;
2148 +}
2149 +
2150 +static bool
2151 +aapcs_vfp_is_return_candidate (enum arm_pcs pcs_variant,
2152 +                              enum machine_mode mode, const_tree type)
2153 +{
2154 +  int count ATTRIBUTE_UNUSED;
2155 +  int ag_mode ATTRIBUTE_UNUSED;
2156 +
2157 +  if (!use_vfp_abi (pcs_variant, false))
2158 +    return false;
2159 +  return aapcs_vfp_is_call_or_return_candidate (pcs_variant, mode, type,
2160 +                                               &ag_mode, &count);
2161 +}
2162 +
2163 +static bool
2164 +aapcs_vfp_is_call_candidate (CUMULATIVE_ARGS *pcum, enum machine_mode mode, 
2165 +                            const_tree type)
2166 +{
2167 +  if (!use_vfp_abi (pcum->pcs_variant, false))
2168 +    return false;
2169 +
2170 +  return aapcs_vfp_is_call_or_return_candidate (pcum->pcs_variant, mode, type,
2171 +                                               &pcum->aapcs_vfp_rmode,
2172 +                                               &pcum->aapcs_vfp_rcount);
2173 +}
2174 +
2175 +static bool
2176 +aapcs_vfp_allocate (CUMULATIVE_ARGS *pcum, enum machine_mode mode,
2177 +                   const_tree type  ATTRIBUTE_UNUSED)
2178 +{
2179 +  int shift = GET_MODE_SIZE (pcum->aapcs_vfp_rmode) / GET_MODE_SIZE (SFmode);
2180 +  unsigned mask = (1 << (shift * pcum->aapcs_vfp_rcount)) - 1;
2181 +  int regno;
2182 +  
2183 +  for (regno = 0; regno < NUM_VFP_ARG_REGS; regno += shift)
2184 +    if (((pcum->aapcs_vfp_regs_free >> regno) & mask) == mask)
2185 +      {
2186 +       pcum->aapcs_vfp_reg_alloc = mask << regno;
2187 +       if (mode == BLKmode || (mode == TImode && !TARGET_NEON))
2188 +         {
2189 +           int i;
2190 +           int rcount = pcum->aapcs_vfp_rcount;
2191 +           int rshift = shift;
2192 +           enum machine_mode rmode = pcum->aapcs_vfp_rmode;
2193 +           rtx par;
2194 +           if (!TARGET_NEON)
2195 +             {
2196 +               /* Avoid using unsupported vector modes.  */
2197 +               if (rmode == V2SImode)
2198 +                 rmode = DImode;
2199 +               else if (rmode == V4SImode)
2200 +                 {
2201 +                   rmode = DImode;
2202 +                   rcount *= 2;
2203 +                   rshift /= 2;
2204 +                 }
2205 +             }
2206 +           par = gen_rtx_PARALLEL (mode, rtvec_alloc (rcount));
2207 +           for (i = 0; i < rcount; i++)
2208 +             {
2209 +               rtx tmp = gen_rtx_REG (rmode, 
2210 +                                      FIRST_VFP_REGNUM + regno + i * rshift);
2211 +               tmp = gen_rtx_EXPR_LIST
2212 +                 (VOIDmode, tmp, 
2213 +                  GEN_INT (i * GET_MODE_SIZE (rmode)));
2214 +               XVECEXP (par, 0, i) = tmp;
2215 +             }
2216 +
2217 +           pcum->aapcs_reg = par;
2218 +         }
2219 +       else
2220 +         pcum->aapcs_reg = gen_rtx_REG (mode, FIRST_VFP_REGNUM + regno);
2221 +       return true;
2222 +      }
2223 +  return false;
2224 +}
2225 +
2226 +static rtx
2227 +aapcs_vfp_allocate_return_reg (enum arm_pcs pcs_variant ATTRIBUTE_UNUSED,
2228 +                              enum machine_mode mode,
2229 +                              const_tree type ATTRIBUTE_UNUSED)
2230 +{
2231 +  if (!use_vfp_abi (pcs_variant, false))
2232 +    return false;
2233 +
2234 +  if (mode == BLKmode || (mode == TImode && !TARGET_NEON))
2235 +    {
2236 +      int count;
2237 +      int ag_mode;
2238 +      int i;
2239 +      rtx par;
2240 +      int shift;
2241 +      
2242 +      aapcs_vfp_is_call_or_return_candidate (pcs_variant, mode, type,
2243 +                                            &ag_mode, &count);
2244 +
2245 +      if (!TARGET_NEON)
2246 +       {
2247 +         if (ag_mode == V2SImode)
2248 +           ag_mode = DImode;
2249 +         else if (ag_mode == V4SImode)
2250 +           {
2251 +             ag_mode = DImode;
2252 +             count *= 2;
2253 +           }
2254 +       }
2255 +      shift = GET_MODE_SIZE(ag_mode) / GET_MODE_SIZE(SFmode);
2256 +      par = gen_rtx_PARALLEL (mode, rtvec_alloc (count));
2257 +      for (i = 0; i < count; i++)
2258 +       {
2259 +         rtx tmp = gen_rtx_REG (ag_mode, FIRST_VFP_REGNUM + i * shift);
2260 +         tmp = gen_rtx_EXPR_LIST (VOIDmode, tmp, 
2261 +                                  GEN_INT (i * GET_MODE_SIZE (ag_mode)));
2262 +         XVECEXP (par, 0, i) = tmp;
2263 +       }
2264 +
2265 +      return par;
2266 +    }
2267 +
2268 +  return gen_rtx_REG (mode, FIRST_VFP_REGNUM);
2269 +}
2270 +
2271 +static void
2272 +aapcs_vfp_advance (CUMULATIVE_ARGS *pcum  ATTRIBUTE_UNUSED,
2273 +                  enum machine_mode mode  ATTRIBUTE_UNUSED,
2274 +                  const_tree type  ATTRIBUTE_UNUSED)
2275 +{
2276 +  pcum->aapcs_vfp_regs_free &= ~pcum->aapcs_vfp_reg_alloc;
2277 +  pcum->aapcs_vfp_reg_alloc = 0;
2278 +  return;
2279 +}
2280 +
2281 +#define AAPCS_CP(X)                            \
2282 +  {                                            \
2283 +    aapcs_ ## X ## _cum_init,                  \
2284 +    aapcs_ ## X ## _is_call_candidate,         \
2285 +    aapcs_ ## X ## _allocate,                  \
2286 +    aapcs_ ## X ## _is_return_candidate,       \
2287 +    aapcs_ ## X ## _allocate_return_reg,       \
2288 +    aapcs_ ## X ## _advance                    \
2289 +  }
2290 +
2291 +/* Table of co-processors that can be used to pass arguments in
2292 +   registers.  Idealy no arugment should be a candidate for more than
2293 +   one co-processor table entry, but the table is processed in order
2294 +   and stops after the first match.  If that entry then fails to put
2295 +   the argument into a co-processor register, the argument will go on
2296 +   the stack.  */
2297 +static struct 
2298 +{
2299 +  /* Initialize co-processor related state in CUMULATIVE_ARGS structure.  */
2300 +  void (*cum_init) (CUMULATIVE_ARGS *, const_tree, rtx, const_tree);
2301 +
2302 +  /* Return true if an argument of mode MODE (or type TYPE if MODE is
2303 +     BLKmode) is a candidate for this co-processor's registers; this
2304 +     function should ignore any position-dependent state in
2305 +     CUMULATIVE_ARGS and only use call-type dependent information.  */
2306 +  bool (*is_call_candidate) (CUMULATIVE_ARGS *, enum machine_mode, const_tree);
2307 +
2308 +  /* Return true if the argument does get a co-processor register; it
2309 +     should set aapcs_reg to an RTX of the register allocated as is
2310 +     required for a return from FUNCTION_ARG.  */
2311 +  bool (*allocate) (CUMULATIVE_ARGS *, enum machine_mode, const_tree);
2312 +
2313 +  /* Return true if a result of mode MODE (or type TYPE if MODE is
2314 +     BLKmode) is can be returned in this co-processor's registers.  */
2315 +  bool (*is_return_candidate) (enum arm_pcs, enum machine_mode, const_tree);
2316 +
2317 +  /* Allocate and return an RTX element to hold the return type of a
2318 +     call, this routine must not fail and will only be called if
2319 +     is_return_candidate returned true with the same parameters.  */
2320 +  rtx (*allocate_return_reg) (enum arm_pcs, enum machine_mode, const_tree);
2321 +
2322 +  /* Finish processing this argument and prepare to start processing
2323 +     the next one.  */
2324 +  void (*advance) (CUMULATIVE_ARGS *, enum machine_mode, const_tree);
2325 +} aapcs_cp_arg_layout[ARM_NUM_COPROC_SLOTS] =
2326 +  {
2327 +    AAPCS_CP(vfp)
2328 +  };
2329 +
2330 +#undef AAPCS_CP
2331 +
2332 +static int
2333 +aapcs_select_call_coproc (CUMULATIVE_ARGS *pcum, enum machine_mode mode, 
2334 +                         tree type)
2335 +{
2336 +  int i;
2337 +
2338 +  for (i = 0; i < ARM_NUM_COPROC_SLOTS; i++)
2339 +    if (aapcs_cp_arg_layout[i].is_call_candidate (pcum, mode, type))
2340 +      return i;
2341 +
2342 +  return -1;
2343 +}
2344 +
2345 +static int
2346 +aapcs_select_return_coproc (const_tree type, const_tree fntype)
2347 +{
2348 +  /* We aren't passed a decl, so we can't check that a call is local.
2349 +     However, it isn't clear that that would be a win anyway, since it
2350 +     might limit some tail-calling opportunities.  */
2351 +  enum arm_pcs pcs_variant;
2352 +
2353 +  if (fntype)
2354 +    {
2355 +      const_tree fndecl = NULL_TREE;
2356 +
2357 +      if (TREE_CODE (fntype) == FUNCTION_DECL)
2358 +       {
2359 +         fndecl = fntype;
2360 +         fntype = TREE_TYPE (fntype);
2361 +       }
2362 +
2363 +      pcs_variant = arm_get_pcs_model (fntype, fndecl);
2364 +    }
2365 +  else
2366 +    pcs_variant = arm_pcs_default;
2367 +
2368 +  if (pcs_variant != ARM_PCS_AAPCS)
2369 +    {
2370 +      int i;
2371 +
2372 +      for (i = 0; i < ARM_NUM_COPROC_SLOTS; i++)
2373 +       if (aapcs_cp_arg_layout[i].is_return_candidate (pcs_variant, 
2374 +                                                       TYPE_MODE (type),
2375 +                                                       type))
2376 +         return i;
2377 +    }
2378 +  return -1;
2379 +}
2380 +
2381 +static rtx
2382 +aapcs_allocate_return_reg (enum machine_mode mode, const_tree type,
2383 +                          const_tree fntype)
2384 +{
2385 +  /* We aren't passed a decl, so we can't check that a call is local.
2386 +     However, it isn't clear that that would be a win anyway, since it
2387 +     might limit some tail-calling opportunities.  */
2388 +  enum arm_pcs pcs_variant;
2389 +
2390 +  if (fntype)
2391 +    {
2392 +      const_tree fndecl = NULL_TREE;
2393 +
2394 +      if (TREE_CODE (fntype) == FUNCTION_DECL)
2395 +       {
2396 +         fndecl = fntype;
2397 +         fntype = TREE_TYPE (fntype);
2398 +       }
2399 +
2400 +      pcs_variant = arm_get_pcs_model (fntype, fndecl);
2401 +    }
2402 +  else
2403 +    pcs_variant = arm_pcs_default;
2404 +
2405 +  /* Promote integer types.  */
2406 +  if (type && INTEGRAL_TYPE_P (type))
2407 +    PROMOTE_FUNCTION_MODE (mode, unsignedp, type);
2408 +
2409 +  if (pcs_variant != ARM_PCS_AAPCS)
2410 +    {
2411 +      int i;
2412 +
2413 +      for (i = 0; i < ARM_NUM_COPROC_SLOTS; i++)
2414 +       if (aapcs_cp_arg_layout[i].is_return_candidate (pcs_variant, mode,
2415 +                                                       type))
2416 +         return aapcs_cp_arg_layout[i].allocate_return_reg (pcs_variant,
2417 +                                                            mode, type);
2418 +    }
2419 +
2420 +  /* Promotes small structs returned in a register to full-word size
2421 +     for big-endian AAPCS.  */
2422 +  if (type && arm_return_in_msb (type))
2423 +    {
2424 +      HOST_WIDE_INT size = int_size_in_bytes (type);
2425 +      if (size % UNITS_PER_WORD != 0)
2426 +       {
2427 +         size += UNITS_PER_WORD - size % UNITS_PER_WORD;
2428 +         mode = mode_for_size (size * BITS_PER_UNIT, MODE_INT, 0);
2429 +       }
2430 +    }
2431 +
2432 +  return gen_rtx_REG (mode, R0_REGNUM);
2433 +}
2434 +
2435 +rtx
2436 +aapcs_libcall_value (enum machine_mode mode)
2437 +{
2438 +  return aapcs_allocate_return_reg (mode, NULL_TREE, NULL_TREE);
2439 +}
2440 +
2441 +/* Lay out a function argument using the AAPCS rules.  The rule
2442 +   numbers referred to here are those in the AAPCS.  */
2443 +static void
2444 +aapcs_layout_arg (CUMULATIVE_ARGS *pcum, enum machine_mode mode,
2445 +                 tree type, int named)
2446 +{
2447 +  int nregs, nregs2;
2448 +  int ncrn;
2449 +
2450 +  /* We only need to do this once per argument.  */
2451 +  if (pcum->aapcs_arg_processed)
2452 +    return;
2453 +
2454 +  pcum->aapcs_arg_processed = true;
2455 +
2456 +  /* Special case: if named is false then we are handling an incoming
2457 +     anonymous argument which is on the stack.  */
2458 +  if (!named)
2459 +    return;
2460 +  
2461 +  /* Is this a potential co-processor register candidate?  */
2462 +  if (pcum->pcs_variant != ARM_PCS_AAPCS)
2463 +    {
2464 +      int slot = aapcs_select_call_coproc (pcum, mode, type);
2465 +      pcum->aapcs_cprc_slot = slot;
2466 +
2467 +      /* We don't have to apply any of the rules from part B of the
2468 +        preparation phase, these are handled elsewhere in the
2469 +        compiler.  */
2470 +
2471 +      if (slot >= 0)
2472 +       {
2473 +         /* A Co-processor register candidate goes either in its own
2474 +            class of registers or on the stack.  */
2475 +         if (!pcum->aapcs_cprc_failed[slot])
2476 +           {
2477 +             /* C1.cp - Try to allocate the argument to co-processor
2478 +                registers.  */
2479 +             if (aapcs_cp_arg_layout[slot].allocate (pcum, mode, type))
2480 +               return;
2481 +
2482 +             /* C2.cp - Put the argument on the stack and note that we
2483 +                can't assign any more candidates in this slot.  We also
2484 +                need to note that we have allocated stack space, so that
2485 +                we won't later try to split a non-cprc candidate between
2486 +                core registers and the stack.  */
2487 +             pcum->aapcs_cprc_failed[slot] = true;
2488 +             pcum->can_split = false;
2489 +           }
2490 +
2491 +         /* We didn't get a register, so this argument goes on the
2492 +            stack.  */
2493 +         gcc_assert (pcum->can_split == false);
2494 +         return;
2495 +       }
2496 +    }
2497 +
2498 +  /* C3 - For double-word aligned arguments, round the NCRN up to the
2499 +     next even number.  */
2500 +  ncrn = pcum->aapcs_ncrn;
2501 +  if ((ncrn & 1) && arm_needs_doubleword_align (mode, type))
2502 +    ncrn++;
2503 +
2504 +  nregs = ARM_NUM_REGS2(mode, type);
2505 +
2506 +  /* Sigh, this test should really assert that nregs > 0, but a GCC
2507 +     extension allows empty structs and then gives them empty size; it
2508 +     then allows such a structure to be passed by value.  For some of
2509 +     the code below we have to pretend that such an argument has
2510 +     non-zero size so that we 'locate' it correctly either in
2511 +     registers or on the stack.  */
2512 +  gcc_assert (nregs >= 0);
2513 +
2514 +  nregs2 = nregs ? nregs : 1;
2515 +
2516 +  /* C4 - Argument fits entirely in core registers.  */
2517 +  if (ncrn + nregs2 <= NUM_ARG_REGS)
2518 +    {
2519 +      pcum->aapcs_reg = gen_rtx_REG (mode, ncrn);
2520 +      pcum->aapcs_next_ncrn = ncrn + nregs;
2521 +      return;
2522 +    }
2523 +
2524 +  /* C5 - Some core registers left and there are no arguments already
2525 +     on the stack: split this argument between the remaining core
2526 +     registers and the stack.  */
2527 +  if (ncrn < NUM_ARG_REGS && pcum->can_split)
2528 +    {
2529 +      pcum->aapcs_reg = gen_rtx_REG (mode, ncrn);
2530 +      pcum->aapcs_next_ncrn = NUM_ARG_REGS;
2531 +      pcum->aapcs_partial = (NUM_ARG_REGS - ncrn) * UNITS_PER_WORD;
2532 +      return;
2533 +    }
2534 +
2535 +  /* C6 - NCRN is set to 4.  */
2536 +  pcum->aapcs_next_ncrn = NUM_ARG_REGS;
2537 +
2538 +  /* C7,C8 - arugment goes on the stack.  We have nothing to do here.  */
2539 +  return;
2540 +}
2541 +
2542  /* Initialize a variable CUM of type CUMULATIVE_ARGS
2543     for a call to a function whose data type is FNTYPE.
2544     For a library call, FNTYPE is NULL.  */
2545  void
2546  arm_init_cumulative_args (CUMULATIVE_ARGS *pcum, tree fntype,
2547 -                         rtx libname  ATTRIBUTE_UNUSED,
2548 +                         rtx libname,
2549                           tree fndecl ATTRIBUTE_UNUSED)
2550  {
2551 +  /* Long call handling.  */
2552 +  if (fntype)
2553 +    pcum->pcs_variant = arm_get_pcs_model (fntype, fndecl);
2554 +  else
2555 +    pcum->pcs_variant = arm_pcs_default;
2556 +
2557 +  if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL)
2558 +    {
2559 +      /* XXX We should also detect some library calls here and handle
2560 +        them using the base rules too; for example the floating point
2561 +        support functions always work this way.  */
2562 +
2563 +       if (rtx_equal_p (libname,
2564 +                      convert_optab_libfunc (sfix_optab, DImode, DFmode))
2565 +         || rtx_equal_p (libname,
2566 +                         convert_optab_libfunc (ufix_optab, DImode, DFmode))
2567 +         || rtx_equal_p (libname,
2568 +                         convert_optab_libfunc (sfix_optab, DImode, SFmode))
2569 +         || rtx_equal_p (libname,
2570 +                         convert_optab_libfunc (ufix_optab, DImode, SFmode))
2571 +         || rtx_equal_p (libname,
2572 +                         convert_optab_libfunc (trunc_optab, HFmode, SFmode))
2573 +         || rtx_equal_p (libname,
2574 +                         convert_optab_libfunc (sext_optab, SFmode, HFmode)))
2575 +       pcum->pcs_variant = ARM_PCS_AAPCS;
2576
2577 +      pcum->aapcs_ncrn = pcum->aapcs_next_ncrn = 0;
2578 +      pcum->aapcs_reg = NULL_RTX;
2579 +      pcum->aapcs_partial = 0;
2580 +      pcum->aapcs_arg_processed = false;
2581 +      pcum->aapcs_cprc_slot = -1;
2582 +      pcum->can_split = true;
2583 +
2584 +      if (pcum->pcs_variant != ARM_PCS_AAPCS)
2585 +       {
2586 +         int i;
2587 +
2588 +         for (i = 0; i < ARM_NUM_COPROC_SLOTS; i++)
2589 +           {
2590 +             pcum->aapcs_cprc_failed[i] = false;
2591 +             aapcs_cp_arg_layout[i].cum_init (pcum, fntype, libname, fndecl);
2592 +           }
2593 +       }
2594 +      return;
2595 +    }
2596 +
2597 +  /* Legacy ABIs */
2598 +
2599    /* On the ARM, the offset starts at 0.  */
2600    pcum->nregs = 0;
2601    pcum->iwmmxt_nregs = 0;
2602 @@ -3120,6 +4189,17 @@
2603  {
2604    int nregs;
2605  
2606 +  /* Handle the special case quickly.  Pick an arbitrary value for op2 of
2607 +     a call insn (op3 of a call_value insn).  */
2608 +  if (mode == VOIDmode)
2609 +    return const0_rtx;
2610 +
2611 +  if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL)
2612 +    {
2613 +      aapcs_layout_arg (pcum, mode, type, named);
2614 +      return pcum->aapcs_reg;
2615 +    }
2616 +
2617    /* Varargs vectors are treated the same as long long.
2618       named_count avoids having to change the way arm handles 'named' */
2619    if (TARGET_IWMMXT_ABI
2620 @@ -3161,10 +4241,16 @@
2621  
2622  static int
2623  arm_arg_partial_bytes (CUMULATIVE_ARGS *pcum, enum machine_mode mode,
2624 -                      tree type, bool named ATTRIBUTE_UNUSED)
2625 +                      tree type, bool named)
2626  {
2627    int nregs = pcum->nregs;
2628  
2629 +  if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL)
2630 +    {
2631 +      aapcs_layout_arg (pcum, mode, type, named);
2632 +      return pcum->aapcs_partial;
2633 +    }
2634 +
2635    if (TARGET_IWMMXT_ABI && arm_vector_mode_supported_p (mode))
2636      return 0;
2637  
2638 @@ -3173,7 +4259,40 @@
2639        && pcum->can_split)
2640      return (NUM_ARG_REGS - nregs) * UNITS_PER_WORD;
2641  
2642 -  return 0;
2643 +  return 0;
2644 +}
2645 +
2646 +void
2647 +arm_function_arg_advance (CUMULATIVE_ARGS *pcum, enum machine_mode mode,
2648 +                         tree type, bool named)
2649 +{
2650 +  if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL)
2651 +    {
2652 +      aapcs_layout_arg (pcum, mode, type, named);
2653 +
2654 +      if (pcum->aapcs_cprc_slot >= 0)
2655 +       {
2656 +         aapcs_cp_arg_layout[pcum->aapcs_cprc_slot].advance (pcum, mode,
2657 +                                                             type);
2658 +         pcum->aapcs_cprc_slot = -1;
2659 +       }
2660 +
2661 +      /* Generic stuff.  */
2662 +      pcum->aapcs_arg_processed = false;
2663 +      pcum->aapcs_ncrn = pcum->aapcs_next_ncrn;
2664 +      pcum->aapcs_reg = NULL_RTX;
2665 +      pcum->aapcs_partial = 0;
2666 +    }
2667 +  else
2668 +    {
2669 +      pcum->nargs += 1;
2670 +      if (arm_vector_mode_supported_p (mode)
2671 +         && pcum->named_count > pcum->nargs
2672 +         && TARGET_IWMMXT_ABI)
2673 +       pcum->iwmmxt_nregs += 1;
2674 +      else
2675 +       pcum->nregs += ARM_NUM_REGS2 (mode, type);
2676 +    }
2677  }
2678  
2679  /* Variable sized types are passed by reference.  This is a GCC
2680 @@ -3226,6 +4345,8 @@
2681    /* Whereas these functions are always known to reside within the 26 bit
2682       addressing range.  */
2683    { "short_call",   0, 0, false, true,  true,  NULL },
2684 +  /* Specify the procedure call conventions for a function.  */
2685 +  { "pcs",          1, 1, false, true,  true,  arm_handle_pcs_attribute },
2686    /* Interrupt Service Routines have special prologue and epilogue requirements.  */
2687    { "isr",          0, 1, false, false, false, arm_handle_isr_attribute },
2688    { "interrupt",    0, 1, false, false, false, arm_handle_isr_attribute },
2689 @@ -3328,6 +4449,21 @@
2690    return NULL_TREE;
2691  }
2692  
2693 +/* Handle a "pcs" attribute; arguments as in struct
2694 +   attribute_spec.handler.  */
2695 +static tree
2696 +arm_handle_pcs_attribute (tree *node ATTRIBUTE_UNUSED, tree name, tree args,
2697 +                         int flags ATTRIBUTE_UNUSED, bool *no_add_attrs)
2698 +{
2699 +  if (arm_pcs_from_attribute (args) == ARM_PCS_UNKNOWN)
2700 +    {
2701 +      warning (OPT_Wattributes, "%qs attribute ignored",
2702 +              IDENTIFIER_POINTER (name));
2703 +      *no_add_attrs = true;
2704 +    }
2705 +  return NULL_TREE;
2706 +}
2707 +
2708  #if TARGET_DLLIMPORT_DECL_ATTRIBUTES
2709  /* Handle the "notshared" attribute.  This attribute is another way of
2710     requesting hidden visibility.  ARM's compiler supports
2711 @@ -3489,7 +4625,7 @@
2712  
2713  /* Return nonzero if it is ok to make a tail-call to DECL.  */
2714  static bool
2715 -arm_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
2716 +arm_function_ok_for_sibcall (tree decl, tree exp)
2717  {
2718    unsigned long func_type;
2719  
2720 @@ -3522,6 +4658,21 @@
2721    if (IS_INTERRUPT (func_type))
2722      return false;
2723  
2724 +  if (!VOID_TYPE_P (TREE_TYPE (DECL_RESULT (cfun->decl))))
2725 +    {
2726 +      /* Check that the return value locations are the same.  For
2727 +        example that we aren't returning a value from the sibling in
2728 +        a VFP register but then need to transfer it to a core
2729 +        register.  */
2730 +      rtx a, b;
2731 +
2732 +      a = arm_function_value (TREE_TYPE (exp), decl, false);
2733 +      b = arm_function_value (TREE_TYPE (DECL_RESULT (cfun->decl)),
2734 +                             cfun->decl, false);
2735 +      if (!rtx_equal_p (a, b))
2736 +       return false;
2737 +    }
2738 +
2739    /* Never tailcall if function may be called with a misaligned SP.  */
2740    if (IS_STACKALIGN (func_type))
2741      return false;
2742 @@ -4120,6 +5271,7 @@
2743    if (GET_MODE_SIZE (mode) <= 4
2744        && ! (arm_arch4
2745             && (mode == HImode
2746 +               || mode == HFmode
2747                 || (mode == QImode && outer == SIGN_EXTEND))))
2748      {
2749        if (code == MULT)
2750 @@ -4148,13 +5300,15 @@
2751       load.  */
2752    if (arm_arch4)
2753      {
2754 -      if (mode == HImode || (outer == SIGN_EXTEND && mode == QImode))
2755 +      if (mode == HImode
2756 +         || mode == HFmode
2757 +         || (outer == SIGN_EXTEND && mode == QImode))
2758         range = 256;
2759        else
2760         range = 4096;
2761      }
2762    else
2763 -    range = (mode == HImode) ? 4095 : 4096;
2764 +    range = (mode == HImode || mode == HFmode) ? 4095 : 4096;
2765  
2766    return (code == CONST_INT
2767           && INTVAL (index) < range
2768 @@ -4325,7 +5479,8 @@
2769      return 1;
2770  
2771    /* This is PC relative data after arm_reorg runs.  */
2772 -  else if (GET_MODE_SIZE (mode) >= 4 && reload_completed
2773 +  else if ((GET_MODE_SIZE (mode) >= 4 || mode == HFmode)
2774 +          && reload_completed
2775            && (GET_CODE (x) == LABEL_REF
2776                || (GET_CODE (x) == CONST
2777                    && GET_CODE (XEXP (x, 0)) == PLUS
2778 @@ -5024,7 +6179,7 @@
2779      case UMOD:
2780        if (TARGET_HARD_FLOAT && mode == SFmode)
2781         *total = COSTS_N_INSNS (2);
2782 -      else if (TARGET_HARD_FLOAT && mode == DFmode)
2783 +      else if (TARGET_HARD_FLOAT && mode == DFmode && !TARGET_VFP_SINGLE)
2784         *total = COSTS_N_INSNS (4);
2785        else
2786         *total = COSTS_N_INSNS (20);
2787 @@ -5063,23 +6218,6 @@
2788        return true;
2789  
2790      case MINUS:
2791 -      if (TARGET_THUMB2)
2792 -       {
2793 -         if (GET_MODE_CLASS (mode) == MODE_FLOAT)
2794 -           {
2795 -             if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode))
2796 -               *total = COSTS_N_INSNS (1);
2797 -             else
2798 -               *total = COSTS_N_INSNS (20);
2799 -           }
2800 -         else
2801 -           *total = COSTS_N_INSNS (ARM_NUM_REGS (mode));
2802 -         /* Thumb2 does not have RSB, so all arguments must be
2803 -            registers (subtracting a constant is canonicalized as
2804 -            addition of the negated constant).  */
2805 -         return false;
2806 -       }
2807 -
2808        if (mode == DImode)
2809         {
2810           *total = COSTS_N_INSNS (ARM_NUM_REGS (mode));
2811 @@ -5102,7 +6240,9 @@
2812  
2813        if (GET_MODE_CLASS (mode) == MODE_FLOAT)
2814         {
2815 -         if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode))
2816 +         if (TARGET_HARD_FLOAT
2817 +             && (mode == SFmode
2818 +                 || (mode == DFmode && !TARGET_VFP_SINGLE)))
2819             {
2820               *total = COSTS_N_INSNS (1);
2821               if (GET_CODE (XEXP (x, 0)) == CONST_DOUBLE
2822 @@ -5143,6 +6283,17 @@
2823           return true;
2824         }
2825  
2826 +      /* A shift as a part of RSB costs no more than RSB itself.  */
2827 +      if (GET_CODE (XEXP (x, 0)) == MULT
2828 +         && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT
2829 +         && ((INTVAL (XEXP (XEXP (x, 0), 1))
2830 +              & (INTVAL (XEXP (XEXP (x, 0), 1)) - 1)) == 0))
2831 +       {
2832 +         *total += rtx_cost (XEXP (XEXP (x, 0), 0), code, speed);
2833 +         *total += rtx_cost (XEXP (x, 1), code, speed);
2834 +         return true;
2835 +       }
2836 +
2837        if (subcode == MULT
2838           && GET_CODE (XEXP (XEXP (x, 1), 1)) == CONST_INT
2839           && ((INTVAL (XEXP (XEXP (x, 1), 1)) &
2840 @@ -5164,6 +6315,19 @@
2841           return true;
2842         }
2843  
2844 +      /* MLS is just as expensive as its underlying multiplication.
2845 +        Exclude a shift by a constant, which is expressed as a
2846 +        multiplication.  */
2847 +      if (TARGET_32BIT && arm_arch_thumb2
2848 +         && GET_CODE (XEXP (x, 1)) == MULT
2849 +         && ! (GET_CODE (XEXP (XEXP (x, 1), 1)) == CONST_INT
2850 +               && ((INTVAL (XEXP (XEXP (x, 1), 1)) &
2851 +                    (INTVAL (XEXP (XEXP (x, 1), 1)) - 1)) == 0)))
2852 +       {
2853 +         /* The cost comes from the cost of the multiply.  */
2854 +         return false;
2855 +       }
2856 +
2857        /* Fall through */
2858  
2859      case PLUS:
2860 @@ -5192,7 +6356,9 @@
2861  
2862        if (GET_MODE_CLASS (mode) == MODE_FLOAT)
2863         {
2864 -         if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode))
2865 +         if (TARGET_HARD_FLOAT
2866 +             && (mode == SFmode
2867 +                 || (mode == DFmode && !TARGET_VFP_SINGLE)))
2868             {
2869               *total = COSTS_N_INSNS (1);
2870               if (GET_CODE (XEXP (x, 1)) == CONST_DOUBLE
2871 @@ -5307,7 +6473,9 @@
2872      case NEG:
2873        if (GET_MODE_CLASS (mode) == MODE_FLOAT)
2874         {
2875 -         if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode))
2876 +         if (TARGET_HARD_FLOAT
2877 +             && (mode == SFmode
2878 +                 || (mode == DFmode && !TARGET_VFP_SINGLE)))
2879             {
2880               *total = COSTS_N_INSNS (1);
2881               return false;
2882 @@ -5460,7 +6628,9 @@
2883      case ABS:
2884        if (GET_MODE_CLASS (mode == MODE_FLOAT))
2885         {
2886 -         if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode))
2887 +         if (TARGET_HARD_FLOAT
2888 +             && (mode == SFmode
2889 +                 || (mode == DFmode && !TARGET_VFP_SINGLE)))
2890             {
2891               *total = COSTS_N_INSNS (1);
2892               return false;
2893 @@ -5563,7 +6733,8 @@
2894        return true;
2895  
2896      case CONST_DOUBLE:
2897 -      if (TARGET_HARD_FLOAT && vfp3_const_double_rtx (x))
2898 +      if (TARGET_HARD_FLOAT && vfp3_const_double_rtx (x)
2899 +         && (mode == SFmode || !TARGET_VFP_SINGLE))
2900         *total = COSTS_N_INSNS (1);
2901        else
2902         *total = COSTS_N_INSNS (4);
2903 @@ -5638,7 +6809,8 @@
2904        return false;
2905  
2906      case MINUS:
2907 -      if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT)
2908 +      if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT
2909 +         && (mode == SFmode || !TARGET_VFP_SINGLE))
2910         {
2911           *total = COSTS_N_INSNS (1);
2912           return false;
2913 @@ -5668,7 +6840,8 @@
2914        return false;
2915  
2916      case PLUS:
2917 -      if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT)
2918 +      if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT
2919 +         && (mode == SFmode || !TARGET_VFP_SINGLE))
2920         {
2921           *total = COSTS_N_INSNS (1);
2922           return false;
2923 @@ -5698,7 +6871,8 @@
2924        return false;
2925  
2926      case NEG:
2927 -      if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT)
2928 +      if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT
2929 +         && (mode == SFmode || !TARGET_VFP_SINGLE))
2930         {
2931           *total = COSTS_N_INSNS (1);
2932           return false;
2933 @@ -5722,7 +6896,8 @@
2934        return false;
2935  
2936      case ABS:
2937 -      if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT)
2938 +      if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT
2939 +         && (mode == SFmode || !TARGET_VFP_SINGLE))
2940         *total = COSTS_N_INSNS (1);
2941        else
2942         *total = COSTS_N_INSNS (1 + ARM_NUM_REGS (mode));
2943 @@ -5939,7 +7114,9 @@
2944  
2945        if (GET_MODE_CLASS (mode) == MODE_FLOAT)
2946         {
2947 -         if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode))
2948 +         if (TARGET_HARD_FLOAT
2949 +             && (mode == SFmode
2950 +                 || (mode == DFmode && !TARGET_VFP_SINGLE)))
2951             {
2952               *total = COSTS_N_INSNS (1);
2953               return false;
2954 @@ -6096,7 +7273,9 @@
2955  
2956        if (GET_MODE_CLASS (mode) == MODE_FLOAT)
2957         {
2958 -         if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode))
2959 +         if (TARGET_HARD_FLOAT
2960 +             && (mode == SFmode
2961 +                 || (mode == DFmode && !TARGET_VFP_SINGLE)))
2962             {
2963               *total = COSTS_N_INSNS (1);
2964               return false;
2965 @@ -6919,10 +8098,13 @@
2966  }
2967  
2968  /* Return TRUE if OP is a memory operand which we can load or store a vector
2969 -   to/from. If CORE is true, we're moving from ARM registers not Neon
2970 -   registers.  */
2971 +   to/from. TYPE is one of the following values:
2972 +    0 - Vector load/stor (vldr)
2973 +    1 - Core registers (ldm)
2974 +    2 - Element/structure loads (vld1)
2975 + */
2976  int
2977 -neon_vector_mem_operand (rtx op, bool core)
2978 +neon_vector_mem_operand (rtx op, int type)
2979  {
2980    rtx ind;
2981  
2982 @@ -6955,23 +8137,16 @@
2983      return arm_address_register_rtx_p (ind, 0);
2984  
2985    /* Allow post-increment with Neon registers.  */
2986 -  if (!core && GET_CODE (ind) == POST_INC)
2987 +  if ((type != 1 && GET_CODE (ind) == POST_INC)
2988 +      || (type == 0 && GET_CODE (ind) == PRE_DEC))
2989      return arm_address_register_rtx_p (XEXP (ind, 0), 0);
2990  
2991 -#if 0
2992 -  /* FIXME: We can support this too if we use VLD1/VST1.  */
2993 -  if (!core
2994 -      && GET_CODE (ind) == POST_MODIFY
2995 -      && arm_address_register_rtx_p (XEXP (ind, 0), 0)
2996 -      && GET_CODE (XEXP (ind, 1)) == PLUS
2997 -      && rtx_equal_p (XEXP (XEXP (ind, 1), 0), XEXP (ind, 0)))
2998 -    ind = XEXP (ind, 1);
2999 -#endif
3000 +  /* FIXME: vld1 allows register post-modify.  */
3001  
3002    /* Match:
3003       (plus (reg)
3004            (const)).  */
3005 -  if (!core
3006 +  if (type == 0
3007        && GET_CODE (ind) == PLUS
3008        && GET_CODE (XEXP (ind, 0)) == REG
3009        && REG_MODE_OK_FOR_BASE_P (XEXP (ind, 0), VOIDmode)
3010 @@ -7038,10 +8213,19 @@
3011  enum reg_class
3012  coproc_secondary_reload_class (enum machine_mode mode, rtx x, bool wb)
3013  {
3014 +  if (mode == HFmode)
3015 +    {
3016 +      if (!TARGET_NEON_FP16)
3017 +       return GENERAL_REGS;
3018 +      if (s_register_operand (x, mode) || neon_vector_mem_operand (x, 2))
3019 +       return NO_REGS;
3020 +      return GENERAL_REGS;
3021 +    }
3022 +
3023    if (TARGET_NEON
3024        && (GET_MODE_CLASS (mode) == MODE_VECTOR_INT
3025            || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
3026 -      && neon_vector_mem_operand (x, FALSE))
3027 +      && neon_vector_mem_operand (x, 0))
3028       return NO_REGS;
3029  
3030    if (arm_coproc_mem_operand (x, wb) || s_register_operand (x, mode))
3031 @@ -7438,6 +8622,9 @@
3032    int base_reg = -1;
3033    int i;
3034  
3035 +  if (low_irq_latency)
3036 +    return 0;
3037 +
3038    /* Can only handle 2, 3, or 4 insns at present,
3039       though could be easily extended if required.  */
3040    gcc_assert (nops >= 2 && nops <= 4);
3041 @@ -7667,6 +8854,9 @@
3042    int base_reg = -1;
3043    int i;
3044  
3045 +  if (low_irq_latency)
3046 +    return 0;
3047 +
3048    /* Can only handle 2, 3, or 4 insns at present, though could be easily
3049       extended if required.  */
3050    gcc_assert (nops >= 2 && nops <= 4);
3051 @@ -7874,7 +9064,7 @@
3052  
3053       As a compromise, we use ldr for counts of 1 or 2 regs, and ldm
3054       for counts of 3 or 4 regs.  */
3055 -  if (arm_tune_xscale && count <= 2 && ! optimize_size)
3056 +  if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size))
3057      {
3058        rtx seq;
3059  
3060 @@ -7937,7 +9127,7 @@
3061  
3062    /* See arm_gen_load_multiple for discussion of
3063       the pros/cons of ldm/stm usage for XScale.  */
3064 -  if (arm_tune_xscale && count <= 2 && ! optimize_size)
3065 +  if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size))
3066      {
3067        rtx seq;
3068  
3069 @@ -9555,7 +10745,10 @@
3070        gcc_assert (GET_CODE (from) != BARRIER);
3071  
3072        /* Count the length of this insn.  */
3073 -      count += get_attr_length (from);
3074 +      if (LABEL_P (from) && (align_jumps > 0 || align_loops > 0))
3075 +        count += MAX (align_jumps, align_loops);
3076 +      else
3077 +        count += get_attr_length (from);
3078  
3079        /* If there is a jump table, add its length.  */
3080        tmp = is_jump_table (from);
3081 @@ -9867,6 +11060,8 @@
3082               insn = table;
3083             }
3084         }
3085 +      else if (LABEL_P (insn) && (align_jumps > 0 || align_loops > 0))
3086 +       address += MAX (align_jumps, align_loops);
3087      }
3088  
3089    fix = minipool_fix_head;
3090 @@ -10072,6 +11267,21 @@
3091  vfp_output_fldmd (FILE * stream, unsigned int base, int reg, int count)
3092  {
3093    int i;
3094 +  int offset;
3095 +
3096 +  if (low_irq_latency)
3097 +    {
3098 +      /* Output a sequence of FLDD instructions.  */
3099 +      offset = 0;
3100 +      for (i = reg; i < reg + count; ++i, offset += 8)
3101 +       {
3102 +         fputc ('\t', stream);
3103 +         asm_fprintf (stream, "fldd\td%d, [%r,#%d]\n", i, base, offset);
3104 +       }
3105 +      asm_fprintf (stream, "\tadd\tsp, sp, #%d\n", count * 8);
3106 +      return;
3107 +    }
3108 +
3109  
3110    /* Workaround ARM10 VFPr1 bug.  */
3111    if (count == 2 && !arm_arch6)
3112 @@ -10142,6 +11352,56 @@
3113    rtx tmp, reg;
3114    int i;
3115  
3116 +  if (low_irq_latency)
3117 +    {
3118 +      int saved_size;
3119 +      rtx sp_insn;
3120 +
3121 +      if (!count)
3122 +       return 0;
3123 +
3124 +      saved_size = count * GET_MODE_SIZE (DFmode);
3125 +
3126 +      /* Since fstd does not have postdecrement addressing mode,
3127 +        we first decrement stack pointer and then use base+offset
3128 +        stores for VFP registers. The ARM EABI unwind information 
3129 +        can't easily describe base+offset loads, so we attach
3130 +        a note for the effects of the whole block in the first insn, 
3131 +        and  avoid marking the subsequent instructions 
3132 +        with RTX_FRAME_RELATED_P.  */
3133 +      sp_insn = gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
3134 +                           GEN_INT (-saved_size));
3135 +      sp_insn = emit_insn (sp_insn);
3136 +      RTX_FRAME_RELATED_P (sp_insn) = 1;
3137 +
3138 +      dwarf = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (count + 1));
3139 +      XVECEXP (dwarf, 0, 0) = 
3140 +       gen_rtx_SET (VOIDmode, stack_pointer_rtx,
3141 +                    plus_constant (stack_pointer_rtx, -saved_size));
3142 +      
3143 +      /* push double VFP registers to stack */
3144 +      for (i = 0; i < count; ++i )
3145 +       {
3146 +         rtx reg;
3147 +         rtx mem;
3148 +         rtx addr;
3149 +         rtx insn;
3150 +         reg = gen_rtx_REG (DFmode, base_reg + 2*i);
3151 +         addr = (i == 0) ? stack_pointer_rtx
3152 +           : gen_rtx_PLUS (SImode, stack_pointer_rtx,
3153 +                           GEN_INT (i * GET_MODE_SIZE (DFmode)));
3154 +         mem = gen_frame_mem (DFmode, addr);
3155 +         insn = emit_move_insn (mem, reg);
3156 +         XVECEXP (dwarf, 0, i+1) = 
3157 +           gen_rtx_SET (VOIDmode, mem, reg);
3158 +       }
3159 +
3160 +      REG_NOTES (sp_insn) = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, dwarf,
3161 +                                              REG_NOTES (sp_insn));
3162 +      
3163 +      return saved_size;
3164 +    }
3165 +
3166    /* Workaround ARM10 VFPr1 bug.  Data corruption can occur when exactly two
3167       register pairs are stored by a store multiple insn.  We avoid this
3168       by pushing an extra pair.  */
3169 @@ -10758,7 +12018,7 @@
3170  }
3171  
3172  /* Output a move, load or store for quad-word vectors in ARM registers.  Only
3173 -   handles MEMs accepted by neon_vector_mem_operand with CORE=true.  */
3174 +   handles MEMs accepted by neon_vector_mem_operand with TYPE=1.  */
3175  
3176  const char *
3177  output_move_quad (rtx *operands)
3178 @@ -10954,6 +12214,12 @@
3179        ops[1] = reg;
3180        break;
3181  
3182 +    case PRE_DEC:
3183 +      templ = "v%smdb%%?\t%%0!, %%h1";
3184 +      ops[0] = XEXP (addr, 0);
3185 +      ops[1] = reg;
3186 +      break;
3187 +    
3188      case POST_MODIFY:
3189        /* FIXME: Not currently enabled in neon_vector_mem_operand.  */
3190        gcc_unreachable ();
3191 @@ -10968,7 +12234,7 @@
3192           {
3193             /* We're only using DImode here because it's a convenient size.  */
3194             ops[0] = gen_rtx_REG (DImode, REGNO (reg) + 2 * i);
3195 -           ops[1] = adjust_address (mem, SImode, 8 * i);
3196 +           ops[1] = adjust_address (mem, DImode, 8 * i);
3197             if (reg_overlap_mentioned_p (ops[0], mem))
3198               {
3199                 gcc_assert (overlap == -1);
3200 @@ -11557,7 +12823,7 @@
3201               if (count > 0)
3202                 {
3203                   /* Workaround ARM10 VFPr1 bug.  */
3204 -                 if (count == 2 && !arm_arch6)
3205 +                 if (count == 2 && !arm_arch6 && !low_irq_latency)
3206                     count++;
3207                   saved += count * 8;
3208                 }
3209 @@ -11886,6 +13152,41 @@
3210    return_used_this_function = 0;
3211  }
3212  
3213 +/* Generate to STREAM a code sequence that pops registers identified 
3214 +   in REGS_MASK from SP. SP is incremented as the result.
3215 +*/
3216 +static void
3217 +print_pop_reg_by_ldr (FILE *stream, int regs_mask, int rfe)
3218 +{
3219 +  int reg;
3220 +
3221 +  gcc_assert (! (regs_mask & (1 << SP_REGNUM)));
3222 +  
3223 +  for (reg = 0; reg < PC_REGNUM; ++reg)
3224 +    if (regs_mask & (1 << reg))
3225 +      asm_fprintf (stream, "\tldr\t%r, [%r], #4\n",
3226 +                  reg, SP_REGNUM); 
3227 +
3228 +  if (regs_mask & (1 << PC_REGNUM))
3229 +    {
3230 +      if (rfe)
3231 +       /* When returning from exception, we need to
3232 +          copy SPSR to CPSR.  There are two ways to do
3233 +          that: the ldm instruction with "^" suffix,
3234 +          and movs instruction.  The latter would
3235 +          require that we load from stack to some
3236 +          scratch register, and then move to PC.
3237 +          Therefore, we'd need extra instruction and
3238 +          have to make sure we actually have a spare
3239 +          register.  Using ldm with a single register
3240 +          is simler.  */
3241 +       asm_fprintf (stream, "\tldm\tsp!, {pc}^\n");
3242 +      else
3243 +       asm_fprintf (stream, "\tldr\t%r, [%r], #4\n",
3244 +                    PC_REGNUM, SP_REGNUM); 
3245 +    }
3246 +}
3247 +
3248  const char *
3249  arm_output_epilogue (rtx sibling)
3250  {
3251 @@ -11946,7 +13247,7 @@
3252        /* This variable is for the Virtual Frame Pointer, not VFP regs.  */
3253        int vfp_offset = offsets->frame;
3254  
3255 -      if (arm_fpu_arch == FPUTYPE_FPA_EMU2)
3256 +      if (TARGET_FPA_EMU2)
3257         {
3258           for (reg = LAST_FPA_REGNUM; reg >= FIRST_FPA_REGNUM; reg--)
3259             if (df_regs_ever_live_p (reg) && !call_used_regs[reg])
3260 @@ -12169,7 +13470,7 @@
3261                          SP_REGNUM, HARD_FRAME_POINTER_REGNUM);
3262         }
3263  
3264 -      if (arm_fpu_arch == FPUTYPE_FPA_EMU2)
3265 +      if (TARGET_FPA_EMU2)
3266         {
3267           for (reg = FIRST_FPA_REGNUM; reg <= LAST_FPA_REGNUM; reg++)
3268             if (df_regs_ever_live_p (reg) && !call_used_regs[reg])
3269 @@ -12253,22 +13554,19 @@
3270          to load use the LDR instruction - it is faster.  For Thumb-2
3271          always use pop and the assembler will pick the best instruction.*/
3272        if (TARGET_ARM && saved_regs_mask == (1 << LR_REGNUM)
3273 -         && !IS_INTERRUPT(func_type))
3274 +         && !IS_INTERRUPT (func_type))
3275         {
3276           asm_fprintf (f, "\tldr\t%r, [%r], #4\n", LR_REGNUM, SP_REGNUM);
3277         }
3278        else if (saved_regs_mask)
3279         {
3280 -         if (saved_regs_mask & (1 << SP_REGNUM))
3281 -           /* Note - write back to the stack register is not enabled
3282 -              (i.e. "ldmfd sp!...").  We know that the stack pointer is
3283 -              in the list of registers and if we add writeback the
3284 -              instruction becomes UNPREDICTABLE.  */
3285 -           print_multi_reg (f, "ldmfd\t%r, ", SP_REGNUM, saved_regs_mask,
3286 -                            rfe);
3287 -         else if (TARGET_ARM)
3288 -           print_multi_reg (f, "ldmfd\t%r!, ", SP_REGNUM, saved_regs_mask,
3289 -                            rfe);
3290 +         gcc_assert ( ! (saved_regs_mask & (1 << SP_REGNUM)));
3291 +         if (TARGET_ARM)
3292 +           if (low_irq_latency)
3293 +             print_pop_reg_by_ldr (f, saved_regs_mask, rfe);
3294 +           else
3295 +             print_multi_reg (f, "ldmfd\t%r!, ", SP_REGNUM, saved_regs_mask,
3296 +                              rfe);
3297           else
3298             print_multi_reg (f, "pop\t", SP_REGNUM, saved_regs_mask, 0);
3299         }
3300 @@ -12389,6 +13687,32 @@
3301  
3302    gcc_assert (num_regs && num_regs <= 16);
3303  
3304 +  if (low_irq_latency)
3305 +    {
3306 +      rtx insn = 0;
3307 +
3308 +      /* Emit a series of ldr instructions rather rather than a single ldm.  */
3309 +      /* TODO: Use ldrd where possible.  */
3310 +      gcc_assert (! (mask & (1 << SP_REGNUM)));
3311 +
3312 +      for (i = LAST_ARM_REGNUM; i >= 0; --i)
3313 +        {
3314 +          if (mask & (1 << i))
3315 +
3316 +            {
3317 +              rtx reg, where, mem;
3318 +
3319 +             reg = gen_rtx_REG (SImode, i);
3320 +             where = gen_rtx_PRE_DEC (SImode, stack_pointer_rtx);
3321 +             mem = gen_rtx_MEM (SImode, where);
3322 +             insn = emit_move_insn (mem, reg);
3323 +             RTX_FRAME_RELATED_P (insn) = 1;
3324 +            }
3325 +        }
3326 +
3327 +      return insn;
3328 +    }
3329 +
3330    /* We don't record the PC in the dwarf frame information.  */
3331    num_dwarf_regs = num_regs;
3332    if (mask & (1 << PC_REGNUM))
3333 @@ -12737,22 +14061,23 @@
3334         {
3335           int reg = -1;
3336  
3337 -         for (i = 4; i <= (TARGET_THUMB1 ? LAST_LO_REGNUM : 11); i++)
3338 -           {
3339 -             if ((offsets->saved_regs_mask & (1 << i)) == 0)
3340 -               {
3341 -                 reg = i;
3342 -                 break;
3343 -               }
3344 -           }
3345 -
3346 -         if (reg == -1 && arm_size_return_regs () <= 12
3347 -             && !crtl->tail_call_emit)
3348 +         /* If it is safe to use r3, then do so.  This sometimes 
3349 +            generates better code on Thumb-2 by avoiding the need to
3350 +            use 32-bit push/pop instructions.  */
3351 +         if (!crtl->tail_call_emit
3352 +             && arm_size_return_regs () <= 12)
3353             {
3354 -             /* Push/pop an argument register (r3) if all callee saved
3355 -                registers are already being pushed.  */
3356               reg = 3;
3357             }
3358 +         else
3359 +           for (i = 4; i <= (TARGET_THUMB1 ? LAST_LO_REGNUM : 11); i++)
3360 +             {
3361 +               if ((offsets->saved_regs_mask & (1 << i)) == 0)
3362 +                 {
3363 +                   reg = i;
3364 +                   break;
3365 +                 }
3366 +             }
3367  
3368           if (reg != -1)
3369             {
3370 @@ -12876,7 +14201,7 @@
3371  
3372    /* Save any floating point call-saved registers used by this
3373       function.  */
3374 -  if (arm_fpu_arch == FPUTYPE_FPA_EMU2)
3375 +  if (TARGET_FPA_EMU2)
3376      {
3377        for (reg = LAST_FPA_REGNUM; reg >= FIRST_FPA_REGNUM; reg--)
3378         if (df_regs_ever_live_p (reg) && !call_used_regs[reg])
3379 @@ -13483,7 +14808,11 @@
3380           {
3381             fprintf (stream, ", %s ", shift);
3382             if (val == -1)
3383 -             arm_print_operand (stream, XEXP (x, 1), 0);
3384 +              {
3385 +               arm_print_operand (stream, XEXP (x, 1), 0);
3386 +                if (janus2_code)
3387 +                  fprintf(stream, "\n\tnop");
3388 +              }
3389             else
3390               fprintf (stream, "#" HOST_WIDE_INT_PRINT_DEC, val);
3391           }
3392 @@ -13704,6 +15033,30 @@
3393         }
3394        return;
3395  
3396 +    /* Print the high single-precision register of a VFP double-precision
3397 +       register.  */
3398 +    case 'p':
3399 +      {
3400 +        int mode = GET_MODE (x);
3401 +        int regno;
3402 +
3403 +        if (GET_MODE_SIZE (mode) != 8 || GET_CODE (x) != REG)
3404 +          {
3405 +           output_operand_lossage ("invalid operand for code '%c'", code);
3406 +           return;
3407 +          }
3408 +
3409 +        regno = REGNO (x);
3410 +        if (!VFP_REGNO_OK_FOR_DOUBLE (regno))
3411 +          {
3412 +           output_operand_lossage ("invalid operand for code '%c'", code);
3413 +           return;
3414 +          }
3415 +
3416 +       fprintf (stream, "s%d", regno - FIRST_VFP_REGNUM + 1);
3417 +      }
3418 +      return;
3419 +
3420      /* Print a VFP/Neon double precision or quad precision register name.  */
3421      case 'P':
3422      case 'q':
3423 @@ -13821,6 +15174,57 @@
3424        }
3425        return;
3426  
3427 +    /* Memory operand for vld1/vst1 instruction.  */
3428 +    case 'A':
3429 +      {
3430 +       rtx addr;
3431 +       bool postinc = FALSE;
3432 +       unsigned align;
3433 +
3434 +       gcc_assert (GET_CODE (x) == MEM);
3435 +       addr = XEXP (x, 0);
3436 +       if (GET_CODE (addr) == POST_INC)
3437 +         {
3438 +           postinc = 1;
3439 +           addr = XEXP (addr, 0);
3440 +         }
3441 +       align = MEM_ALIGN (x) >> 3;
3442 +       asm_fprintf (stream, "[%r", REGNO (addr));
3443 +       if (align > GET_MODE_SIZE (GET_MODE (x)))
3444 +         align = GET_MODE_SIZE (GET_MODE (x));
3445 +       if (align >= 8)
3446 +         asm_fprintf (stream, ", :%d", align << 3);
3447 +       asm_fprintf (stream, "]");
3448 +       if (postinc)
3449 +         fputs("!", stream);
3450 +      }
3451 +      return;
3452 +
3453 +    /* Register specifier for vld1.16/vst1.16.  Translate the S register
3454 +       number into a D register number and element index.  */
3455 +    case 'z':
3456 +      {
3457 +        int mode = GET_MODE (x);
3458 +        int regno;
3459 +
3460 +        if (GET_MODE_SIZE (mode) != 2 || GET_CODE (x) != REG)
3461 +          {
3462 +           output_operand_lossage ("invalid operand for code '%c'", code);
3463 +           return;
3464 +          }
3465 +
3466 +        regno = REGNO (x);
3467 +        if (!VFP_REGNO_OK_FOR_SINGLE (regno))
3468 +          {
3469 +           output_operand_lossage ("invalid operand for code '%c'", code);
3470 +           return;
3471 +          }
3472 +
3473 +       regno = regno - FIRST_VFP_REGNUM;
3474 +       fprintf (stream, "d%d[%d]", regno/2, ((regno % 2) ? 2 : 0));
3475 +      }
3476 +      return;
3477 +      
3478      default:
3479        if (x == 0)
3480         {
3481 @@ -13854,6 +15258,12 @@
3482         default:
3483           gcc_assert (GET_CODE (x) != NEG);
3484           fputc ('#', stream);
3485 +         if (GET_CODE (x) == HIGH)
3486 +           {
3487 +             fputs (":lower16:", stream);
3488 +             x = XEXP (x, 0);
3489 +           }
3490 +           
3491           output_addr_const (stream, x);
3492           break;
3493         }
3494 @@ -14245,6 +15655,10 @@
3495       first insn after the following code_label if REVERSE is true.  */
3496    rtx start_insn = insn;
3497  
3498 +  /* Don't do this if we're not considering conditional execution.  */
3499 +  if (TARGET_NO_SINGLE_COND_EXEC)
3500 +    return;
3501 +
3502    /* If in state 4, check if the target branch is reached, in order to
3503       change back to state 0.  */
3504    if (arm_ccfsm_state == 4)
3505 @@ -14618,6 +16032,11 @@
3506        if (mode == DFmode)
3507         return VFP_REGNO_OK_FOR_DOUBLE (regno);
3508  
3509 +      /* VFP registers can hold HFmode values, but there is no point in
3510 +        putting them there unless we have hardware conversion insns. */
3511 +      if (mode == HFmode)
3512 +       return TARGET_FP16 && VFP_REGNO_OK_FOR_SINGLE (regno);
3513 +
3514        if (TARGET_NEON)
3515          return (VALID_NEON_DREG_MODE (mode) && VFP_REGNO_OK_FOR_DOUBLE (regno))
3516                 || (VALID_NEON_QREG_MODE (mode)
3517 @@ -14637,16 +16056,16 @@
3518         return mode == SImode;
3519  
3520        if (IS_IWMMXT_REGNUM (regno))
3521 -       return VALID_IWMMXT_REG_MODE (mode);
3522 +       return VALID_IWMMXT_REG_MODE (mode) && mode != SImode;
3523      }
3524    
3525 -  /* We allow any value to be stored in the general registers.
3526 +  /* We allow almost any value to be stored in the general registers.
3527       Restrict doubleword quantities to even register pairs so that we can
3528 -     use ldrd.  Do not allow Neon structure opaque modes in general registers;
3529 -     they would use too many.  */
3530 +     use ldrd.  Do not allow very large Neon structure opaque modes in
3531 +     general registers; they would use too many.  */
3532    if (regno <= LAST_ARM_REGNUM)
3533      return !(TARGET_LDRD && GET_MODE_SIZE (mode) > 4 && (regno & 1) != 0)
3534 -      && !VALID_NEON_STRUCT_MODE (mode);
3535 +      && ARM_NUM_REGS (mode) <= 4;
3536  
3537    if (regno == FRAME_POINTER_REGNUM
3538        || regno == ARG_POINTER_REGNUM)
3539 @@ -16103,6 +17522,15 @@
3540  }
3541  
3542  static void
3543 +arm_init_fp16_builtins (void)
3544 +{
3545 +  tree fp16_type = make_node (REAL_TYPE);
3546 +  TYPE_PRECISION (fp16_type) = 16;
3547 +  layout_type (fp16_type);
3548 +  (*lang_hooks.types.register_builtin_type) (fp16_type, "__fp16");
3549 +}
3550 +
3551 +static void
3552  arm_init_builtins (void)
3553  {
3554    arm_init_tls_builtins ();
3555 @@ -16112,6 +17540,71 @@
3556  
3557    if (TARGET_NEON)
3558      arm_init_neon_builtins ();
3559 +
3560 +  if (arm_fp16_format)
3561 +    arm_init_fp16_builtins ();
3562 +}
3563 +
3564 +/* Implement TARGET_INVALID_PARAMETER_TYPE.  */
3565 +
3566 +static const char *
3567 +arm_invalid_parameter_type (const_tree t)
3568 +{
3569 +  if (SCALAR_FLOAT_TYPE_P (t) && TYPE_PRECISION (t) == 16)
3570 +    return N_("function parameters cannot have __fp16 type");
3571 +  return NULL;
3572 +}
3573 +
3574 +/* Implement TARGET_INVALID_PARAMETER_TYPE.  */
3575 +
3576 +static const char *
3577 +arm_invalid_return_type (const_tree t)
3578 +{
3579 +  if (SCALAR_FLOAT_TYPE_P (t) && TYPE_PRECISION (t) == 16)
3580 +    return N_("functions cannot return __fp16 type");
3581 +  return NULL;
3582 +}
3583 +
3584 +/* Implement TARGET_PROMOTED_TYPE.  */
3585 +
3586 +static tree
3587 +arm_promoted_type (const_tree t)
3588 +{
3589 +  if (SCALAR_FLOAT_TYPE_P (t) && TYPE_PRECISION (t) == 16)
3590 +    return float_type_node;
3591 +  return NULL_TREE;
3592 +}
3593 +
3594 +/* Implement TARGET_CONVERT_TO_TYPE.
3595 +   Specifically, this hook implements the peculiarity of the ARM
3596 +   half-precision floating-point C semantics that requires conversions between
3597 +   __fp16 to or from double to do an intermediate conversion to float.  */
3598 +
3599 +static tree
3600 +arm_convert_to_type (tree type, tree expr)
3601 +{
3602 +  tree fromtype = TREE_TYPE (expr);
3603 +  if (!SCALAR_FLOAT_TYPE_P (fromtype) || !SCALAR_FLOAT_TYPE_P (type))
3604 +    return NULL_TREE;
3605 +  if ((TYPE_PRECISION (fromtype) == 16 && TYPE_PRECISION (type) > 32)
3606 +      || (TYPE_PRECISION (type) == 16 && TYPE_PRECISION (fromtype) > 32))
3607 +    return convert (type, convert (float_type_node, expr));
3608 +  return NULL_TREE;
3609 +}
3610 +
3611 +/* Implement TARGET_SCALAR_MODE_SUPPORTED_P.
3612 +   This simply adds HFmode as a supported mode; even though we don't
3613 +   implement arithmetic on this type directly, it's supported by
3614 +   optabs conversions, much the way the double-word arithmetic is
3615 +   special-cased in the default hook.  */
3616 +
3617 +static bool
3618 +arm_scalar_mode_supported_p (enum machine_mode mode)
3619 +{
3620 +  if (mode == HFmode)
3621 +    return (arm_fp16_format != ARM_FP16_FORMAT_NONE);
3622 +  else
3623 +    return default_scalar_mode_supported_p (mode);
3624  }
3625  
3626  /* Errors in the source file can cause expand_expr to return const0_rtx
3627 @@ -17191,6 +18684,7 @@
3628    unsigned HOST_WIDE_INT mask = 0xff;
3629    int i;
3630  
3631 +  val = val & (unsigned HOST_WIDE_INT)0xffffffffu;
3632    if (val == 0) /* XXX */
3633      return 0;
3634  
3635 @@ -18279,40 +19773,8 @@
3636        else
3637         {
3638           int set_float_abi_attributes = 0;
3639 -         switch (arm_fpu_arch)
3640 -           {
3641 -           case FPUTYPE_FPA:
3642 -             fpu_name = "fpa";
3643 -             break;
3644 -           case FPUTYPE_FPA_EMU2:
3645 -             fpu_name = "fpe2";
3646 -             break;
3647 -           case FPUTYPE_FPA_EMU3:
3648 -             fpu_name = "fpe3";
3649 -             break;
3650 -           case FPUTYPE_MAVERICK:
3651 -             fpu_name = "maverick";
3652 -             break;
3653 -           case FPUTYPE_VFP:
3654 -             fpu_name = "vfp";
3655 -             set_float_abi_attributes = 1;
3656 -             break;
3657 -           case FPUTYPE_VFP3D16:
3658 -             fpu_name = "vfpv3-d16";
3659 -             set_float_abi_attributes = 1;
3660 -             break;
3661 -           case FPUTYPE_VFP3:
3662 -             fpu_name = "vfpv3";
3663 -             set_float_abi_attributes = 1;
3664 -             break;
3665 -           case FPUTYPE_NEON:
3666 -             fpu_name = "neon";
3667 -             set_float_abi_attributes = 1;
3668 -             break;
3669 -           default:
3670 -             abort();
3671 -           }
3672 -         if (set_float_abi_attributes)
3673 +         fpu_name = arm_fpu_desc->name;
3674 +         if (arm_fp_model == ARM_FP_MODEL_VFP)
3675             {
3676               if (TARGET_HARD_FLOAT)
3677                 asm_fprintf (asm_out_file, "\t.eabi_attribute 27, 3\n");
3678 @@ -18362,6 +19824,11 @@
3679         val = 6;
3680        asm_fprintf (asm_out_file, "\t.eabi_attribute 30, %d\n", val);
3681  
3682 +      /* Tag_ABI_FP_16bit_format.  */
3683 +      if (arm_fp16_format)
3684 +       asm_fprintf (asm_out_file, "\t.eabi_attribute 38, %d\n",
3685 +                    (int)arm_fp16_format);
3686 +
3687        if (arm_lang_output_object_attributes_hook)
3688         arm_lang_output_object_attributes_hook();
3689      }
3690 @@ -18591,6 +20058,23 @@
3691    return 1;
3692  }
3693  
3694 +/* Emit a fp16 constant appropriately padded to occupy a 4-byte word.
3695 +   HFmode constant pool entries are actually loaded with ldr.  */
3696 +void
3697 +arm_emit_fp16_const (rtx c)
3698 +{
3699 +  REAL_VALUE_TYPE r;
3700 +  long bits;
3701 +
3702 +  REAL_VALUE_FROM_CONST_DOUBLE (r, c);
3703 +  bits = real_to_target (NULL, &r, HFmode);
3704 +  if (WORDS_BIG_ENDIAN)
3705 +    assemble_zeros (2);
3706 +  assemble_integer (GEN_INT (bits), 2, BITS_PER_WORD, 1);
3707 +  if (!WORDS_BIG_ENDIAN)
3708 +    assemble_zeros (2);
3709 +}
3710 +
3711  const char *
3712  arm_output_load_gr (rtx *operands)
3713  {
3714 @@ -18628,19 +20112,24 @@
3715     that way.  */
3716  
3717  static void
3718 -arm_setup_incoming_varargs (CUMULATIVE_ARGS *cum,
3719 +arm_setup_incoming_varargs (CUMULATIVE_ARGS *pcum,
3720                             enum machine_mode mode,
3721                             tree type,
3722                             int *pretend_size,
3723                             int second_time ATTRIBUTE_UNUSED)
3724  {
3725 -  int nregs = cum->nregs;
3726 -  if (nregs & 1
3727 -      && ARM_DOUBLEWORD_ALIGN
3728 -      && arm_needs_doubleword_align (mode, type))
3729 -    nregs++;
3730 -
3731 +  int nregs;
3732 +  
3733    cfun->machine->uses_anonymous_args = 1;
3734 +  if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL)
3735 +    {
3736 +      nregs = pcum->aapcs_ncrn;
3737 +      if ((nregs & 1) && arm_needs_doubleword_align (mode, type))
3738 +       nregs++;
3739 +    }
3740 +  else
3741 +    nregs = pcum->nregs;
3742 +  
3743    if (nregs < NUM_ARG_REGS)
3744      *pretend_size = (NUM_ARG_REGS - nregs) * UNITS_PER_WORD;
3745  }
3746 @@ -19024,9 +20513,10 @@
3747        || mode == V16QImode || mode == V4SFmode || mode == V2DImode))
3748      return true;
3749  
3750 -  if ((mode == V2SImode)
3751 -      || (mode == V4HImode)
3752 -      || (mode == V8QImode))
3753 +  if ((TARGET_NEON || TARGET_IWMMXT)
3754 +      && ((mode == V2SImode)
3755 +         || (mode == V4HImode)
3756 +         || (mode == V8QImode)))
3757      return true;
3758  
3759    return false;
3760 @@ -19057,9 +20547,14 @@
3761    if (IS_FPA_REGNUM (regno))
3762      return (TARGET_AAPCS_BASED ? 96 : 16) + regno - FIRST_FPA_REGNUM;
3763  
3764 -  /* FIXME: VFPv3 register numbering.  */
3765    if (IS_VFP_REGNUM (regno))
3766 -    return 64 + regno - FIRST_VFP_REGNUM;
3767 +    {
3768 +      /* See comment in arm_dwarf_register_span.  */
3769 +      if (VFP_REGNO_OK_FOR_SINGLE (regno))
3770 +         return 64 + regno - FIRST_VFP_REGNUM;
3771 +      else
3772 +         return 256 + (regno - FIRST_VFP_REGNUM) / 2;
3773 +    }
3774  
3775    if (IS_IWMMXT_GR_REGNUM (regno))
3776      return 104 + regno - FIRST_IWMMXT_GR_REGNUM;
3777 @@ -19070,6 +20565,39 @@
3778    gcc_unreachable ();
3779  }
3780  
3781 +/* Dwarf models VFPv3 registers as 32 64-bit registers.
3782 +   GCC models tham as 64 32-bit registers, so we need to describe this to
3783 +   the DWARF generation code.  Other registers can use the default.  */
3784 +static rtx
3785 +arm_dwarf_register_span(rtx rtl)
3786 +{
3787 +    unsigned regno;
3788 +    int nregs;
3789 +    int i;
3790 +    rtx p;
3791 +
3792 +    regno = REGNO (rtl);
3793 +    if (!IS_VFP_REGNUM (regno))
3794 +       return NULL_RTX;
3795 +
3796 +    /* The EABI defines two VFP register ranges:
3797 +         64-95: Legacy VFPv2 numbering for S0-S31 (obsolescent)
3798 +         256-287: D0-D31
3799 +       The recommended encodings for s0-s31 is a DW_OP_bit_piece of the
3800 +       corresponding D register.  However gdb6.6 does not support this, so
3801 +       we use the legacy encodings.  We also use these encodings for D0-D15
3802 +       for compatibility with older debuggers.  */
3803 +    if (VFP_REGNO_OK_FOR_SINGLE (regno))
3804 +       return NULL_RTX;
3805 +
3806 +    nregs = GET_MODE_SIZE (GET_MODE (rtl)) / 8;
3807 +    p = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc(nregs));
3808 +    regno = (regno - FIRST_VFP_REGNUM) / 2;
3809 +    for (i = 0; i < nregs; i++)
3810 +      XVECEXP (p, 0, i) = gen_rtx_REG (DImode, 256 + regno + i);
3811 +
3812 +    return p;
3813 +}
3814  
3815  #ifdef TARGET_UNWIND_INFO
3816  /* Emit unwind directives for a store-multiple instruction or stack pointer
3817 @@ -19556,6 +21084,7 @@
3818      case cortexr4f:
3819      case cortexa8:
3820      case cortexa9:
3821 +    case marvell_f:
3822        return 2;
3823  
3824      default:
3825 @@ -19620,6 +21149,10 @@
3826        return "St9__va_list";
3827      }
3828  
3829 +  /* Half-precision float.  */
3830 +  if (TREE_CODE (type) == REAL_TYPE && TYPE_PRECISION (type) == 16)
3831 +    return "Dh";
3832 +
3833    if (TREE_CODE (type) != VECTOR_TYPE)
3834      return NULL;
3835  
3836 @@ -19676,6 +21209,86 @@
3837       given on the command line.  */
3838    if (level > 0)
3839      flag_section_anchors = 2;
3840 +
3841 +  if (size)
3842 +    {
3843 +      /* Select optimizations that are a win for code size.
3844 +
3845 +        The inlining options set below have two important
3846 +        consequences for functions not explicitly marked
3847 +        inline:
3848 +        - Static functions used once are inlined if
3849 +        sufficiently small.  Static functions used twice
3850 +        are not inlined.
3851 +        - Non-static functions are never inlined.
3852 +        So in effect, inlining will never cause two copies
3853 +        of function bodies to be created.  */
3854 +      /* Empirical results show that these options benefit code
3855 +        size on arm.  */
3856 +      /* FIXME: -fsee seems to be broken for Thumb-2.  */
3857 +      /* flag_see = 1; */
3858 +      flag_move_loop_invariants = 0;
3859 +      /* In Thumb mode the function call code size overhead is typically very
3860 +        small, and narrow branch instructions have very limited range.
3861 +        Inlining even medium sized functions tends to bloat the caller and
3862 +        require the use of long branch instructions. On average the long
3863 +        branches cost more than eliminating the function call overhead saves,
3864 +        so we use extremely restrictive automatic inlining heuristics.  In ARM
3865 +        mode the results are fairly neutral, probably due to better constant
3866 +        pool placement. */
3867 +      set_param_value ("max-inline-insns-single", 1);
3868 +      set_param_value ("max-inline-insns-auto", 1);
3869 +    }
3870 +  else
3871 +    {
3872 +      /* CSL LOCAL */
3873 +      /* Set flag_unroll_loops to a default value, so that we can tell
3874 +        if it was specified on the command line; see
3875 +        arm_override_options.  */
3876 +      flag_unroll_loops = 2;
3877 +      /* Promote loop indices to int where possible.  Consider moving this
3878 +        to -Os, also.  */
3879 +      flag_promote_loop_indices = 1;
3880 +    }
3881 +}
3882
3883 +/* Return how many instructions to look ahead for better insn
3884 +   scheduling.  */
3885 +static int
3886 +arm_multipass_dfa_lookahead (void)
3887 +{
3888 +  return (arm_tune == marvell_f) ? 4 : 0;
3889 +}
3890 +
3891 +/* Return the minimum alignment required to load or store a
3892 +   vector of the given type, which may be less than the
3893 +   natural alignment of the type.  */
3894 +
3895 +static int
3896 +arm_vector_min_alignment (const_tree type)
3897 +{
3898 +  if (TARGET_NEON)
3899 +    {
3900 +      /* The NEON element load and store instructions only require the
3901 +        alignment of the element type.  They can benefit from higher
3902 +        statically reported alignment, but we do not take advantage
3903 +        of that yet.  */
3904 +      gcc_assert (TREE_CODE (type) == VECTOR_TYPE);
3905 +      return TYPE_ALIGN_UNIT (TREE_TYPE (type));
3906 +    }
3907 +
3908 +  return default_vector_min_alignment (type);
3909 +}
3910 +
3911 +static bool
3912 +arm_vector_always_misalign(const_tree type ATTRIBUTE_UNUSED)
3913 +{
3914 +  /* On big-endian targets array loads (vld1) and vector loads (vldm)
3915 +     use a different format.  Always use the "misaligned" array variant.
3916 +     FIXME: this still doesn't work for big-endian because of constant
3917 +     loads and other operations using vldm ordering.  See
3918 +     issue 6722.  */
3919 +  return TARGET_NEON && !BYTES_BIG_ENDIAN;
3920  }
3921  
3922  #include "gt-arm.h"
3923 diff -Nur a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def
3924 --- a/gcc/config/arm/arm-cores.def      2009-02-20 16:20:38.000000000 +0100
3925 +++ b/gcc/config/arm/arm-cores.def      2010-01-25 09:50:28.975687047 +0100
3926 @@ -104,6 +104,7 @@
3927  ARM_CORE("xscale",        xscale,      5TE,                             FL_LDSCHED | FL_STRONG | FL_XSCALE, xscale)
3928  ARM_CORE("iwmmxt",        iwmmxt,      5TE,                             FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale)
3929  ARM_CORE("iwmmxt2",       iwmmxt2,     5TE,                             FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale)
3930 +ARM_CORE("marvell-f",    marvell_f,    5TE,                             FL_LDSCHED | FL_VFPV2 | FL_MARVELL_F, 9e)
3931  
3932  /* V5TEJ Architecture Processors */
3933  ARM_CORE("arm926ej-s",    arm926ejs,   5TEJ,                            FL_LDSCHED, 9e)
3934 @@ -117,9 +118,13 @@
3935  ARM_CORE("mpcorenovfp",          mpcorenovfp,  6K,                              FL_LDSCHED, 9e)
3936  ARM_CORE("mpcore",       mpcore,       6K,                              FL_LDSCHED | FL_VFPV2, 9e)
3937  ARM_CORE("arm1156t2-s",          arm1156t2s,   6T2,                             FL_LDSCHED, 9e)
3938 +
3939 +/* V7 Architecture Processors */
3940 +ARM_CORE("cortex-a5",    cortexa5,     7A,                              FL_LDSCHED, 9e)
3941  ARM_CORE("cortex-a8",    cortexa8,     7A,                              FL_LDSCHED, 9e)
3942  ARM_CORE("cortex-a9",    cortexa9,     7A,                              FL_LDSCHED, 9e)
3943  ARM_CORE("cortex-r4",    cortexr4,     7R,                              FL_LDSCHED, 9e)
3944  ARM_CORE("cortex-r4f",   cortexr4f,    7R,                              FL_LDSCHED, 9e)
3945  ARM_CORE("cortex-m3",    cortexm3,     7M,                              FL_LDSCHED, 9e)
3946  ARM_CORE("cortex-m1",    cortexm1,     6M,                              FL_LDSCHED, 9e)
3947 +ARM_CORE("cortex-m0",    cortexm0,     6M,                              FL_LDSCHED, 9e)
3948 diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
3949 --- a/gcc/config/arm/arm.h      2009-04-23 02:31:13.000000000 +0200
3950 +++ b/gcc/config/arm/arm.h      2010-01-25 09:50:28.975687047 +0100
3951 @@ -85,6 +85,10 @@
3952           builtin_define ("__IWMMXT__");                \
3953         if (TARGET_AAPCS_BASED)                         \
3954           builtin_define ("__ARM_EABI__");              \
3955 +       if (arm_tune_marvell_f)                         \
3956 +         builtin_define ("__ARM_TUNE_MARVELL_F__");    \
3957 +       if (low_irq_latency)                            \
3958 +         builtin_define ("__low_irq_latency__");       \
3959      } while (0)
3960  
3961  /* The various ARM cores.  */
3962 @@ -199,6 +203,13 @@
3963  #define TARGET_AAPCS_BASED \
3964      (arm_abi != ARM_ABI_APCS && arm_abi != ARM_ABI_ATPCS)
3965  
3966 +/* True if we should avoid generating conditional execution instructions.  */
3967 +#define TARGET_NO_COND_EXEC            (arm_tune_marvell_f && !optimize_size)
3968 +/* Avoid most conditional instructions, but allow pairs with opposite
3969 +   conditions and the same destination.  */
3970 +#define TARGET_NO_SINGLE_COND_EXEC \
3971 +  ((arm_tune_cortex_a9 || arm_tune_marvell_f) && !optimize_size)
3972 +
3973  #define TARGET_HARD_TP                 (target_thread_pointer == TP_CP15)
3974  #define TARGET_SOFT_TP                 (target_thread_pointer == TP_SOFT)
3975  
3976 @@ -211,35 +222,43 @@
3977  /* Thumb-1 only.  */
3978  #define TARGET_THUMB1_ONLY             (TARGET_THUMB1 && !arm_arch_notm)
3979  
3980 +#define TARGET_FPA_EMU2                        (TARGET_FPA && arm_fpu_desc->rev == 2)
3981  /* The following two macros concern the ability to execute coprocessor
3982     instructions for VFPv3 or NEON.  TARGET_VFP3/TARGET_VFPD32 are currently
3983     only ever tested when we know we are generating for VFP hardware; we need
3984     to be more careful with TARGET_NEON as noted below.  */
3985  
3986  /* FPU is has the full VFPv3/NEON register file of 32 D registers.  */
3987 -#define TARGET_VFPD32 (arm_fp_model == ARM_FP_MODEL_VFP \
3988 -                      && (arm_fpu_arch == FPUTYPE_VFP3 \
3989 -                          || arm_fpu_arch == FPUTYPE_NEON))
3990 +#define TARGET_VFPD32 (TARGET_VFP && arm_arch_vfp_regs == VFP_REG_D32)
3991  
3992  /* FPU supports VFPv3 instructions.  */
3993 -#define TARGET_VFP3 (arm_fp_model == ARM_FP_MODEL_VFP \
3994 -                    && (arm_fpu_arch == FPUTYPE_VFP3D16 \
3995 -                        || TARGET_VFPD32))
3996 +#define TARGET_VFP3 (TARGET_VFP && arm_arch_vfp_rev >= 3)
3997 +
3998 +/* FPU only supports VFP single-precision instructions.  */
3999 +#define TARGET_VFP_SINGLE (TARGET_VFP && arm_arch_vfp_regs == VFP_REG_SINGLE)
4000 +
4001 +/* FPU supports VFP double-precision instructions.  */
4002 +#define TARGET_VFP_DOUBLE (TARGET_VFP && arm_arch_vfp_regs != VFP_REG_SINGLE)
4003 +
4004 +/* FPU supports half-precision floating-point with NEON element load/store.  */
4005 +#define TARGET_NEON_FP16 (TARGET_VFP && arm_arch_vfp_neon && arm_arch_vfp_fp16)
4006 +
4007 +/* FPU supports VFP half-precision floating-point.  */
4008 +#define TARGET_FP16 (TARGET_VFP && arm_arch_vfp_fp16)
4009  
4010  /* FPU supports Neon instructions.  The setting of this macro gets
4011     revealed via __ARM_NEON__ so we add extra guards upon TARGET_32BIT
4012     and TARGET_HARD_FLOAT to ensure that NEON instructions are
4013     available.  */
4014  #define TARGET_NEON (TARGET_32BIT && TARGET_HARD_FLOAT \
4015 -                    && arm_fp_model == ARM_FP_MODEL_VFP \
4016 -                    && arm_fpu_arch == FPUTYPE_NEON)
4017 +                    && TARGET_VFP && arm_arch_vfp_neon)
4018  
4019  /* "DSP" multiply instructions, eg. SMULxy.  */
4020  #define TARGET_DSP_MULTIPLY \
4021 -  (TARGET_32BIT && arm_arch5e && arm_arch_notm)
4022 +  (TARGET_32BIT && arm_arch5e && (arm_arch_notm || arm_arch7em))
4023  /* Integer SIMD instructions, and extend-accumulate instructions.  */
4024  #define TARGET_INT_SIMD \
4025 -  (TARGET_32BIT && arm_arch6 && arm_arch_notm)
4026 +  (TARGET_32BIT && arm_arch6 && (arm_arch_notm || arm_arch7em))
4027  
4028  /* Should MOVW/MOVT be used in preference to a constant pool.  */
4029  #define TARGET_USE_MOVT (arm_arch_thumb2 && !optimize_size)
4030 @@ -289,40 +308,30 @@
4031    ARM_FP_MODEL_VFP
4032  };
4033  
4034 -extern enum arm_fp_model arm_fp_model;
4035 -
4036 -/* Which floating point hardware is available.  Also update
4037 -   fp_model_for_fpu in arm.c when adding entries to this list.  */
4038 -enum fputype
4039 -{
4040 -  /* No FP hardware.  */
4041 -  FPUTYPE_NONE,
4042 -  /* Full FPA support.  */
4043 -  FPUTYPE_FPA,
4044 -  /* Emulated FPA hardware, Issue 2 emulator (no LFM/SFM).  */
4045 -  FPUTYPE_FPA_EMU2,
4046 -  /* Emulated FPA hardware, Issue 3 emulator.  */
4047 -  FPUTYPE_FPA_EMU3,
4048 -  /* Cirrus Maverick floating point co-processor.  */
4049 -  FPUTYPE_MAVERICK,
4050 -  /* VFP.  */
4051 -  FPUTYPE_VFP,
4052 -  /* VFPv3-D16.  */
4053 -  FPUTYPE_VFP3D16,
4054 -  /* VFPv3.  */
4055 -  FPUTYPE_VFP3,
4056 -  /* Neon.  */
4057 -  FPUTYPE_NEON
4058 +enum vfp_reg_type {
4059 +    VFP_REG_D16,
4060 +    VFP_REG_D32,
4061 +    VFP_REG_SINGLE
4062  };
4063  
4064 -/* Recast the floating point class to be the floating point attribute.  */
4065 -#define arm_fpu_attr ((enum attr_fpu) arm_fpu_tune)
4066 -
4067 -/* What type of floating point to tune for */
4068 -extern enum fputype arm_fpu_tune;
4069 +extern const struct arm_fpu_desc
4070 +{
4071 +  const char *name;
4072 +  enum arm_fp_model model;
4073 +  int rev;
4074 +  enum vfp_reg_type myregs;
4075 +  int neon;
4076 +  int fp16;
4077 +} *arm_fpu_desc;
4078 +
4079 +#define arm_fp_model arm_fpu_desc->model
4080 +#define arm_arch_vfp_rev arm_fpu_desc->rev
4081 +#define arm_arch_vfp_regs arm_fpu_desc->myregs
4082 +#define arm_arch_vfp_neon arm_fpu_desc->neon
4083 +#define arm_arch_vfp_fp16 arm_fpu_desc->fp16
4084  
4085 -/* What type of floating point instructions are available */
4086 -extern enum fputype arm_fpu_arch;
4087 +/* Which floating point hardware to schedule for.  */
4088 +extern int arm_fpu_attr;
4089  
4090  enum float_abi_type
4091  {
4092 @@ -337,6 +346,21 @@
4093  #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
4094  #endif
4095  
4096 +/* Which __fp16 format to use.
4097 +   The enumeration values correspond to the numbering for the
4098 +   Tag_ABI_FP_16bit_format attribute.
4099 + */
4100 +enum arm_fp16_format_type
4101 +{
4102 +  ARM_FP16_FORMAT_NONE = 0,
4103 +  ARM_FP16_FORMAT_IEEE = 1,
4104 +  ARM_FP16_FORMAT_ALTERNATIVE = 2
4105 +};
4106 +
4107 +extern enum arm_fp16_format_type arm_fp16_format;
4108 +#define LARGEST_EXPONENT_IS_NORMAL(bits) \
4109 +    ((bits) == 16 && arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE)
4110 +
4111  /* Which ABI to use.  */
4112  enum arm_abi_type
4113  {
4114 @@ -383,12 +407,18 @@
4115  /* Nonzero if instructions not present in the 'M' profile can be used.  */
4116  extern int arm_arch_notm;
4117  
4118 +/* Nonzero if instructions present in ARMv7E-M can be used.  */
4119 +extern int arm_arch7em;
4120 +
4121  /* Nonzero if this chip can benefit from load scheduling.  */
4122  extern int arm_ld_sched;
4123  
4124  /* Nonzero if generating thumb code.  */
4125  extern int thumb_code;
4126  
4127 +/* Nonzero if generating Janus2 code. */
4128 +extern int janus2_code;
4129 +
4130  /* Nonzero if this chip is a StrongARM.  */
4131  extern int arm_tune_strongarm;
4132  
4133 @@ -404,6 +434,9 @@
4134  /* Nonzero if tuning for XScale.  */
4135  extern int arm_tune_xscale;
4136  
4137 +/* Nonzero if tuning for Marvell Feroceon.  */
4138 +extern int arm_tune_marvell_f;
4139 +
4140  /* Nonzero if tuning for stores via the write buffer.  */
4141  extern int arm_tune_wbuf;
4142  
4143 @@ -423,6 +456,10 @@
4144  /* Nonzero if chip supports integer division instruction.  */
4145  extern int arm_arch_hwdiv;
4146  
4147 +/* Nonzero if we should minimize interrupt latency of the
4148 +   generated code.  */
4149 +extern int low_irq_latency;
4150 +
4151  #ifndef TARGET_DEFAULT
4152  #define TARGET_DEFAULT  (MASK_APCS_FRAME)
4153  #endif
4154 @@ -757,12 +794,11 @@
4155         fixed_regs[regno] = call_used_regs[regno] = 1;          \
4156      }                                                          \
4157                                                                 \
4158 -  if (TARGET_THUMB && optimize_size)                           \
4159 -    {                                                          \
4160 -      /* When optimizing for size, it's better not to use      \
4161 -        the HI regs, because of the overhead of stacking       \
4162 -        them.  */                                              \
4163 -      /* ??? Is this still true for thumb2?  */                        \
4164 +  if (TARGET_THUMB1 && optimize_size)                          \
4165 +    {                                                           \
4166 +      /* When optimizing for size on Thumb-1, it's better not  \
4167 +        to use the HI regs, because of the overhead of         \
4168 +        stacking them.  */                                      \
4169        for (regno = FIRST_HI_REGNUM;                            \
4170            regno <= LAST_HI_REGNUM; ++regno)                    \
4171         fixed_regs[regno] = call_used_regs[regno] = 1;          \
4172 @@ -881,6 +917,9 @@
4173  /* The number of (integer) argument register available.  */
4174  #define NUM_ARG_REGS           4
4175  
4176 +/* And similarly for the VFP.  */
4177 +#define NUM_VFP_ARG_REGS       16
4178 +
4179  /* Return the register number of the N'th (integer) argument.  */
4180  #define ARG_REGISTER(N)        (N - 1)
4181  
4182 @@ -1059,7 +1098,7 @@
4183    (GET_MODE_CLASS (MODE1) == GET_MODE_CLASS (MODE2))
4184  
4185  #define VALID_IWMMXT_REG_MODE(MODE) \
4186 - (arm_vector_mode_supported_p (MODE) || (MODE) == DImode)
4187 + (arm_vector_mode_supported_p (MODE) || (MODE) == DImode || (MODE) == SImode)
4188  
4189  /* Modes valid for Neon D registers.  */
4190  #define VALID_NEON_DREG_MODE(MODE) \
4191 @@ -1230,11 +1269,14 @@
4192       || reg_classes_intersect_p (VFP_REGS, (CLASS))    \
4193     : 0)
4194  
4195 -/* We need to define this for LO_REGS on thumb.  Otherwise we can end up
4196 -   using r0-r4 for function arguments, r7 for the stack frame and don't
4197 -   have enough left over to do doubleword arithmetic.  */
4198 +/* We need to define this for LO_REGS on Thumb-1.  Otherwise we can end up
4199 +   using r0-r4 for function arguments, r7 for the stack frame and don't have
4200 +   enough left over to do doubleword arithmetic.  For Thumb-2 all the
4201 +   potentially problematic instructions accept high registers so this is not
4202 +   necessary.  Care needs to be taken to avoid adding new Thumb-2 patterns
4203 +   that require many low registers.  */
4204  #define CLASS_LIKELY_SPILLED_P(CLASS)  \
4205 -    ((TARGET_THUMB && (CLASS) == LO_REGS)      \
4206 +    ((TARGET_THUMB1 && (CLASS) == LO_REGS)     \
4207       || (CLASS) == CC_REG)
4208  
4209  /* The class value for index registers, and the one for base regs.  */
4210 @@ -1245,7 +1287,7 @@
4211     when addressing quantities in QI or HI mode; if we don't know the
4212     mode, then we must be conservative.  */
4213  #define MODE_BASE_REG_CLASS(MODE)                                      \
4214 -    (TARGET_32BIT ? CORE_REGS :                                        \
4215 +    (TARGET_32BIT ? (TARGET_THUMB2 ? LO_REGS : CORE_REGS) :                                    \
4216       (((MODE) == SImode) ? BASE_REGS : LO_REGS))
4217  
4218  /* For Thumb we can not support SP+reg addressing, so we return LO_REGS
4219 @@ -1346,6 +1388,9 @@
4220           else if (TARGET_MAVERICK && TARGET_HARD_FLOAT)                   \
4221             /* Need to be careful, -256 is not a valid offset.  */         \
4222             low = val >= 0 ? (val & 0xff) : -((-val) & 0xff);              \
4223 +         else if (TARGET_REALLY_IWMMXT && MODE == SImode)                 \
4224 +           /* Need to be careful, -1024 is not a valid offset.  */        \
4225 +           low = val >= 0 ? (val & 0x3ff) : -((-val) & 0x3ff);            \
4226           else if (MODE == SImode                                          \
4227                    || (MODE == SFmode && TARGET_SOFT_FLOAT)                \
4228                    || ((MODE == HImode || MODE == QImode) && ! arm_arch4)) \
4229 @@ -1416,13 +1461,17 @@
4230  /* If defined, gives a class of registers that cannot be used as the
4231     operand of a SUBREG that changes the mode of the object illegally.  */
4232  
4233 -/* Moves between FPA_REGS and GENERAL_REGS are two memory insns.  */
4234 +/* Moves between FPA_REGS and GENERAL_REGS are two memory insns.
4235 +   Moves between VFP_REGS and GENERAL_REGS are a single insn, but
4236 +   it is typically more expensive than a single memory access.  We set
4237 +   the cost to less than two memory accesses so that floating
4238 +   point to integer conversion does not go through memory.  */
4239  #define REGISTER_MOVE_COST(MODE, FROM, TO)             \
4240    (TARGET_32BIT ?                                              \
4241     ((FROM) == FPA_REGS && (TO) != FPA_REGS ? 20 :      \
4242      (FROM) != FPA_REGS && (TO) == FPA_REGS ? 20 :      \
4243 -    IS_VFP_CLASS (FROM) && !IS_VFP_CLASS (TO) ? 10 :   \
4244 -    !IS_VFP_CLASS (FROM) && IS_VFP_CLASS (TO) ? 10 :   \
4245 +    IS_VFP_CLASS (FROM) && !IS_VFP_CLASS (TO) ? 15 :   \
4246 +    !IS_VFP_CLASS (FROM) && IS_VFP_CLASS (TO) ? 15 :   \
4247      (FROM) == IWMMXT_REGS && (TO) != IWMMXT_REGS ? 4 :  \
4248      (FROM) != IWMMXT_REGS && (TO) == IWMMXT_REGS ? 4 :  \
4249      (FROM) == IWMMXT_GR_REGS || (TO) == IWMMXT_GR_REGS ? 20 :  \
4250 @@ -1491,9 +1540,10 @@
4251  
4252  /* Define how to find the value returned by a library function
4253     assuming the value has mode MODE.  */
4254 -#define LIBCALL_VALUE(MODE)  \
4255 -  (TARGET_32BIT && TARGET_HARD_FLOAT_ABI && TARGET_FPA                 \
4256 -   && GET_MODE_CLASS (MODE) == MODE_FLOAT                              \
4257 +#define LIBCALL_VALUE(MODE)                                            \
4258 +  (TARGET_AAPCS_BASED ? aapcs_libcall_value (MODE)                     \
4259 +   : (TARGET_32BIT && TARGET_HARD_FLOAT_ABI && TARGET_FPA              \
4260 +      && GET_MODE_CLASS (MODE) == MODE_FLOAT)                          \
4261     ? gen_rtx_REG (MODE, FIRST_FPA_REGNUM)                              \
4262     : TARGET_32BIT && TARGET_HARD_FLOAT_ABI && TARGET_MAVERICK          \
4263       && GET_MODE_CLASS (MODE) == MODE_FLOAT                            \
4264 @@ -1502,22 +1552,16 @@
4265     ? gen_rtx_REG (MODE, FIRST_IWMMXT_REGNUM)                           \
4266     : gen_rtx_REG (MODE, ARG_REGISTER (1)))
4267  
4268 -/* Define how to find the value returned by a function.
4269 -   VALTYPE is the data type of the value (as a tree).
4270 -   If the precise function being called is known, FUNC is its FUNCTION_DECL;
4271 -   otherwise, FUNC is 0.  */
4272 -#define FUNCTION_VALUE(VALTYPE, FUNC) \
4273 -  arm_function_value (VALTYPE, FUNC);
4274 -
4275 -/* 1 if N is a possible register number for a function value.
4276 -   On the ARM, only r0 and f0 can return results.  */
4277 -/* On a Cirrus chip, mvf0 can return results.  */
4278 -#define FUNCTION_VALUE_REGNO_P(REGNO)  \
4279 -  ((REGNO) == ARG_REGISTER (1) \
4280 -   || (TARGET_32BIT && ((REGNO) == FIRST_CIRRUS_FP_REGNUM)             \
4281 -       && TARGET_HARD_FLOAT_ABI && TARGET_MAVERICK)                    \
4282 -   || ((REGNO) == FIRST_IWMMXT_REGNUM && TARGET_IWMMXT_ABI) \
4283 -   || (TARGET_32BIT && ((REGNO) == FIRST_FPA_REGNUM)                   \
4284 +/* 1 if REGNO is a possible register number for a function value.  */
4285 +#define FUNCTION_VALUE_REGNO_P(REGNO)                          \
4286 +  ((REGNO) == ARG_REGISTER (1)                                 \
4287 +   || (TARGET_AAPCS_BASED && TARGET_32BIT                      \
4288 +       && TARGET_VFP && TARGET_HARD_FLOAT                      \
4289 +       && (REGNO) == FIRST_VFP_REGNUM)                         \
4290 +   || (TARGET_32BIT && ((REGNO) == FIRST_CIRRUS_FP_REGNUM)     \
4291 +       && TARGET_HARD_FLOAT_ABI && TARGET_MAVERICK)            \
4292 +   || ((REGNO) == FIRST_IWMMXT_REGNUM && TARGET_IWMMXT_ABI)    \
4293 +   || (TARGET_32BIT && ((REGNO) == FIRST_FPA_REGNUM)           \
4294         && TARGET_HARD_FLOAT_ABI && TARGET_FPA))
4295  
4296  /* Amount of memory needed for an untyped call to save all possible return
4297 @@ -1617,9 +1661,27 @@
4298     that is in text_section.  */
4299  extern GTY(()) rtx thumb_call_via_label[14];
4300  
4301 +/* The number of potential ways of assigning to a co-processor.  */
4302 +#define ARM_NUM_COPROC_SLOTS 1
4303 +
4304 +/* Enumeration of procedure calling standard variants.  We don't really 
4305 +   support all of these yet.  */
4306 +enum arm_pcs
4307 +{
4308 +  ARM_PCS_AAPCS,       /* Base standard AAPCS.  */
4309 +  ARM_PCS_AAPCS_VFP,   /* Use VFP registers for floating point values.  */
4310 +  ARM_PCS_AAPCS_IWMMXT, /* Use iWMMXT registers for vectors.  */
4311 +  /* This must be the last AAPCS variant.  */
4312 +  ARM_PCS_AAPCS_LOCAL, /* Private call within this compilation unit.  */
4313 +  ARM_PCS_ATPCS,       /* ATPCS.  */
4314 +  ARM_PCS_APCS,                /* APCS (legacy Linux etc).  */
4315 +  ARM_PCS_UNKNOWN
4316 +};
4317 +
4318 +/* We can't define this inside a generator file because it needs enum
4319 +   machine_mode.  */
4320  /* A C type for declaring a variable that is used as the first argument of
4321 -   `FUNCTION_ARG' and other related values.  For some target machines, the
4322 -   type `int' suffices and can hold the number of bytes of argument so far.  */
4323 +   `FUNCTION_ARG' and other related values.  */
4324  typedef struct
4325  {
4326    /* This is the number of registers of arguments scanned so far.  */
4327 @@ -1628,9 +1690,33 @@
4328    int iwmmxt_nregs;
4329    int named_count;
4330    int nargs;
4331 -  int can_split;
4332 +  /* Which procedure call variant to use for this call.  */
4333 +  enum arm_pcs pcs_variant;
4334 +
4335 +  /* AAPCS related state tracking.  */
4336 +  int aapcs_arg_processed;  /* No need to lay out this argument again.  */
4337 +  int aapcs_cprc_slot;      /* Index of co-processor rules to handle
4338 +                              this argument, or -1 if using core
4339 +                              registers.  */
4340 +  int aapcs_ncrn;
4341 +  int aapcs_next_ncrn;
4342 +  rtx aapcs_reg;           /* Register assigned to this argument.  */
4343 +  int aapcs_partial;       /* How many bytes are passed in regs (if
4344 +                              split between core regs and stack.
4345 +                              Zero otherwise.  */
4346 +  int aapcs_cprc_failed[ARM_NUM_COPROC_SLOTS];
4347 +  int can_split;           /* Argument can be split between core regs
4348 +                              and the stack.  */
4349 +  /* Private data for tracking VFP register allocation */
4350 +  unsigned aapcs_vfp_regs_free;
4351 +  unsigned aapcs_vfp_reg_alloc;
4352 +  int aapcs_vfp_rcount;
4353 +  /* Can't include insn-modes.h because this header is needed before we
4354 +     generate it.  */
4355 +  int /* enum machine_mode */ aapcs_vfp_rmode;
4356  } CUMULATIVE_ARGS;
4357  
4358 +
4359  /* Define where to put the arguments to a function.
4360     Value is zero to push the argument on the stack,
4361     or a hard register in which to store the argument.
4362 @@ -1674,13 +1760,7 @@
4363     of mode MODE and data type TYPE.
4364     (TYPE is null for libcalls where that information may not be available.)  */
4365  #define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED)   \
4366 -  (CUM).nargs += 1;                                    \
4367 -  if (arm_vector_mode_supported_p (MODE)               \
4368 -      && (CUM).named_count > (CUM).nargs               \
4369 -      && TARGET_IWMMXT_ABI)                            \
4370 -    (CUM).iwmmxt_nregs += 1;                           \
4371 -  else                                                 \
4372 -    (CUM).nregs += ARM_NUM_REGS2 (MODE, TYPE)
4373 +  arm_function_arg_advance (&(CUM), (MODE), (TYPE), (NAMED))
4374  
4375  /* If defined, a C expression that gives the alignment boundary, in bits, of an
4376     argument with the specified mode and type.  If it is not defined,
4377 @@ -1692,9 +1772,11 @@
4378  
4379  /* 1 if N is a possible register number for function argument passing.
4380     On the ARM, r0-r3 are used to pass args.  */
4381 -#define FUNCTION_ARG_REGNO_P(REGNO)    \
4382 -   (IN_RANGE ((REGNO), 0, 3)           \
4383 -    || (TARGET_IWMMXT_ABI              \
4384 +#define FUNCTION_ARG_REGNO_P(REGNO)                                    \
4385 +   (IN_RANGE ((REGNO), 0, 3)                                           \
4386 +    || (TARGET_AAPCS_BASED && TARGET_VFP && TARGET_HARD_FLOAT          \
4387 +       && IN_RANGE ((REGNO), FIRST_VFP_REGNUM, FIRST_VFP_REGNUM + 15)) \
4388 +    || (TARGET_IWMMXT_ABI                                              \
4389         && IN_RANGE ((REGNO), FIRST_IWMMXT_REGNUM, FIRST_IWMMXT_REGNUM + 9)))
4390  
4391  \f
4392 @@ -2324,7 +2406,8 @@
4393  /* Try to generate sequences that don't involve branches, we can then use
4394     conditional instructions */
4395  #define BRANCH_COST(speed_p, predictable_p) \
4396 -  (TARGET_32BIT ? 4 : (optimize > 0 ? 2 : 0))
4397 +  (TARGET_32BIT ? (TARGET_THUMB2 && optimize_size ? 1 : 4) \
4398 +               : (optimize > 0 ? 2 : 0))
4399  \f
4400  /* Position Independent Code.  */
4401  /* We decide which register to use based on the compilation options and
4402 @@ -2392,6 +2475,7 @@
4403  
4404  /* The arm5 clz instruction returns 32.  */
4405  #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)  ((VALUE) = 32, 1)
4406 +#define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)  ((VALUE) = 32, 1)
4407  \f
4408  #undef  ASM_APP_OFF
4409  #define ASM_APP_OFF (TARGET_THUMB1 ? "\t.code\t16\n" : \
4410 @@ -2404,6 +2488,19 @@
4411        if (TARGET_ARM)                                  \
4412         asm_fprintf (STREAM,"\tstmfd\t%r!,{%r}\n",      \
4413                      STACK_POINTER_REGNUM, REGNO);      \
4414 +      else if (TARGET_THUMB1                           \
4415 +              && (REGNO) == STATIC_CHAIN_REGNUM)       \
4416 +       {                                               \
4417 +         /* We can't push STATIC_CHAIN_REGNUM (r12) directly with Thumb-1.
4418 +            We know that ASM_OUTPUT_REG_PUSH will be matched with
4419 +            ASM_OUTPUT_REG_POP, and that r7 isn't used by the function
4420 +            profiler, so we can use it as a scratch reg.  WARNING: This isn't
4421 +            safe in the general case!  It may be sensitive to future changes
4422 +            in final.c:profile_function.  */           \
4423 +         asm_fprintf (STREAM, "\tpush\t{r7}\n");       \
4424 +         asm_fprintf (STREAM, "\tmov\tr7, %r\n", REGNO);\
4425 +         asm_fprintf (STREAM, "\tpush\t{r7}\n");       \
4426 +       }                                               \
4427        else                                             \
4428         asm_fprintf (STREAM, "\tpush {%r}\n", REGNO);   \
4429      } while (0)
4430 @@ -2415,6 +2512,14 @@
4431        if (TARGET_ARM)                                  \
4432         asm_fprintf (STREAM, "\tldmfd\t%r!,{%r}\n",     \
4433                      STACK_POINTER_REGNUM, REGNO);      \
4434 +      else if (TARGET_THUMB1                           \
4435 +              && (REGNO) == STATIC_CHAIN_REGNUM)       \
4436 +       {                                               \
4437 +         /* See comment in ASM_OUTPUT_REG_PUSH.  */    \
4438 +         asm_fprintf (STREAM, "\tpop\t{r7}\n");        \
4439 +         asm_fprintf (STREAM, "\tmov\t%r, r7\n", REGNO);\
4440 +         asm_fprintf (STREAM, "\tpop\t{r7}\n");        \
4441 +       }                                               \
4442        else                                             \
4443         asm_fprintf (STREAM, "\tpop {%r}\n", REGNO);    \
4444      } while (0)
4445 diff -Nur a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
4446 --- a/gcc/config/arm/arm.md     2009-05-16 15:28:27.000000000 +0200
4447 +++ b/gcc/config/arm/arm.md     2010-01-25 09:50:28.985687200 +0100
4448 @@ -99,6 +99,7 @@
4449                           ; correctly for PIC usage.
4450     (UNSPEC_GOTSYM_OFF 24) ; The offset of the start of the the GOT from a
4451                           ; a given symbolic address.
4452 +   (UNSPEC_RBIT 25)      ; rbit operation.
4453    ]
4454  )
4455  
4456 @@ -131,6 +132,8 @@
4457     (VUNSPEC_WCMP_EQ  12) ; Used by the iWMMXt WCMPEQ instructions
4458     (VUNSPEC_WCMP_GTU 13) ; Used by the iWMMXt WCMPGTU instructions
4459     (VUNSPEC_WCMP_GT  14) ; Used by the iwMMXT WCMPGT instructions
4460 +   (VUNSPEC_ALIGN16  15) ; Used to force 16-byte alignment.
4461 +   (VUNSPEC_ALIGN32  16) ; Used to force 32-byte alignment.
4462     (VUNSPEC_EH_RETURN 20); Use to override the return address for exception
4463                          ; handling.
4464    ]
4465 @@ -144,6 +147,10 @@
4466  ; patterns that share the same RTL in both ARM and Thumb code.
4467  (define_attr "is_thumb" "no,yes" (const (symbol_ref "thumb_code")))
4468  
4469 +; FIX_JANUS is set to 'yes' when compiling for Janus2, it causes to
4470 +; add a nop after shifts, in order to work around a Janus2 bug
4471 +(define_attr "fix_janus" "no,yes" (const (symbol_ref "janus2_code")))
4472 +
4473  ; IS_STRONGARM is set to 'yes' when compiling for StrongARM, it affects
4474  ; scheduling decisions for the load unit and the multiplier.
4475  (define_attr "is_strongarm" "no,yes" (const (symbol_ref "arm_tune_strongarm")))
4476 @@ -158,7 +165,7 @@
4477  ; Floating Point Unit.  If we only have floating point emulation, then there
4478  ; is no point in scheduling the floating point insns.  (Well, for best
4479  ; performance we should try and group them together).
4480 -(define_attr "fpu" "none,fpa,fpe2,fpe3,maverick,vfp,vfpv3d16,vfpv3,neon"
4481 +(define_attr "fpu" "none,fpa,fpe2,fpe3,maverick,vfp"
4482    (const (symbol_ref "arm_fpu_attr")))
4483  
4484  ; LENGTH of an instruction (in bytes)
4485 @@ -185,7 +192,7 @@
4486  ;; scheduling information.
4487  
4488  (define_attr "insn"
4489 -        "mov,mvn,smulxy,smlaxy,smlalxy,smulwy,smlawx,mul,muls,mla,mlas,umull,umulls,umlal,umlals,smull,smulls,smlal,smlals,smlawy,smuad,smuadx,smlad,smladx,smusd,smusdx,smlsd,smlsdx,smmul,smmulr,smmla,umaal,smlald,smlsld,clz,mrs,msr,xtab,sdiv,udiv,other"
4490 +        "mov,mvn,and,orr,eor,smulxy,smlaxy,smlalxy,smulwy,smlawx,mul,muls,mla,mlas,umull,umulls,umlal,umlals,smull,smulls,smlal,smlals,smlawy,smuad,smuadx,smlad,smladx,smusd,smusdx,smlsd,smlsdx,smmul,smmulr,smmla,umaal,smlald,smlsld,clz,mrs,msr,xtab,sdiv,udiv,other"
4491          (const_string "other"))
4492  
4493  ; TYPE attribute is used to detect floating point instructions which, if
4494 @@ -251,8 +258,6 @@
4495  (define_attr "ldsched" "no,yes" (const (symbol_ref "arm_ld_sched")))
4496  
4497  ;; Classification of NEON instructions for scheduling purposes.
4498 -;; Do not set this attribute and the "type" attribute together in
4499 -;; any one instruction pattern.
4500  (define_attr "neon_type"
4501     "neon_int_1,\
4502     neon_int_2,\
4503 @@ -415,7 +420,7 @@
4504  
4505  (define_attr "generic_sched" "yes,no"
4506    (const (if_then_else 
4507 -          (ior (eq_attr "tune" "arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa8,cortexa9")
4508 +          (ior (eq_attr "tune" "arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa8,cortexa9,marvell_f")
4509               (eq_attr "tune_cortexr4" "yes"))
4510            (const_string "no")
4511            (const_string "yes"))))
4512 @@ -423,7 +428,7 @@
4513  (define_attr "generic_vfp" "yes,no"
4514    (const (if_then_else
4515           (and (eq_attr "fpu" "vfp")
4516 -              (eq_attr "tune" "!arm1020e,arm1022e,cortexa8,cortexa9")
4517 +              (eq_attr "tune" "!arm1020e,arm1022e,cortexa8,cortexa9,marvell_f")
4518                (eq_attr "tune_cortexr4" "no"))
4519           (const_string "yes")
4520           (const_string "no"))))
4521 @@ -437,6 +442,8 @@
4522  (include "cortex-a9.md")
4523  (include "cortex-r4.md")
4524  (include "cortex-r4f.md")
4525 +(include "marvell-f.md")
4526 +(include "marvell-f-vfp.md")
4527  (include "vfp11.md")
4528  
4529  \f
4530 @@ -472,9 +479,9 @@
4531    if (TARGET_THUMB1)
4532      {
4533        if (GET_CODE (operands[1]) != REG)
4534 -        operands[1] = force_reg (SImode, operands[1]);
4535 +        operands[1] = force_reg (DImode, operands[1]);
4536        if (GET_CODE (operands[2]) != REG)
4537 -        operands[2] = force_reg (SImode, operands[2]);
4538 +        operands[2] = force_reg (DImode, operands[2]);
4539       }
4540    "
4541  )
4542 @@ -620,10 +627,11 @@
4543     sub%?\\t%0, %1, #%n2
4544     sub%?\\t%0, %1, #%n2
4545     #"
4546 -  "TARGET_32BIT &&
4547 -   GET_CODE (operands[2]) == CONST_INT
4548 +  "TARGET_32BIT
4549 +   && GET_CODE (operands[2]) == CONST_INT
4550     && !(const_ok_for_arm (INTVAL (operands[2]))
4551 -        || const_ok_for_arm (-INTVAL (operands[2])))"
4552 +        || const_ok_for_arm (-INTVAL (operands[2])))
4553 +   && (reload_completed || !arm_eliminable_register (operands[1]))"
4554    [(clobber (const_int 0))]
4555    "
4556    arm_split_constant (PLUS, SImode, curr_insn,
4557 @@ -639,10 +647,10 @@
4558  ;; register.  Trying to reload it will always fail catastrophically,
4559  ;; so never allow those alternatives to match if reloading is needed.
4560  
4561 -(define_insn "*thumb1_addsi3"
4562 -  [(set (match_operand:SI          0 "register_operand" "=l,l,l,*rk,*hk,l,!k")
4563 -       (plus:SI (match_operand:SI 1 "register_operand" "%0,0,l,*0,*0,!k,!k")
4564 -                (match_operand:SI 2 "nonmemory_operand" "I,J,lL,*hk,*rk,!M,!O")))]
4565 +(define_insn_and_split "*thumb1_addsi3"
4566 +  [(set (match_operand:SI          0 "register_operand" "=l,l,l,*rk,*hk,l,!k,l,l")
4567 +       (plus:SI (match_operand:SI 1 "register_operand" "%0,0,l,*0,*0,!k,!k,0,l")
4568 +                (match_operand:SI 2 "nonmemory_operand" "I,J,lL,*hk,*rk,!M,!O,Pa,Pb")))]
4569    "TARGET_THUMB1"
4570    "*
4571     static const char * const asms[] = 
4572 @@ -653,7 +661,9 @@
4573       \"add\\t%0, %0, %2\",
4574       \"add\\t%0, %0, %2\",
4575       \"add\\t%0, %1, %2\",
4576 -     \"add\\t%0, %1, %2\"
4577 +     \"add\\t%0, %1, %2\",
4578 +     \"#\",
4579 +     \"#\"
4580     };
4581     if ((which_alternative == 2 || which_alternative == 6)
4582         && GET_CODE (operands[2]) == CONST_INT
4583 @@ -661,7 +671,22 @@
4584       return \"sub\\t%0, %1, #%n2\";
4585     return asms[which_alternative];
4586    "
4587 -  [(set_attr "length" "2")]
4588 +  "&& reload_completed && CONST_INT_P (operands[2])
4589 +   && operands[1] != stack_pointer_rtx
4590 +   && (INTVAL (operands[2]) > 255 || INTVAL (operands[2]) < -255)"
4591 +  [(set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))
4592 +   (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 3)))]
4593 +  {
4594 +    HOST_WIDE_INT offset = INTVAL (operands[2]);
4595 +    if (offset > 255)
4596 +      offset = 255;
4597 +    else if (offset < -255)
4598 +      offset = -255;
4599 +    
4600 +    operands[3] = GEN_INT (offset);
4601 +    operands[2] = GEN_INT (INTVAL (operands[2]) - offset);
4602 +  }
4603 +  [(set_attr "length" "2,2,2,2,2,2,2,4,4")]
4604  )
4605  
4606  ;; Reloading and elimination of the frame pointer can
4607 @@ -854,7 +879,11 @@
4608    [(set_attr "conds" "use")
4609     (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "")
4610                       (const_string "alu_shift")
4611 -                     (const_string "alu_shift_reg")))]
4612 +                      (const_string "alu_shift_reg")))
4613 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
4614 +                                             (eq_attr "fix_janus" "yes"))
4615 +                                        (const_int 8)
4616 +                                        (const_int 4)))]
4617  )
4618  
4619  (define_insn "*addsi3_carryin_alt1"
4620 @@ -938,7 +967,7 @@
4621    [(set (match_operand:DF          0 "s_register_operand" "")
4622         (plus:DF (match_operand:DF 1 "s_register_operand" "")
4623                  (match_operand:DF 2 "arm_float_add_operand" "")))]
4624 -  "TARGET_32BIT && TARGET_HARD_FLOAT"
4625 +  "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE"
4626    "
4627    if (TARGET_MAVERICK
4628        && !cirrus_fp_register (operands[2], DFmode))
4629 @@ -1176,7 +1205,7 @@
4630    [(set (match_operand:DF           0 "s_register_operand" "")
4631         (minus:DF (match_operand:DF 1 "arm_float_rhs_operand" "")
4632                   (match_operand:DF 2 "arm_float_rhs_operand" "")))]
4633 -  "TARGET_32BIT && TARGET_HARD_FLOAT"
4634 +  "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE"
4635    "
4636    if (TARGET_MAVERICK)
4637      {
4638 @@ -1332,6 +1361,49 @@
4639     (set_attr "predicable" "yes")]
4640  )
4641  
4642 +; The combiner cannot combine the first and last insns in the
4643 +; following sequence because of the intervening insn, so help the
4644 +; combiner with this splitter.  The combiner does attempt to split
4645 +; this particular combination but does not know this exact split.
4646 +; Note that the combiner puts the constant at the outermost operation
4647 +; as a part of canonicalization.
4648 +;
4649 +; mul r3, r2, r1
4650 +; <add/sub> r3, r3, <constant>
4651 +; add r3, r3, r4
4652 +
4653 +(define_split
4654 +  [(set (match_operand:SI 0 "s_register_operand" "")
4655 +       (match_operator:SI 1 "plusminus_operator"
4656 +        [(plus:SI (mult:SI (match_operand:SI 2 "s_register_operand" "")
4657 +                           (match_operand:SI 3 "s_register_operand" ""))
4658 +                  (match_operand:SI 4 "s_register_operand" ""))
4659 +         (match_operand:SI 5 "arm_immediate_operand" "")]))]
4660 +  "TARGET_32BIT"
4661 +  [(set (match_dup 0)
4662 +       (plus:SI (mult:SI (match_dup 2) (match_dup 3))
4663 +                (match_dup 4)))
4664 +   (set (match_dup 0)
4665 +       (match_op_dup:SI 1 [(match_dup 0) (match_dup 5)]))]
4666 +  "")
4667 +
4668 +; Likewise for MLS.  MLS is available only on select architectures.
4669 +
4670 +(define_split
4671 +  [(set (match_operand:SI 0 "s_register_operand" "")
4672 +       (match_operator:SI 1 "plusminus_operator"
4673 +        [(minus:SI (match_operand:SI 2 "s_register_operand" "")
4674 +                   (mult:SI (match_operand:SI 3 "s_register_operand" "")
4675 +                            (match_operand:SI 4 "s_register_operand" "")))
4676 +         (match_operand:SI 5 "arm_immediate_operand" "")]))]
4677 +  "TARGET_32BIT && arm_arch_thumb2"
4678 +  [(set (match_dup 0)
4679 +       (minus:SI (match_dup 2)
4680 +                 (mult:SI (match_dup 3) (match_dup 4))))
4681 +   (set (match_dup 0)
4682 +       (match_op_dup:SI 1 [(match_dup 0) (match_dup 5)]))]
4683 +  "")
4684 +
4685  (define_insn "*mulsi3addsi_compare0"
4686    [(set (reg:CC_NOOV CC_REGNUM)
4687         (compare:CC_NOOV
4688 @@ -1713,7 +1785,7 @@
4689    [(set (match_operand:DF          0 "s_register_operand" "")
4690         (mult:DF (match_operand:DF 1 "s_register_operand" "")
4691                  (match_operand:DF 2 "arm_float_rhs_operand" "")))]
4692 -  "TARGET_32BIT && TARGET_HARD_FLOAT"
4693 +  "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE"
4694    "
4695    if (TARGET_MAVERICK
4696        && !cirrus_fp_register (operands[2], DFmode))
4697 @@ -1733,7 +1805,7 @@
4698    [(set (match_operand:DF 0 "s_register_operand" "")
4699         (div:DF (match_operand:DF 1 "arm_float_rhs_operand" "")
4700                 (match_operand:DF 2 "arm_float_rhs_operand" "")))]
4701 -  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)"
4702 +  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP_DOUBLE)"
4703    "")
4704  \f
4705  ;; Modulo insns
4706 @@ -1960,6 +2032,7 @@
4707    DONE;
4708    "
4709    [(set_attr "length" "4,4,16")
4710 +   (set_attr "insn" "and")
4711     (set_attr "predicable" "yes")]
4712  )
4713  
4714 @@ -1969,7 +2042,8 @@
4715                 (match_operand:SI 2 "register_operand" "l")))]
4716    "TARGET_THUMB1"
4717    "and\\t%0, %0, %2"
4718 -  [(set_attr "length" "2")]
4719 +  [(set_attr "length" "2")
4720 +   (set_attr "insn" "and")]
4721  )
4722  
4723  (define_insn "*andsi3_compare0"
4724 @@ -1984,7 +2058,8 @@
4725    "@
4726     and%.\\t%0, %1, %2
4727     bic%.\\t%0, %1, #%B2"
4728 -  [(set_attr "conds" "set")]
4729 +  [(set_attr "conds" "set")
4730 +   (set_attr "insn" "and,*")]
4731  )
4732  
4733  (define_insn "*andsi3_compare0_scratch"
4734 @@ -2280,7 +2355,7 @@
4735           }
4736        }
4737  
4738 -    target = operands[0];
4739 +    target = copy_rtx (operands[0]);
4740      /* Avoid using a subreg as a subtarget, and avoid writing a paradoxical 
4741         subreg as the final target.  */
4742      if (GET_CODE (target) == SUBREG)
4743 @@ -2528,7 +2603,11 @@
4744     (set_attr "shift" "2")
4745     (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "")
4746                       (const_string "alu_shift")
4747 -                     (const_string "alu_shift_reg")))]
4748 +                      (const_string "alu_shift_reg")))
4749 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
4750 +                                             (eq_attr "fix_janus" "yes"))
4751 +                                        (const_int 8)
4752 +                                        (const_int 4)))]
4753  )
4754  
4755  (define_insn "*andsi_notsi_si_compare0"
4756 @@ -2576,6 +2655,7 @@
4757     orr%?\\t%Q0, %Q1, %2
4758     #"
4759    [(set_attr "length" "4,8")
4760 +   (set_attr "insn" "orr")
4761     (set_attr "predicable" "yes")]
4762  )
4763  
4764 @@ -2638,7 +2718,8 @@
4765                 (match_operand:SI 2 "register_operand" "l")))]
4766    "TARGET_THUMB1"
4767    "orr\\t%0, %0, %2"
4768 -  [(set_attr "length" "2")]
4769 +  [(set_attr "length" "2")
4770 +   (set_attr "insn" "orr")]
4771  )
4772  
4773  (define_peephole2
4774 @@ -2663,7 +2744,8 @@
4775         (ior:SI (match_dup 1) (match_dup 2)))]
4776    "TARGET_32BIT"
4777    "orr%.\\t%0, %1, %2"
4778 -  [(set_attr "conds" "set")]
4779 +  [(set_attr "conds" "set")
4780 +   (set_attr "insn" "orr")]
4781  )
4782  
4783  (define_insn "*iorsi3_compare0_scratch"
4784 @@ -2674,7 +2756,8 @@
4785     (clobber (match_scratch:SI 0 "=r"))]
4786    "TARGET_32BIT"
4787    "orr%.\\t%0, %1, %2"
4788 -  [(set_attr "conds" "set")]
4789 +  [(set_attr "conds" "set")
4790 +   (set_attr "insn" "orr")]
4791  )
4792  
4793  (define_insn "xordi3"
4794 @@ -2697,7 +2780,8 @@
4795     eor%?\\t%Q0, %Q1, %2
4796     #"
4797    [(set_attr "length" "4,8")
4798 -   (set_attr "predicable" "yes")]
4799 +   (set_attr "predicable" "yes")
4800 +   (set_attr "insn" "eor")]
4801  )
4802  
4803  (define_insn "*xordi_sesidi_di"
4804 @@ -2728,7 +2812,8 @@
4805                 (match_operand:SI 2 "arm_rhs_operand" "rI")))]
4806    "TARGET_32BIT"
4807    "eor%?\\t%0, %1, %2"
4808 -  [(set_attr "predicable" "yes")]
4809 +  [(set_attr "predicable" "yes")
4810 +   (set_attr "insn" "eor")]
4811  )
4812  
4813  (define_insn "*thumb1_xorsi3"
4814 @@ -2737,7 +2822,8 @@
4815                 (match_operand:SI 2 "register_operand" "l")))]
4816    "TARGET_THUMB1"
4817    "eor\\t%0, %0, %2"
4818 -  [(set_attr "length" "2")]
4819 +  [(set_attr "length" "2")
4820 +   (set_attr "insn" "eor")]
4821  )
4822  
4823  (define_insn "*xorsi3_compare0"
4824 @@ -2749,7 +2835,8 @@
4825         (xor:SI (match_dup 1) (match_dup 2)))]
4826    "TARGET_32BIT"
4827    "eor%.\\t%0, %1, %2"
4828 -  [(set_attr "conds" "set")]
4829 +  [(set_attr "conds" "set")
4830 +   (set_attr "insn" "eor")]
4831  )
4832  
4833  (define_insn "*xorsi3_compare0_scratch"
4834 @@ -2906,7 +2993,7 @@
4835          (smax:SI (match_operand:SI 1 "s_register_operand" "")
4836                   (match_operand:SI 2 "arm_rhs_operand" "")))
4837      (clobber (reg:CC CC_REGNUM))])]
4838 -  "TARGET_32BIT"
4839 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
4840    "
4841    if (operands[2] == const0_rtx || operands[2] == constm1_rtx)
4842      {
4843 @@ -2933,7 +3020,8 @@
4844                  (const_int -1)))]
4845    "TARGET_32BIT"
4846    "orr%?\\t%0, %1, %1, asr #31"
4847 -  [(set_attr "predicable" "yes")]
4848 +  [(set_attr "predicable" "yes")
4849 +   (set_attr "insn" "orr")]
4850  )
4851  
4852  (define_insn "*arm_smax_insn"
4853 @@ -2941,7 +3029,7 @@
4854         (smax:SI (match_operand:SI 1 "s_register_operand"  "%0,?r")
4855                  (match_operand:SI 2 "arm_rhs_operand"    "rI,rI")))
4856     (clobber (reg:CC CC_REGNUM))]
4857 -  "TARGET_ARM"
4858 +  "TARGET_ARM && !TARGET_NO_COND_EXEC"
4859    "@
4860     cmp\\t%1, %2\;movlt\\t%0, %2
4861     cmp\\t%1, %2\;movge\\t%0, %1\;movlt\\t%0, %2"
4862 @@ -2955,7 +3043,7 @@
4863          (smin:SI (match_operand:SI 1 "s_register_operand" "")
4864                   (match_operand:SI 2 "arm_rhs_operand" "")))
4865      (clobber (reg:CC CC_REGNUM))])]
4866 -  "TARGET_32BIT"
4867 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
4868    "
4869    if (operands[2] == const0_rtx)
4870      {
4871 @@ -2973,7 +3061,8 @@
4872                  (const_int 0)))]
4873    "TARGET_32BIT"
4874    "and%?\\t%0, %1, %1, asr #31"
4875 -  [(set_attr "predicable" "yes")]
4876 +  [(set_attr "predicable" "yes")
4877 +   (set_attr "insn" "and")]
4878  )
4879  
4880  (define_insn "*arm_smin_insn"
4881 @@ -2981,7 +3070,7 @@
4882         (smin:SI (match_operand:SI 1 "s_register_operand" "%0,?r")
4883                  (match_operand:SI 2 "arm_rhs_operand" "rI,rI")))
4884     (clobber (reg:CC CC_REGNUM))]
4885 -  "TARGET_ARM"
4886 +  "TARGET_ARM  && !TARGET_NO_COND_EXEC"
4887    "@
4888     cmp\\t%1, %2\;movge\\t%0, %2
4889     cmp\\t%1, %2\;movlt\\t%0, %1\;movge\\t%0, %2"
4890 @@ -2995,7 +3084,7 @@
4891          (umax:SI (match_operand:SI 1 "s_register_operand" "")
4892                   (match_operand:SI 2 "arm_rhs_operand" "")))
4893      (clobber (reg:CC CC_REGNUM))])]
4894 -  "TARGET_32BIT"
4895 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
4896    ""
4897  )
4898  
4899 @@ -3004,7 +3093,7 @@
4900         (umax:SI (match_operand:SI 1 "s_register_operand" "0,r,?r")
4901                  (match_operand:SI 2 "arm_rhs_operand" "rI,0,rI")))
4902     (clobber (reg:CC CC_REGNUM))]
4903 -  "TARGET_ARM"
4904 +  "TARGET_ARM  && !TARGET_NO_COND_EXEC"
4905    "@
4906     cmp\\t%1, %2\;movcc\\t%0, %2
4907     cmp\\t%1, %2\;movcs\\t%0, %1
4908 @@ -3019,7 +3108,7 @@
4909          (umin:SI (match_operand:SI 1 "s_register_operand" "")
4910                   (match_operand:SI 2 "arm_rhs_operand" "")))
4911      (clobber (reg:CC CC_REGNUM))])]
4912 -  "TARGET_32BIT"
4913 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
4914    ""
4915  )
4916  
4917 @@ -3028,7 +3117,7 @@
4918         (umin:SI (match_operand:SI 1 "s_register_operand" "0,r,?r")
4919                  (match_operand:SI 2 "arm_rhs_operand" "rI,0,rI")))
4920     (clobber (reg:CC CC_REGNUM))]
4921 -  "TARGET_ARM"
4922 +  "TARGET_ARM && !TARGET_NO_COND_EXEC"
4923    "@
4924     cmp\\t%1, %2\;movcs\\t%0, %2
4925     cmp\\t%1, %2\;movcc\\t%0, %1
4926 @@ -3043,7 +3132,7 @@
4927          [(match_operand:SI 1 "s_register_operand" "r")
4928           (match_operand:SI 2 "s_register_operand" "r")]))
4929     (clobber (reg:CC CC_REGNUM))]
4930 -  "TARGET_32BIT"
4931 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
4932    "*
4933    operands[3] = gen_rtx_fmt_ee (minmax_code (operands[3]), SImode,
4934                                 operands[1], operands[2]);
4935 @@ -3163,11 +3252,23 @@
4936    [(set (match_operand:SI            0 "register_operand" "=l,l")
4937         (ashift:SI (match_operand:SI 1 "register_operand" "l,0")
4938                    (match_operand:SI 2 "nonmemory_operand" "N,l")))]
4939 -  "TARGET_THUMB1"
4940 +  "TARGET_THUMB1 && !janus2_code"
4941    "lsl\\t%0, %1, %2"
4942    [(set_attr "length" "2")]
4943  )
4944  
4945 +(define_insn "*thumb1_ashlsi3_janus2"
4946 +  [(set (match_operand:SI            0 "register_operand" "=l,l")
4947 +        (ashift:SI (match_operand:SI 1 "register_operand" "l,0")
4948 +                   (match_operand:SI 2 "nonmemory_operand" "N,l")))]
4949 +  "TARGET_THUMB1 && janus2_code"
4950 +  "@
4951 +  lsl\\t%0, %1, %2
4952 +  lsl\\t%0, %1, %2\;nop"
4953 +  [(set_attr "length" "2,4")]
4954 +)
4955 +
4956 +
4957  (define_expand "ashrdi3"
4958    [(set (match_operand:DI              0 "s_register_operand" "")
4959          (ashiftrt:DI (match_operand:DI 1 "s_register_operand" "")
4960 @@ -3200,6 +3301,7 @@
4961    "TARGET_32BIT"
4962    "movs\\t%R0, %R1, asr #1\;mov\\t%Q0, %Q1, rrx"
4963    [(set_attr "conds" "clob")
4964 +   (set_attr "insn" "mov")
4965     (set_attr "length" "8")]
4966  )
4967  
4968 @@ -3219,11 +3321,22 @@
4969    [(set (match_operand:SI              0 "register_operand" "=l,l")
4970         (ashiftrt:SI (match_operand:SI 1 "register_operand" "l,0")
4971                      (match_operand:SI 2 "nonmemory_operand" "N,l")))]
4972 -  "TARGET_THUMB1"
4973 +  "TARGET_THUMB1 && !janus2_code"
4974    "asr\\t%0, %1, %2"
4975    [(set_attr "length" "2")]
4976  )
4977  
4978 +(define_insn "*thumb1_ashrsi3_janus2"
4979 +  [(set (match_operand:SI              0 "register_operand" "=l,l")
4980 +        (ashiftrt:SI (match_operand:SI 1 "register_operand" "l,0")
4981 +                     (match_operand:SI 2 "nonmemory_operand" "N,l")))]
4982 +  "TARGET_THUMB1 && janus2_code"
4983 +  "@
4984 +  asr\\t%0, %1, %2
4985 +  asr\\t%0, %1, %2\;nop"
4986 +  [(set_attr "length" "2,4")]
4987 +)
4988 +
4989  (define_expand "lshrdi3"
4990    [(set (match_operand:DI              0 "s_register_operand" "")
4991          (lshiftrt:DI (match_operand:DI 1 "s_register_operand" "")
4992 @@ -3256,6 +3369,7 @@
4993    "TARGET_32BIT"
4994    "movs\\t%R0, %R1, lsr #1\;mov\\t%Q0, %Q1, rrx"
4995    [(set_attr "conds" "clob")
4996 +   (set_attr "insn" "mov")
4997     (set_attr "length" "8")]
4998  )
4999  
5000 @@ -3278,11 +3392,22 @@
5001    [(set (match_operand:SI              0 "register_operand" "=l,l")
5002         (lshiftrt:SI (match_operand:SI 1 "register_operand" "l,0")
5003                      (match_operand:SI 2 "nonmemory_operand" "N,l")))]
5004 -  "TARGET_THUMB1"
5005 +  "TARGET_THUMB1 && !janus2_code"
5006    "lsr\\t%0, %1, %2"
5007    [(set_attr "length" "2")]
5008  )
5009  
5010 +(define_insn "*thumb1_lshrsi3_janus2"
5011 +  [(set (match_operand:SI              0 "register_operand" "=l,l")
5012 +        (lshiftrt:SI (match_operand:SI 1 "register_operand" "l,0")
5013 +                     (match_operand:SI 2 "nonmemory_operand" "N,l")))]
5014 +  "TARGET_THUMB1 && janus2_code"
5015 +  "@
5016 +  lsr\\t%0, %1, %2
5017 +  lsr\\t%0, %1, %2; nop"
5018 +  [(set_attr "length" "2,4")]
5019 +)
5020 +
5021  (define_expand "rotlsi3"
5022    [(set (match_operand:SI              0 "s_register_operand" "")
5023         (rotatert:SI (match_operand:SI 1 "s_register_operand" "")
5024 @@ -3324,11 +3449,20 @@
5025    [(set (match_operand:SI              0 "register_operand" "=l")
5026         (rotatert:SI (match_operand:SI 1 "register_operand" "0")
5027                      (match_operand:SI 2 "register_operand" "l")))]
5028 -  "TARGET_THUMB1"
5029 +  "TARGET_THUMB1 && !janus2_code"
5030    "ror\\t%0, %0, %2"
5031    [(set_attr "length" "2")]
5032  )
5033  
5034 +(define_insn "*thumb1_rotrsi3_janus2"
5035 +  [(set (match_operand:SI              0 "register_operand" "=l")
5036 +        (rotatert:SI (match_operand:SI 1 "register_operand" "0")
5037 +                     (match_operand:SI 2 "register_operand" "l")))]
5038 +  "TARGET_THUMB1 && janus2_code"
5039 +  "ror\\t%0, %0, %2; nop"
5040 +  [(set_attr "length" "4")]
5041 +)
5042 +
5043  (define_insn "*arm_shiftsi3"
5044    [(set (match_operand:SI   0 "s_register_operand" "=r")
5045         (match_operator:SI  3 "shift_operator"
5046 @@ -3340,7 +3474,11 @@
5047     (set_attr "shift" "1")
5048     (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
5049                       (const_string "alu_shift")
5050 -                     (const_string "alu_shift_reg")))]
5051 +                      (const_string "alu_shift_reg")))
5052 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
5053 +                                             (eq_attr "fix_janus" "yes"))
5054 +                                        (const_int 8)
5055 +                                        (const_int 4)))]
5056  )
5057  
5058  (define_insn "*shiftsi3_compare0"
5059 @@ -3357,7 +3495,11 @@
5060     (set_attr "shift" "1")
5061     (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
5062                       (const_string "alu_shift")
5063 -                     (const_string "alu_shift_reg")))]
5064 +                      (const_string "alu_shift_reg")))
5065 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
5066 +                                             (eq_attr "fix_janus" "yes"))
5067 +                                        (const_int 8)
5068 +                                        (const_int 4)))]
5069  )
5070  
5071  (define_insn "*shiftsi3_compare0_scratch"
5072 @@ -3370,7 +3512,11 @@
5073    "TARGET_32BIT"
5074    "* return arm_output_shift(operands, 1);"
5075    [(set_attr "conds" "set")
5076 -   (set_attr "shift" "1")]
5077 +   (set_attr "shift" "1")
5078 +   (set (attr "length") (if_then_else (and (match_operand 2 "s_register_operand" "")
5079 +                                           (eq_attr "fix_janus" "yes"))
5080 +                                      (const_int 8)
5081 +                                      (const_int 4)))]
5082  )
5083  
5084  (define_insn "*arm_notsi_shiftsi"
5085 @@ -3382,9 +3528,14 @@
5086    "mvn%?\\t%0, %1%S3"
5087    [(set_attr "predicable" "yes")
5088     (set_attr "shift" "1")
5089 +   (set_attr "insn" "mvn")
5090     (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
5091                       (const_string "alu_shift")
5092 -                     (const_string "alu_shift_reg")))]
5093 +                      (const_string "alu_shift_reg")))
5094 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
5095 +                                             (eq_attr "fix_janus" "yes"))
5096 +                                        (const_int 8)
5097 +                                        (const_int 4)))]
5098  )
5099  
5100  (define_insn "*arm_notsi_shiftsi_compare0"
5101 @@ -3399,9 +3550,14 @@
5102    "mvn%.\\t%0, %1%S3"
5103    [(set_attr "conds" "set")
5104     (set_attr "shift" "1")
5105 +   (set_attr "insn" "mvn")
5106     (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
5107                       (const_string "alu_shift")
5108 -                     (const_string "alu_shift_reg")))]
5109 +                      (const_string "alu_shift_reg")))
5110 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
5111 +                                             (eq_attr "fix_janus" "yes"))
5112 +                                        (const_int 8)
5113 +                                        (const_int 4)))]
5114  )
5115  
5116  (define_insn "*arm_not_shiftsi_compare0_scratch"
5117 @@ -3415,9 +3571,14 @@
5118    "mvn%.\\t%0, %1%S3"
5119    [(set_attr "conds" "set")
5120     (set_attr "shift" "1")
5121 +   (set_attr "insn" "mvn")
5122     (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
5123                       (const_string "alu_shift")
5124 -                     (const_string "alu_shift_reg")))]
5125 +                      (const_string "alu_shift_reg")))
5126 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
5127 +                                             (eq_attr "fix_janus" "yes"))
5128 +                                        (const_int 8)
5129 +                                        (const_int 4)))]
5130  )
5131  
5132  ;; We don't really have extzv, but defining this using shifts helps
5133 @@ -3550,12 +3711,12 @@
5134  (define_expand "negdf2"
5135    [(set (match_operand:DF         0 "s_register_operand" "")
5136         (neg:DF (match_operand:DF 1 "s_register_operand" "")))]
5137 -  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)"
5138 +  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP_DOUBLE)"
5139    "")
5140  
5141  ;; abssi2 doesn't really clobber the condition codes if a different register
5142  ;; is being set.  To keep things simple, assume during rtl manipulations that
5143 -;; it does, but tell the final scan operator the truth.  Similarly for
5144 +;; it does, and the splitter will eliminate it.  Similarly for
5145  ;; (neg (abs...))
5146  
5147  (define_expand "abssi2"
5148 @@ -3567,22 +3728,28 @@
5149    "
5150    if (TARGET_THUMB1)
5151      operands[2] = gen_rtx_SCRATCH (SImode);
5152 +  else if (TARGET_NO_SINGLE_COND_EXEC)
5153 +    {
5154 +      emit_insn(gen_rtx_SET(VOIDmode, operands[0],
5155 +                           gen_rtx_ABS(SImode, operands[1])));
5156 +      DONE;
5157 +    }
5158    else
5159      operands[2] = gen_rtx_REG (CCmode, CC_REGNUM);
5160  ")
5161  
5162  (define_insn "*arm_abssi2"
5163 -  [(set (match_operand:SI 0 "s_register_operand" "=r,&r")
5164 -       (abs:SI (match_operand:SI 1 "s_register_operand" "0,r")))
5165 +  [(set (match_operand:SI         0 "s_register_operand" "=r")
5166 +       (abs:SI (match_operand:SI 1 "s_register_operand" "r")))
5167     (clobber (reg:CC CC_REGNUM))]
5168 -  "TARGET_ARM"
5169 -  "@
5170 -   cmp\\t%0, #0\;rsblt\\t%0, %0, #0
5171 -   eor%?\\t%0, %1, %1, asr #31\;sub%?\\t%0, %0, %1, asr #31"
5172 -  [(set_attr "conds" "clob,*")
5173 -   (set_attr "shift" "1")
5174 +  "TARGET_32BIT && !TARGET_NO_SINGLE_COND_EXEC"
5175 +  "#"
5176 +  [(set_attr "shift" "1")
5177     ;; predicable can't be set based on the variant, so left as no
5178 -   (set_attr "length" "8")]
5179 +   (set (attr "length")
5180 +       (if_then_else (eq_attr "is_thumb" "yes")
5181 +                     (const_int 10)
5182 +                     (const_int 8)))]
5183  )
5184  
5185  (define_insn_and_split "*thumb1_abssi2"
5186 @@ -3600,17 +3767,17 @@
5187  )
5188  
5189  (define_insn "*arm_neg_abssi2"
5190 -  [(set (match_operand:SI 0 "s_register_operand" "=r,&r")
5191 -       (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" "0,r"))))
5192 +  [(set (match_operand:SI 0 "s_register_operand" "=r")
5193 +       (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" "r"))))
5194     (clobber (reg:CC CC_REGNUM))]
5195 -  "TARGET_ARM"
5196 -  "@
5197 -   cmp\\t%0, #0\;rsbgt\\t%0, %0, #0
5198 -   eor%?\\t%0, %1, %1, asr #31\;rsb%?\\t%0, %0, %1, asr #31"
5199 -  [(set_attr "conds" "clob,*")
5200 -   (set_attr "shift" "1")
5201 +  "TARGET_32BIT && !TARGET_NO_SINGLE_COND_EXEC"
5202 +  "#"
5203 +  [(set_attr "shift" "1")
5204     ;; predicable can't be set based on the variant, so left as no
5205 -   (set_attr "length" "8")]
5206 +   (set (attr "length")
5207 +       (if_then_else (eq_attr "is_thumb" "yes")
5208 +                     (const_int 10)
5209 +                     (const_int 8)))]
5210  )
5211  
5212  (define_insn_and_split "*thumb1_neg_abssi2"
5213 @@ -3627,6 +3794,93 @@
5214    [(set_attr "length" "6")]
5215  )
5216  
5217 +;; Simplified version for when avoiding conditional execution
5218 +(define_insn "*arm_nocond_abssi2"
5219 +  [(set (match_operand:SI         0 "s_register_operand" "=&r")
5220 +       (abs:SI (match_operand:SI 1 "s_register_operand" "r")))]
5221 +  "TARGET_32BIT && TARGET_NO_SINGLE_COND_EXEC"
5222 +  "#"
5223 +  [(set_attr "shift" "1")
5224 +   (set_attr "length" "8")
5225 +   (set_attr "predicable" "yes")]
5226 +)
5227 +
5228 +(define_insn "*arm_nocond_neg_abssi2"
5229 +  [(set (match_operand:SI         0 "s_register_operand" "=&r")
5230 +       (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" "r"))))]
5231 +  "TARGET_32BIT && TARGET_NO_SINGLE_COND_EXEC"
5232 +  "#"
5233 +  [(set_attr "shift" "1")
5234 +   (set_attr "length" "8")
5235 +   (set_attr "predicable" "yes")]
5236 +)
5237 +
5238 +;; Splitters for ABS patterns.
5239 +
5240 +(define_split
5241 +  [(set (match_operand:SI         0 "s_register_operand" "")
5242 +       (abs:SI (match_operand:SI 1 "s_register_operand" "")))
5243 +   (clobber (reg:CC CC_REGNUM))]
5244 +  "TARGET_32BIT && reload_completed && rtx_equal_p(operands[0], operands[1])"
5245 +  [(set (reg:CC CC_REGNUM) (compare:CC (match_dup 1) (const_int 0)))
5246 +   (cond_exec (lt (reg:CC CC_REGNUM) (const_int 0))
5247 +             (set (match_dup 0) (neg:SI (match_dup 1))))]
5248 +)
5249 +
5250 +(define_split
5251 +  [(set (match_operand:SI         0 "s_register_operand" "")
5252 +       (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" ""))))
5253 +   (clobber (reg:CC CC_REGNUM))]
5254 +  "TARGET_32BIT && reload_completed && rtx_equal_p(operands[0], operands[1])"
5255 +  [(set (reg:CC CC_REGNUM) (compare:CC (match_dup 1) (const_int 0)))
5256 +   (cond_exec (gt (reg:CC CC_REGNUM) (const_int 0))
5257 +             (set (match_dup 0) (neg:SI (match_dup 1))))]
5258 +)
5259 +
5260 +;; GCC does not add/remove clobbers when matching splitters, so we need
5261 +;; variants with and without the CC clobber.
5262 +(define_split
5263 +  [(set (match_operand:SI         0 "s_register_operand" "")
5264 +       (abs:SI (match_operand:SI 1 "s_register_operand" "")))]
5265 +  "TARGET_32BIT && reload_completed && !rtx_equal_p(operands[0], operands[1])"
5266 +  [(set (match_dup 0) (xor:SI (ashiftrt:SI (match_dup 1) (const_int 31))
5267 +                             (match_dup 1)))
5268 +   (set (match_dup 0) (minus:SI (match_dup 0)
5269 +                               (ashiftrt:SI (match_dup 1) (const_int 31))))]
5270 +)
5271 +
5272 +(define_split
5273 +  [(set (match_operand:SI         0 "s_register_operand" "")
5274 +       (abs:SI (match_operand:SI 1 "s_register_operand" "")))
5275 +   (clobber (reg:CC CC_REGNUM))]
5276 +  "TARGET_32BIT && reload_completed && !rtx_equal_p(operands[0], operands[1])"
5277 +  [(set (match_dup 0) (xor:SI (ashiftrt:SI (match_dup 1) (const_int 31))
5278 +                             (match_dup 1)))
5279 +   (set (match_dup 0) (minus:SI (match_dup 0)
5280 +                               (ashiftrt:SI (match_dup 1) (const_int 31))))]
5281 +)
5282 +
5283 +(define_split
5284 +  [(set (match_operand:SI         0 "s_register_operand" "")
5285 +       (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" ""))))]
5286 +  "TARGET_32BIT && reload_completed && !rtx_equal_p(operands[0], operands[1])"
5287 +  [(set (match_dup 0) (xor:SI (ashiftrt:SI (match_dup 1) (const_int 31))
5288 +                             (match_dup 1)))
5289 +   (set (match_dup 0) (minus:SI (ashiftrt:SI (match_dup 1) (const_int 31))
5290 +                               (match_dup 0)))]
5291 +)
5292 +
5293 +(define_split
5294 +  [(set (match_operand:SI         0 "s_register_operand" "")
5295 +       (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" ""))))
5296 +   (clobber (reg:CC CC_REGNUM))]
5297 +  "TARGET_32BIT && reload_completed && !rtx_equal_p(operands[0], operands[1])"
5298 +  [(set (match_dup 0) (xor:SI (ashiftrt:SI (match_dup 1) (const_int 31))
5299 +                             (match_dup 1)))
5300 +   (set (match_dup 0) (minus:SI (ashiftrt:SI (match_dup 1) (const_int 31))
5301 +                               (match_dup 0)))]
5302 +)
5303 +
5304  (define_expand "abssf2"
5305    [(set (match_operand:SF         0 "s_register_operand" "")
5306         (abs:SF (match_operand:SF 1 "s_register_operand" "")))]
5307 @@ -3636,7 +3890,7 @@
5308  (define_expand "absdf2"
5309    [(set (match_operand:DF         0 "s_register_operand" "")
5310         (abs:DF (match_operand:DF 1 "s_register_operand" "")))]
5311 -  "TARGET_32BIT && TARGET_HARD_FLOAT"
5312 +  "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE"
5313    "")
5314  
5315  (define_expand "sqrtsf2"
5316 @@ -3648,7 +3902,7 @@
5317  (define_expand "sqrtdf2"
5318    [(set (match_operand:DF 0 "s_register_operand" "")
5319         (sqrt:DF (match_operand:DF 1 "s_register_operand" "")))]
5320 -  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)"
5321 +  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP_DOUBLE)"
5322    "")
5323  
5324  (define_insn_and_split "one_cmpldi2"
5325 @@ -3682,7 +3936,8 @@
5326         (not:SI (match_operand:SI 1 "s_register_operand"  "r")))]
5327    "TARGET_32BIT"
5328    "mvn%?\\t%0, %1"
5329 -  [(set_attr "predicable" "yes")]
5330 +  [(set_attr "predicable" "yes")
5331 +   (set_attr "insn" "mvn")]
5332  )
5333  
5334  (define_insn "*thumb1_one_cmplsi2"
5335 @@ -3690,7 +3945,8 @@
5336         (not:SI (match_operand:SI 1 "register_operand"  "l")))]
5337    "TARGET_THUMB1"
5338    "mvn\\t%0, %1"
5339 -  [(set_attr "length" "2")]
5340 +  [(set_attr "length" "2")
5341 +   (set_attr "insn" "mvn")]
5342  )
5343  
5344  (define_insn "*notsi_compare0"
5345 @@ -3701,7 +3957,8 @@
5346         (not:SI (match_dup 1)))]
5347    "TARGET_32BIT"
5348    "mvn%.\\t%0, %1"
5349 -  [(set_attr "conds" "set")]
5350 +  [(set_attr "conds" "set")
5351 +   (set_attr "insn" "mvn")]
5352  )
5353  
5354  (define_insn "*notsi_compare0_scratch"
5355 @@ -3711,11 +3968,40 @@
5356     (clobber (match_scratch:SI 0 "=r"))]
5357    "TARGET_32BIT"
5358    "mvn%.\\t%0, %1"
5359 -  [(set_attr "conds" "set")]
5360 +  [(set_attr "conds" "set")
5361 +   (set_attr "insn" "mvn")]
5362  )
5363  \f
5364  ;; Fixed <--> Floating conversion insns
5365  
5366 +(define_expand "floatsihf2"
5367 +  [(set (match_operand:HF           0 "general_operand" "")
5368 +       (float:HF (match_operand:SI 1 "general_operand" "")))]
5369 +  "TARGET_EITHER"
5370 +  "
5371 +  {
5372 +    rtx op1 = gen_reg_rtx (SFmode);
5373 +    expand_float (op1, operands[1], 0);
5374 +    op1 = convert_to_mode (HFmode, op1, 0);
5375 +    emit_move_insn (operands[0], op1);
5376 +    DONE;
5377 +  }"
5378 +)
5379 +
5380 +(define_expand "floatdihf2"
5381 +  [(set (match_operand:HF           0 "general_operand" "")
5382 +       (float:HF (match_operand:DI 1 "general_operand" "")))]
5383 +  "TARGET_EITHER"
5384 +  "
5385 +  {
5386 +    rtx op1 = gen_reg_rtx (SFmode);
5387 +    expand_float (op1, operands[1], 0);
5388 +    op1 = convert_to_mode (HFmode, op1, 0);
5389 +    emit_move_insn (operands[0], op1);
5390 +    DONE;
5391 +  }"
5392 +)
5393 +
5394  (define_expand "floatsisf2"
5395    [(set (match_operand:SF           0 "s_register_operand" "")
5396         (float:SF (match_operand:SI 1 "s_register_operand" "")))]
5397 @@ -3731,7 +4017,7 @@
5398  (define_expand "floatsidf2"
5399    [(set (match_operand:DF           0 "s_register_operand" "")
5400         (float:DF (match_operand:SI 1 "s_register_operand" "")))]
5401 -  "TARGET_32BIT && TARGET_HARD_FLOAT"
5402 +  "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE"
5403    "
5404    if (TARGET_MAVERICK)
5405      {
5406 @@ -3740,6 +4026,30 @@
5407      }
5408  ")
5409  
5410 +(define_expand "fix_trunchfsi2"
5411 +  [(set (match_operand:SI         0 "general_operand" "")
5412 +       (fix:SI (fix:HF (match_operand:HF 1 "general_operand"  ""))))]
5413 +  "TARGET_EITHER"
5414 +  "
5415 +  {
5416 +    rtx op1 = convert_to_mode (SFmode, operands[1], 0);
5417 +    expand_fix (operands[0], op1, 0);
5418 +    DONE;
5419 +  }"
5420 +)
5421 +
5422 +(define_expand "fix_trunchfdi2"
5423 +  [(set (match_operand:DI         0 "general_operand" "")
5424 +       (fix:DI (fix:HF (match_operand:HF 1 "general_operand"  ""))))]
5425 +  "TARGET_EITHER"
5426 +  "
5427 +  {
5428 +    rtx op1 = convert_to_mode (SFmode, operands[1], 0);
5429 +    expand_fix (operands[0], op1, 0);
5430 +    DONE;
5431 +  }"
5432 +)
5433 +
5434  (define_expand "fix_truncsfsi2"
5435    [(set (match_operand:SI         0 "s_register_operand" "")
5436         (fix:SI (fix:SF (match_operand:SF 1 "s_register_operand"  ""))))]
5437 @@ -3759,7 +4069,7 @@
5438  (define_expand "fix_truncdfsi2"
5439    [(set (match_operand:SI         0 "s_register_operand" "")
5440         (fix:SI (fix:DF (match_operand:DF 1 "s_register_operand"  ""))))]
5441 -  "TARGET_32BIT && TARGET_HARD_FLOAT"
5442 +  "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE"
5443    "
5444    if (TARGET_MAVERICK)
5445      {
5446 @@ -3776,9 +4086,25 @@
5447    [(set (match_operand:SF  0 "s_register_operand" "")
5448         (float_truncate:SF
5449          (match_operand:DF 1 "s_register_operand" "")))]
5450 -  "TARGET_32BIT && TARGET_HARD_FLOAT"
5451 +  "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE"
5452    ""
5453  )
5454 +
5455 +/* DFmode -> HFmode conversions have to go through SFmode.  */
5456 +(define_expand "truncdfhf2"
5457 +  [(set (match_operand:HF  0 "general_operand" "")
5458 +       (float_truncate:HF
5459 +        (match_operand:DF 1 "general_operand" "")))]
5460 +  "TARGET_EITHER"
5461 +  "
5462 +  {
5463 +    rtx op1;
5464 +    op1 = convert_to_mode (SFmode, operands[1], 0);
5465 +    op1 = convert_to_mode (HFmode, op1, 0);
5466 +    emit_move_insn (operands[0], op1);
5467 +    DONE;
5468 +  }"
5469 +)
5470  \f
5471  ;; Zero and sign extension instructions.
5472  
5473 @@ -3800,6 +4126,7 @@
5474      return \"mov%?\\t%R0, #0\";
5475    "
5476    [(set_attr "length" "8")
5477 +   (set_attr "insn" "mov")
5478     (set_attr "predicable" "yes")]
5479  )
5480  
5481 @@ -3843,6 +4170,7 @@
5482    "
5483    [(set_attr "length" "8")
5484     (set_attr "shift" "1")
5485 +   (set_attr "insn" "mov")
5486     (set_attr "predicable" "yes")]
5487  )
5488  
5489 @@ -4123,6 +4451,28 @@
5490    ""
5491  )
5492  
5493 +(define_code_iterator ior_xor [ior xor])
5494 +
5495 +(define_split
5496 +  [(set (match_operand:SI 0 "s_register_operand" "")
5497 +       (ior_xor:SI (and:SI (ashift:SI
5498 +                            (match_operand:SI 1 "s_register_operand" "")
5499 +                            (match_operand:SI 2 "const_int_operand" ""))
5500 +                           (match_operand:SI 3 "const_int_operand" ""))
5501 +                   (zero_extend:SI
5502 +                    (match_operator 5 "subreg_lowpart_operator"
5503 +                     [(match_operand:SI 4 "s_register_operand" "")]))))]
5504 +  "TARGET_32BIT
5505 +   && (INTVAL (operands[3])
5506 +       == (GET_MODE_MASK (GET_MODE (operands[5]))
5507 +           & (GET_MODE_MASK (GET_MODE (operands[5]))
5508 +             << (INTVAL (operands[2])))))"
5509 +  [(set (match_dup 0) (ior_xor:SI (ashift:SI (match_dup 1) (match_dup 2))
5510 +                                 (match_dup 4)))
5511 +   (set (match_dup 0) (zero_extend:SI (match_dup 5)))]
5512 +  "operands[5] = gen_lowpart (GET_MODE (operands[5]), operands[0]);"
5513 +)
5514 +
5515  (define_insn "*compareqi_eq0"
5516    [(set (reg:CC_Z CC_REGNUM)
5517         (compare:CC_Z (match_operand:QI 0 "s_register_operand" "r")
5518 @@ -4639,9 +4989,24 @@
5519  (define_expand "extendsfdf2"
5520    [(set (match_operand:DF                  0 "s_register_operand" "")
5521         (float_extend:DF (match_operand:SF 1 "s_register_operand"  "")))]
5522 -  "TARGET_32BIT && TARGET_HARD_FLOAT"
5523 +  "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE"
5524    ""
5525  )
5526 +
5527 +/* HFmode -> DFmode conversions have to go through SFmode.  */
5528 +(define_expand "extendhfdf2"
5529 +  [(set (match_operand:DF                  0 "general_operand" "")
5530 +       (float_extend:DF (match_operand:HF 1 "general_operand"  "")))]
5531 +  "TARGET_EITHER"
5532 +  "
5533 +  {
5534 +    rtx op1;
5535 +    op1 = convert_to_mode (SFmode, operands[1], 0);
5536 +    op1 = convert_to_mode (DFmode, op1, 0);
5537 +    emit_insn (gen_movdf (operands[0], op1));
5538 +    DONE;
5539 +  }"
5540 +)
5541  \f
5542  ;; Move insns (including loads and stores)
5543  
5544 @@ -4877,6 +5242,7 @@
5545    }"
5546    [(set_attr "length" "4,4,6,2,2,6,4,4")
5547     (set_attr "type" "*,*,*,load2,store2,load2,store2,*")
5548 +   (set_attr "insn" "*,mov,*,*,*,*,*,mov")
5549     (set_attr "pool_range" "*,*,*,*,*,1020,*,*")]
5550  )
5551  
5552 @@ -4903,14 +5269,6 @@
5553                                optimize && can_create_pseudo_p ());
5554            DONE;
5555          }
5556 -
5557 -      if (TARGET_USE_MOVT && !target_word_relocations
5558 -         && GET_CODE (operands[1]) == SYMBOL_REF
5559 -         && !flag_pic && !arm_tls_referenced_p (operands[1]))
5560 -       {
5561 -         arm_emit_movpair (operands[0], operands[1]);
5562 -         DONE;
5563 -       }
5564      }
5565    else /* TARGET_THUMB1...  */
5566      {
5567 @@ -4984,18 +5342,9 @@
5568     (set_attr "length" "4")]
5569  )
5570  
5571 -(define_insn "*arm_movw"
5572 -  [(set (match_operand:SI 0 "nonimmediate_operand" "=r")
5573 -       (high:SI (match_operand:SI 1 "general_operand"      "i")))]
5574 -  "TARGET_32BIT"
5575 -  "movw%?\t%0, #:lower16:%c1"
5576 -  [(set_attr "predicable" "yes")
5577 -   (set_attr "length" "4")]
5578 -)
5579 -
5580  (define_insn "*arm_movsi_insn"
5581    [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m")
5582 -       (match_operand:SI 1 "general_operand"      "rk, I,K,N,mi,rk"))]
5583 +       (match_operand:SI 1 "general_operand"      "rk, I,K,j,mi,rk"))]
5584    "TARGET_ARM && ! TARGET_IWMMXT
5585     && !(TARGET_HARD_FLOAT && TARGET_VFP)
5586     && (   register_operand (operands[0], SImode)
5587 @@ -5008,6 +5357,7 @@
5588     ldr%?\\t%0, %1
5589     str%?\\t%1, %0"
5590    [(set_attr "type" "*,*,*,*,load1,store1")
5591 +   (set_attr "insn" "mov,mov,mvn,mov,*,*")
5592     (set_attr "predicable" "yes")
5593     (set_attr "pool_range" "*,*,*,*,4096,*")
5594     (set_attr "neg_pool_range" "*,*,*,*,4084,*")]
5595 @@ -5027,6 +5377,19 @@
5596    "
5597  )
5598  
5599 +(define_split
5600 +  [(set (match_operand:SI 0 "arm_general_register_operand" "")
5601 +       (match_operand:SI 1 "general_operand" ""))]
5602 +  "TARGET_32BIT
5603 +   && TARGET_USE_MOVT && GET_CODE (operands[1]) == SYMBOL_REF
5604 +   && !flag_pic && !target_word_relocations
5605 +   && !arm_tls_referenced_p (operands[1])"
5606 +  [(clobber (const_int 0))]
5607 +{
5608 +  arm_emit_movpair (operands[0], operands[1]);
5609 +  DONE;
5610 +})
5611 +
5612  (define_insn "*thumb1_movsi_insn"
5613    [(set (match_operand:SI 0 "nonimmediate_operand" "=l,l,l,l,l,>,l, m,*lhk")
5614         (match_operand:SI 1 "general_operand"      "l, I,J,K,>,l,mi,l,*lhk"))]
5615 @@ -5065,7 +5428,7 @@
5616     (set (match_dup 0) (ashift:SI (match_dup 0) (match_dup 2)))]
5617    "
5618    {
5619 -    unsigned HOST_WIDE_INT val = INTVAL (operands[1]);
5620 +    unsigned HOST_WIDE_INT val = INTVAL (operands[1]) & 0xffffffffu;
5621      unsigned HOST_WIDE_INT mask = 0xff;
5622      int i;
5623      
5624 @@ -5627,6 +5990,7 @@
5625     ldr%(h%)\\t%0, %1\\t%@ movhi"
5626    [(set_attr "type" "*,*,store1,load1")
5627     (set_attr "predicable" "yes")
5628 +   (set_attr "insn" "mov,mvn,*,*")
5629     (set_attr "pool_range" "*,*,*,256")
5630     (set_attr "neg_pool_range" "*,*,*,244")]
5631  )
5632 @@ -5638,7 +6002,8 @@
5633    "@
5634     mov%?\\t%0, %1\\t%@ movhi
5635     mvn%?\\t%0, #%B1\\t%@ movhi"
5636 -  [(set_attr "predicable" "yes")]
5637 +  [(set_attr "predicable" "yes")
5638 +   (set_attr "insn" "mov,mvn")]
5639  )
5640  
5641  (define_expand "thumb_movhi_clobber"
5642 @@ -5769,6 +6134,7 @@
5643     ldr%(b%)\\t%0, %1
5644     str%(b%)\\t%1, %0"
5645    [(set_attr "type" "*,*,load1,store1")
5646 +   (set_attr "insn" "mov,mvn,*,*")
5647     (set_attr "predicable" "yes")]
5648  )
5649  
5650 @@ -5787,9 +6153,111 @@
5651     mov\\t%0, %1"
5652    [(set_attr "length" "2")
5653     (set_attr "type" "*,load1,store1,*,*,*")
5654 +   (set_attr "insn" "*,*,*,mov,mov,mov")
5655     (set_attr "pool_range" "*,32,*,*,*,*")]
5656  )
5657  
5658 +;; HFmode moves
5659 +(define_expand "movhf"
5660 +  [(set (match_operand:HF 0 "general_operand" "")
5661 +       (match_operand:HF 1 "general_operand" ""))]
5662 +  "TARGET_EITHER"
5663 +  "
5664 +  if (TARGET_32BIT)
5665 +    {
5666 +      if (GET_CODE (operands[0]) == MEM)
5667 +        operands[1] = force_reg (HFmode, operands[1]);
5668 +    }
5669 +  else /* TARGET_THUMB1 */
5670 +    {
5671 +      if (can_create_pseudo_p ())
5672 +        {
5673 +           if (GET_CODE (operands[0]) != REG)
5674 +            operands[1] = force_reg (HFmode, operands[1]);
5675 +        }
5676 +    }
5677 +  "
5678 +)
5679 +
5680 +(define_insn "*arm32_movhf"
5681 +  [(set (match_operand:HF 0 "nonimmediate_operand" "=r,m,r,r")
5682 +       (match_operand:HF 1 "general_operand"      " m,r,r,F"))]
5683 +  "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_FP16)
5684 +   && (          s_register_operand (operands[0], HFmode)
5685 +       || s_register_operand (operands[1], HFmode))"
5686 +  "*
5687 +  switch (which_alternative)
5688 +    {
5689 +    case 0:    /* ARM register from memory */
5690 +      return \"ldr%(h%)\\t%0, %1\\t%@ __fp16\";
5691 +    case 1:    /* memory from ARM register */
5692 +      return \"str%(h%)\\t%1, %0\\t%@ __fp16\";
5693 +    case 2:    /* ARM register from ARM register */
5694 +      return \"mov%?\\t%0, %1\\t%@ __fp16\";
5695 +    case 3:    /* ARM register from constant */
5696 +      {
5697 +       REAL_VALUE_TYPE r;
5698 +       long bits;
5699 +       rtx ops[4];
5700 +
5701 +       REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
5702 +       bits = real_to_target (NULL, &r, HFmode);
5703 +       ops[0] = operands[0];
5704 +       ops[1] = GEN_INT (bits);
5705 +       ops[2] = GEN_INT (bits & 0xff00);
5706 +       ops[3] = GEN_INT (bits & 0x00ff);
5707 +
5708 +       if (arm_arch_thumb2)
5709 +         output_asm_insn (\"movw%?\\t%0, %1\", ops);
5710 +       else
5711 +         output_asm_insn (\"mov%?\\t%0, %2\;orr%?\\t%0, %0, %3\", ops);
5712 +       return \"\";
5713 +       }
5714 +    default:
5715 +      gcc_unreachable ();
5716 +    }
5717 +  "
5718 +  [(set_attr "conds" "unconditional")
5719 +   (set_attr "type" "load1,store1,*,*")
5720 +   (set_attr "length" "4,4,4,8")
5721 +   (set_attr "predicable" "yes")
5722 +   ]
5723 +)
5724 +
5725 +(define_insn "*thumb1_movhf"
5726 +  [(set (match_operand:HF     0 "nonimmediate_operand" "=l,l,m,*r,*h")
5727 +       (match_operand:HF     1 "general_operand"      "l,mF,l,*h,*r"))]
5728 +  "TARGET_THUMB1
5729 +   && (          s_register_operand (operands[0], HFmode) 
5730 +       || s_register_operand (operands[1], HFmode))"
5731 +  "*
5732 +  switch (which_alternative)
5733 +    {
5734 +    case 1:
5735 +      {
5736 +       rtx addr;
5737 +       gcc_assert (GET_CODE(operands[1]) == MEM);
5738 +       addr = XEXP (operands[1], 0);
5739 +       if (GET_CODE (addr) == LABEL_REF
5740 +           || (GET_CODE (addr) == CONST
5741 +               && GET_CODE (XEXP (addr, 0)) == PLUS
5742 +               && GET_CODE (XEXP (XEXP (addr, 0), 0)) == LABEL_REF
5743 +               && GET_CODE (XEXP (XEXP (addr, 0), 1)) == CONST_INT))
5744 +         {
5745 +           /* Constant pool entry.  */
5746 +           return \"ldr\\t%0, %1\";
5747 +         }
5748 +       return \"ldrh\\t%0, %1\";
5749 +      }
5750 +    case 2: return \"strh\\t%1, %0\";
5751 +    default: return \"mov\\t%0, %1\";
5752 +    }
5753 +  "
5754 +  [(set_attr "length" "2")
5755 +   (set_attr "type" "*,load1,store1,*,*")
5756 +   (set_attr "pool_range" "*,1020,*,*,*")]
5757 +)
5758 +
5759  (define_expand "movsf"
5760    [(set (match_operand:SF 0 "general_operand" "")
5761         (match_operand:SF 1 "general_operand" ""))]
5762 @@ -5842,6 +6310,7 @@
5763    [(set_attr "length" "4,4,4")
5764     (set_attr "predicable" "yes")
5765     (set_attr "type" "*,load1,store1")
5766 +   (set_attr "insn" "mov,*,*")
5767     (set_attr "pool_range" "*,4096,*")
5768     (set_attr "neg_pool_range" "*,4084,*")]
5769  )
5770 @@ -6297,7 +6766,7 @@
5771     (match_operand:BLK 1 "general_operand" "")
5772     (match_operand:SI 2 "const_int_operand" "")
5773     (match_operand:SI 3 "const_int_operand" "")]
5774 -  "TARGET_EITHER"
5775 +  "TARGET_EITHER && !low_irq_latency"
5776    "
5777    if (TARGET_32BIT)
5778      {
5779 @@ -7476,7 +7945,7 @@
5780  (define_expand "cmpdf"
5781    [(match_operand:DF 0 "s_register_operand" "")
5782     (match_operand:DF 1 "arm_float_compare_operand" "")]
5783 -  "TARGET_32BIT && TARGET_HARD_FLOAT"
5784 +  "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE"
5785    "
5786    arm_compare_op0 = operands[0];
5787    arm_compare_op1 = operands[1];
5788 @@ -7507,7 +7976,11 @@
5789     (set_attr "shift" "1")
5790     (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
5791                       (const_string "alu_shift")
5792 -                     (const_string "alu_shift_reg")))]
5793 +                      (const_string "alu_shift_reg")))
5794 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
5795 +                                             (eq_attr "fix_janus" "yes"))
5796 +                                        (const_int 8)
5797 +                                        (const_int 4)))]
5798  )
5799  
5800  (define_insn "*arm_cmpsi_shiftsi_swp"
5801 @@ -7522,7 +7995,11 @@
5802     (set_attr "shift" "1")
5803     (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
5804                       (const_string "alu_shift")
5805 -                     (const_string "alu_shift_reg")))]
5806 +                      (const_string "alu_shift_reg")))
5807 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
5808 +                                             (eq_attr "fix_janus" "yes"))
5809 +                                        (const_int 8)
5810 +                                        (const_int 4)))]
5811  )
5812  
5813  (define_insn "*arm_cmpsi_negshiftsi_si"
5814 @@ -7537,7 +8014,11 @@
5815    [(set_attr "conds" "set")
5816     (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "")
5817                                     (const_string "alu_shift")
5818 -                                   (const_string "alu_shift_reg")))]
5819 +                                    (const_string "alu_shift_reg")))
5820 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
5821 +                                             (eq_attr "fix_janus" "yes"))
5822 +                                        (const_int 8)
5823 +                                        (const_int 4)))]
5824  )
5825  
5826  ;; Cirrus SF compare instruction
5827 @@ -7879,77 +8360,77 @@
5828  (define_expand "seq"
5829    [(set (match_operand:SI 0 "s_register_operand" "")
5830         (eq:SI (match_dup 1) (const_int 0)))]
5831 -  "TARGET_32BIT"
5832 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
5833    "operands[1] = arm_gen_compare_reg (EQ, arm_compare_op0, arm_compare_op1);"
5834  )
5835  
5836  (define_expand "sne"
5837    [(set (match_operand:SI 0 "s_register_operand" "")
5838         (ne:SI (match_dup 1) (const_int 0)))]
5839 -  "TARGET_32BIT"
5840 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
5841    "operands[1] = arm_gen_compare_reg (NE, arm_compare_op0, arm_compare_op1);"
5842  )
5843  
5844  (define_expand "sgt"
5845    [(set (match_operand:SI 0 "s_register_operand" "")
5846         (gt:SI (match_dup 1) (const_int 0)))]
5847 -  "TARGET_32BIT"
5848 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
5849    "operands[1] = arm_gen_compare_reg (GT, arm_compare_op0, arm_compare_op1);"
5850  )
5851  
5852  (define_expand "sle"
5853    [(set (match_operand:SI 0 "s_register_operand" "")
5854         (le:SI (match_dup 1) (const_int 0)))]
5855 -  "TARGET_32BIT"
5856 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
5857    "operands[1] = arm_gen_compare_reg (LE, arm_compare_op0, arm_compare_op1);"
5858  )
5859  
5860  (define_expand "sge"
5861    [(set (match_operand:SI 0 "s_register_operand" "")
5862         (ge:SI (match_dup 1) (const_int 0)))]
5863 -  "TARGET_32BIT"
5864 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
5865    "operands[1] = arm_gen_compare_reg (GE, arm_compare_op0, arm_compare_op1);"
5866  )
5867  
5868  (define_expand "slt"
5869    [(set (match_operand:SI 0 "s_register_operand" "")
5870         (lt:SI (match_dup 1) (const_int 0)))]
5871 -  "TARGET_32BIT"
5872 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
5873    "operands[1] = arm_gen_compare_reg (LT, arm_compare_op0, arm_compare_op1);"
5874  )
5875  
5876  (define_expand "sgtu"
5877    [(set (match_operand:SI 0 "s_register_operand" "")
5878         (gtu:SI (match_dup 1) (const_int 0)))]
5879 -  "TARGET_32BIT"
5880 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
5881    "operands[1] = arm_gen_compare_reg (GTU, arm_compare_op0, arm_compare_op1);"
5882  )
5883  
5884  (define_expand "sleu"
5885    [(set (match_operand:SI 0 "s_register_operand" "")
5886         (leu:SI (match_dup 1) (const_int 0)))]
5887 -  "TARGET_32BIT"
5888 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
5889    "operands[1] = arm_gen_compare_reg (LEU, arm_compare_op0, arm_compare_op1);"
5890  )
5891  
5892  (define_expand "sgeu"
5893    [(set (match_operand:SI 0 "s_register_operand" "")
5894         (geu:SI (match_dup 1) (const_int 0)))]
5895 -  "TARGET_32BIT"
5896 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
5897    "operands[1] = arm_gen_compare_reg (GEU, arm_compare_op0, arm_compare_op1);"
5898  )
5899  
5900  (define_expand "sltu"
5901    [(set (match_operand:SI 0 "s_register_operand" "")
5902         (ltu:SI (match_dup 1) (const_int 0)))]
5903 -  "TARGET_32BIT"
5904 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
5905    "operands[1] = arm_gen_compare_reg (LTU, arm_compare_op0, arm_compare_op1);"
5906  )
5907  
5908  (define_expand "sunordered"
5909    [(set (match_operand:SI 0 "s_register_operand" "")
5910         (unordered:SI (match_dup 1) (const_int 0)))]
5911 -  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)"
5912 +  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP) && !TARGET_NO_COND_EXEC"
5913    "operands[1] = arm_gen_compare_reg (UNORDERED, arm_compare_op0,
5914                                       arm_compare_op1);"
5915  )
5916 @@ -7957,7 +8438,7 @@
5917  (define_expand "sordered"
5918    [(set (match_operand:SI 0 "s_register_operand" "")
5919         (ordered:SI (match_dup 1) (const_int 0)))]
5920 -  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)"
5921 +  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP) && !TARGET_NO_COND_EXEC"
5922    "operands[1] = arm_gen_compare_reg (ORDERED, arm_compare_op0,
5923                                       arm_compare_op1);"
5924  )
5925 @@ -7965,7 +8446,7 @@
5926  (define_expand "sungt"
5927    [(set (match_operand:SI 0 "s_register_operand" "")
5928         (ungt:SI (match_dup 1) (const_int 0)))]
5929 -  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)"
5930 +  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP) && !TARGET_NO_COND_EXEC"
5931    "operands[1] = arm_gen_compare_reg (UNGT, arm_compare_op0,
5932                                       arm_compare_op1);"
5933  )
5934 @@ -7973,7 +8454,7 @@
5935  (define_expand "sunge"
5936    [(set (match_operand:SI 0 "s_register_operand" "")
5937         (unge:SI (match_dup 1) (const_int 0)))]
5938 -  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)"
5939 +  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP) && !TARGET_NO_COND_EXEC"
5940    "operands[1] = arm_gen_compare_reg (UNGE, arm_compare_op0,
5941                                       arm_compare_op1);"
5942  )
5943 @@ -7981,7 +8462,7 @@
5944  (define_expand "sunlt"
5945    [(set (match_operand:SI 0 "s_register_operand" "")
5946         (unlt:SI (match_dup 1) (const_int 0)))]
5947 -  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)"
5948 +  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP) && !TARGET_NO_COND_EXEC"
5949    "operands[1] = arm_gen_compare_reg (UNLT, arm_compare_op0,
5950                                       arm_compare_op1);"
5951  )
5952 @@ -7989,7 +8470,7 @@
5953  (define_expand "sunle"
5954    [(set (match_operand:SI 0 "s_register_operand" "")
5955         (unle:SI (match_dup 1) (const_int 0)))]
5956 -  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)"
5957 +  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP) && !TARGET_NO_COND_EXEC"
5958    "operands[1] = arm_gen_compare_reg (UNLE, arm_compare_op0,
5959                                       arm_compare_op1);"
5960  )
5961 @@ -8018,6 +8499,7 @@
5962    "TARGET_ARM"
5963    "mov%D1\\t%0, #0\;mov%d1\\t%0, #1"
5964    [(set_attr "conds" "use")
5965 +   (set_attr "insn" "mov")
5966     (set_attr "length" "8")]
5967  )
5968  
5969 @@ -8028,6 +8510,7 @@
5970    "TARGET_ARM"
5971    "mov%D1\\t%0, #0\;mvn%d1\\t%0, #0"
5972    [(set_attr "conds" "use")
5973 +   (set_attr "insn" "mov")
5974     (set_attr "length" "8")]
5975  )
5976  
5977 @@ -8038,6 +8521,7 @@
5978    "TARGET_ARM"
5979    "mov%D1\\t%0, #0\;mvn%d1\\t%0, #1"
5980    [(set_attr "conds" "use")
5981 +   (set_attr "insn" "mov")
5982     (set_attr "length" "8")]
5983  )
5984  
5985 @@ -8241,7 +8725,7 @@
5986         (if_then_else:SI (match_operand 1 "arm_comparison_operator" "")
5987                          (match_operand:SI 2 "arm_not_operand" "")
5988                          (match_operand:SI 3 "arm_not_operand" "")))]
5989 -  "TARGET_32BIT"
5990 +  "TARGET_32BIT && !TARGET_NO_COND_EXEC"
5991    "
5992    {
5993      enum rtx_code code = GET_CODE (operands[1]);
5994 @@ -8260,7 +8744,7 @@
5995         (if_then_else:SF (match_operand 1 "arm_comparison_operator" "")
5996                          (match_operand:SF 2 "s_register_operand" "")
5997                          (match_operand:SF 3 "nonmemory_operand" "")))]
5998 -  "TARGET_32BIT && TARGET_HARD_FLOAT"
5999 +  "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_NO_COND_EXEC"
6000    "
6001    {
6002      enum rtx_code code = GET_CODE (operands[1]);
6003 @@ -8285,7 +8769,7 @@
6004         (if_then_else:DF (match_operand 1 "arm_comparison_operator" "")
6005                          (match_operand:DF 2 "s_register_operand" "")
6006                          (match_operand:DF 3 "arm_float_add_operand" "")))]
6007 -  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)"
6008 +  "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP_DOUBLE) && !TARGET_NO_COND_EXEC"
6009    "
6010    {
6011      enum rtx_code code = GET_CODE (operands[1]);
6012 @@ -8317,7 +8801,8 @@
6013     mvn%d3\\t%0, #%B1\;mov%D3\\t%0, %2
6014     mvn%d3\\t%0, #%B1\;mvn%D3\\t%0, #%B2"
6015    [(set_attr "length" "4,4,4,4,8,8,8,8")
6016 -   (set_attr "conds" "use")]
6017 +   (set_attr "conds" "use")
6018 +   (set_attr "insn" "mov,mvn,mov,mvn,mov,mov,mvn,mvn")]
6019  )
6020  
6021  (define_insn "*movsfcc_soft_insn"
6022 @@ -8330,7 +8815,8 @@
6023    "@
6024     mov%D3\\t%0, %2
6025     mov%d3\\t%0, %1"
6026 -  [(set_attr "conds" "use")]
6027 +  [(set_attr "conds" "use")
6028 +   (set_attr "insn" "mov")]
6029  )
6030  
6031  \f
6032 @@ -8733,7 +9219,7 @@
6033                        [(match_operand 1 "cc_register" "") (const_int 0)])
6034                        (return)
6035                        (pc)))]
6036 -  "TARGET_ARM && USE_RETURN_INSN (TRUE)"
6037 +  "TARGET_ARM && USE_RETURN_INSN (TRUE) && !TARGET_NO_COND_EXEC"
6038    "*
6039    {
6040      if (arm_ccfsm_state == 2)
6041 @@ -8754,7 +9240,7 @@
6042                        [(match_operand 1 "cc_register" "") (const_int 0)])
6043                        (pc)
6044                       (return)))]
6045 -  "TARGET_ARM && USE_RETURN_INSN (TRUE)"
6046 +  "TARGET_ARM && USE_RETURN_INSN (TRUE) && !TARGET_NO_COND_EXEC"
6047    "*
6048    {
6049      if (arm_ccfsm_state == 2)
6050 @@ -9072,7 +9558,11 @@
6051     (set_attr "shift" "4")
6052     (set (attr "type") (if_then_else (match_operand 5 "const_int_operand" "")
6053                       (const_string "alu_shift")
6054 -                     (const_string "alu_shift_reg")))]
6055 +                      (const_string "alu_shift_reg")))
6056 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
6057 +                                             (eq_attr "fix_janus" "yes"))
6058 +                                        (const_int 8)
6059 +                                        (const_int 4)))]
6060  )
6061  
6062  (define_split
6063 @@ -9110,7 +9600,11 @@
6064     (set_attr "shift" "4")
6065     (set (attr "type") (if_then_else (match_operand 5 "const_int_operand" "")
6066                       (const_string "alu_shift")
6067 -                     (const_string "alu_shift_reg")))]
6068 +                      (const_string "alu_shift_reg")))
6069 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
6070 +                                             (eq_attr "fix_janus" "yes"))
6071 +                                        (const_int 8)
6072 +                                        (const_int 4)))]
6073  )
6074  
6075  (define_insn "*arith_shiftsi_compare0_scratch"
6076 @@ -9128,7 +9622,11 @@
6077     (set_attr "shift" "4")
6078     (set (attr "type") (if_then_else (match_operand 5 "const_int_operand" "")
6079                       (const_string "alu_shift")
6080 -                     (const_string "alu_shift_reg")))]
6081 +                      (const_string "alu_shift_reg")))
6082 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
6083 +                                             (eq_attr "fix_janus" "yes"))
6084 +                                        (const_int 8)
6085 +                                        (const_int 4)))]
6086  )
6087  
6088  (define_insn "*sub_shiftsi"
6089 @@ -9143,7 +9641,11 @@
6090     (set_attr "shift" "3")
6091     (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "")
6092                       (const_string "alu_shift")
6093 -                     (const_string "alu_shift_reg")))]
6094 +                      (const_string "alu_shift_reg")))
6095 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
6096 +                                             (eq_attr "fix_janus" "yes"))
6097 +                                        (const_int 8)
6098 +                                        (const_int 4)))]
6099  )
6100  
6101  (define_insn "*sub_shiftsi_compare0"
6102 @@ -9163,7 +9665,11 @@
6103     (set_attr "shift" "3")
6104     (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "")
6105                       (const_string "alu_shift")
6106 -                     (const_string "alu_shift_reg")))]
6107 +                      (const_string "alu_shift_reg")))
6108 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
6109 +                                             (eq_attr "fix_janus" "yes"))
6110 +                                        (const_int 8)
6111 +                                        (const_int 4)))]
6112  )
6113  
6114  (define_insn "*sub_shiftsi_compare0_scratch"
6115 @@ -9181,7 +9687,11 @@
6116     (set_attr "shift" "3")
6117     (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "")
6118                       (const_string "alu_shift")
6119 -                     (const_string "alu_shift_reg")))]
6120 +                      (const_string "alu_shift_reg")))
6121 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
6122 +                                             (eq_attr "fix_janus" "yes"))
6123 +                                        (const_int 8)
6124 +                                        (const_int 4)))]
6125  )
6126  
6127  \f
6128 @@ -9194,6 +9704,7 @@
6129    "TARGET_ARM"
6130    "mov%D1\\t%0, #0\;and%d1\\t%0, %2, #1"
6131    [(set_attr "conds" "use")
6132 +   (set_attr "insn" "mov")
6133     (set_attr "length" "8")]
6134  )
6135  
6136 @@ -9207,6 +9718,7 @@
6137     orr%d2\\t%0, %1, #1
6138     mov%D2\\t%0, %1\;orr%d2\\t%0, %1, #1"
6139    [(set_attr "conds" "use")
6140 +   (set_attr "insn" "orr")
6141     (set_attr "length" "4,8")]
6142  )
6143  
6144 @@ -9216,7 +9728,7 @@
6145          [(match_operand:SI 2 "s_register_operand" "r,r")
6146           (match_operand:SI 3 "arm_add_operand" "rI,L")]))
6147     (clobber (reg:CC CC_REGNUM))]
6148 -  "TARGET_ARM"
6149 +  "TARGET_ARM && !TARGET_NO_COND_EXEC"
6150    "*
6151      if (operands[3] == const0_rtx)
6152        {
6153 @@ -9271,6 +9783,7 @@
6154      return \"\";
6155    "
6156    [(set_attr "conds" "use")
6157 +   (set_attr "insn" "mov")
6158     (set_attr "length" "4,4,8")]
6159  )
6160  
6161 @@ -9282,7 +9795,7 @@
6162             (match_operand:SI 3 "arm_rhs_operand" "rI,rI")])
6163            (match_operand:SI 1 "s_register_operand" "0,?r")]))
6164     (clobber (reg:CC CC_REGNUM))]
6165 -  "TARGET_ARM"
6166 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6167    "*
6168      if (GET_CODE (operands[4]) == LT && operands[3] == const0_rtx)
6169        return \"%i5\\t%0, %1, %2, lsr #31\";
6170 @@ -9678,7 +10191,7 @@
6171          (match_operand:SI 1 "arm_rhs_operand" "0,rI,?rI")
6172          (match_operand:SI 2 "arm_rhs_operand" "rI,0,rI")))
6173     (clobber (reg:CC CC_REGNUM))]
6174 -  "TARGET_ARM"
6175 +  "TARGET_ARM && !TARGET_NO_COND_EXEC"
6176    "*
6177    if (GET_CODE (operands[5]) == LT
6178        && (operands[4] == const0_rtx))
6179 @@ -9744,7 +10257,7 @@
6180                           (match_operand:SI 3 "arm_add_operand" "rIL,rIL"))
6181                          (match_operand:SI 1 "arm_rhs_operand" "0,?rI")))
6182     (clobber (reg:CC CC_REGNUM))]
6183 -  "TARGET_ARM"
6184 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6185    "#"
6186    [(set_attr "conds" "clob")
6187     (set_attr "length" "8,12")]
6188 @@ -9780,7 +10293,7 @@
6189                           (match_operand:SI 2 "s_register_operand" "r,r")
6190                           (match_operand:SI 3 "arm_add_operand" "rIL,rIL"))))
6191     (clobber (reg:CC CC_REGNUM))]
6192 -  "TARGET_ARM"
6193 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6194    "#"
6195    [(set_attr "conds" "clob")
6196     (set_attr "length" "8,12")]
6197 @@ -9818,7 +10331,7 @@
6198                           [(match_operand:SI 3 "s_register_operand" "r")
6199                            (match_operand:SI 4 "arm_rhs_operand" "rI")])))
6200     (clobber (reg:CC CC_REGNUM))]
6201 -  "TARGET_ARM"
6202 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6203    "#"
6204    [(set_attr "conds" "clob")
6205     (set_attr "length" "12")]
6206 @@ -9968,7 +10481,7 @@
6207          (not:SI
6208           (match_operand:SI 2 "s_register_operand" "r,r"))))
6209     (clobber (reg:CC CC_REGNUM))]
6210 -  "TARGET_ARM"
6211 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6212    "#"
6213    [(set_attr "conds" "clob")
6214     (set_attr "length" "8,12")]
6215 @@ -9987,6 +10500,7 @@
6216     mov%d4\\t%0, %1\;mvn%D4\\t%0, %2
6217     mvn%d4\\t%0, #%B1\;mvn%D4\\t%0, %2"
6218    [(set_attr "conds" "use")
6219 +   (set_attr "insn" "mvn")
6220     (set_attr "length" "4,8,8")]
6221  )
6222  
6223 @@ -10000,7 +10514,7 @@
6224           (match_operand:SI 2 "s_register_operand" "r,r"))
6225          (match_operand:SI 1 "arm_not_operand" "0,?rIK")))
6226     (clobber (reg:CC CC_REGNUM))]
6227 -  "TARGET_ARM"
6228 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6229    "#"
6230    [(set_attr "conds" "clob")
6231     (set_attr "length" "8,12")]
6232 @@ -10019,6 +10533,7 @@
6233     mov%D4\\t%0, %1\;mvn%d4\\t%0, %2
6234     mvn%D4\\t%0, #%B1\;mvn%d4\\t%0, %2"
6235    [(set_attr "conds" "use")
6236 +   (set_attr "insn" "mvn")
6237     (set_attr "length" "4,8,8")]
6238  )
6239  
6240 @@ -10033,7 +10548,7 @@
6241            (match_operand:SI 3 "arm_rhs_operand" "rM,rM")])
6242          (match_operand:SI 1 "arm_not_operand" "0,?rIK")))
6243     (clobber (reg:CC CC_REGNUM))]
6244 -  "TARGET_ARM"
6245 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6246    "#"
6247    [(set_attr "conds" "clob")
6248     (set_attr "length" "8,12")]
6249 @@ -10055,10 +10570,23 @@
6250     mvn%D5\\t%0, #%B1\;mov%d5\\t%0, %2%S4"
6251    [(set_attr "conds" "use")
6252     (set_attr "shift" "2")
6253 -   (set_attr "length" "4,8,8")
6254 +   (set_attr "insn" "mov")
6255     (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "")
6256                       (const_string "alu_shift")
6257 -                     (const_string "alu_shift_reg")))]
6258 +                      (const_string "alu_shift_reg")))
6259 +     (set_attr_alternative "length"
6260 +           [(if_then_else (and (eq_attr "type" "alu_shift_reg")
6261 +                               (eq_attr "fix_janus" "yes"))
6262 +                          (const_int 8)
6263 +                          (const_int 4))
6264 +            (if_then_else (and (eq_attr "type" "alu_shift_reg")
6265 +                               (eq_attr "fix_janus" "yes"))
6266 +                          (const_int 12)
6267 +                          (const_int 8))
6268 +            (if_then_else (and (eq_attr "type" "alu_shift_reg")
6269 +                               (eq_attr "fix_janus" "yes"))
6270 +                          (const_int 12)
6271 +                          (const_int 8))])]
6272  )
6273  
6274  (define_insn "*ifcompare_move_shift"
6275 @@ -10072,7 +10600,7 @@
6276           [(match_operand:SI 2 "s_register_operand" "r,r")
6277            (match_operand:SI 3 "arm_rhs_operand" "rM,rM")])))
6278     (clobber (reg:CC CC_REGNUM))]
6279 -  "TARGET_ARM"
6280 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6281    "#"
6282    [(set_attr "conds" "clob")
6283     (set_attr "length" "8,12")]
6284 @@ -10094,10 +10622,24 @@
6285     mvn%d5\\t%0, #%B1\;mov%D5\\t%0, %2%S4"
6286    [(set_attr "conds" "use")
6287     (set_attr "shift" "2")
6288 -   (set_attr "length" "4,8,8")
6289 +   (set_attr "insn" "mov")
6290     (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "")
6291                       (const_string "alu_shift")
6292 -                     (const_string "alu_shift_reg")))]
6293 +                      (const_string "alu_shift_reg")))
6294 +     (set_attr_alternative "length"
6295 +        [(if_then_else (and (eq_attr "type" "alu_shift_reg")
6296 +                            (eq_attr "fix_janus" "yes"))
6297 +                       (const_int 8)
6298 +                       (const_int 4))
6299 +         (if_then_else (and (eq_attr "type" "alu_shift_reg")
6300 +                            (eq_attr "fix_janus" "yes"))
6301 +                       (const_int 12)
6302 +                       (const_int 8))
6303 +         (if_then_else (and (eq_attr "type" "alu_shift_reg")
6304 +                            (eq_attr "fix_janus" "yes"))
6305 +                       (const_int 12)
6306 +                       (const_int 8))])
6307 +     (set_attr "insn" "mov")]
6308  )
6309  
6310  (define_insn "*ifcompare_shift_shift"
6311 @@ -10113,7 +10655,7 @@
6312           [(match_operand:SI 3 "s_register_operand" "r")
6313            (match_operand:SI 4 "arm_rhs_operand" "rM")])))
6314     (clobber (reg:CC CC_REGNUM))]
6315 -  "TARGET_ARM"
6316 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6317    "#"
6318    [(set_attr "conds" "clob")
6319     (set_attr "length" "12")]
6320 @@ -10134,12 +10676,16 @@
6321    "mov%d5\\t%0, %1%S6\;mov%D5\\t%0, %3%S7"
6322    [(set_attr "conds" "use")
6323     (set_attr "shift" "1")
6324 -   (set_attr "length" "8")
6325 +   (set_attr "insn" "mov")
6326     (set (attr "type") (if_then_else
6327                         (and (match_operand 2 "const_int_operand" "")
6328                               (match_operand 4 "const_int_operand" ""))
6329                       (const_string "alu_shift")
6330 -                     (const_string "alu_shift_reg")))]
6331 +                      (const_string "alu_shift_reg")))
6332 +     (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg")
6333 +                                             (eq_attr "fix_janus" "yes"))
6334 +                                        (const_int 16)
6335 +                                        (const_int 8)))]
6336  )
6337  
6338  (define_insn "*ifcompare_not_arith"
6339 @@ -10153,7 +10699,7 @@
6340           [(match_operand:SI 2 "s_register_operand" "r")
6341            (match_operand:SI 3 "arm_rhs_operand" "rI")])))
6342     (clobber (reg:CC CC_REGNUM))]
6343 -  "TARGET_ARM"
6344 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6345    "#"
6346    [(set_attr "conds" "clob")
6347     (set_attr "length" "12")]
6348 @@ -10171,6 +10717,7 @@
6349    "TARGET_ARM"
6350    "mvn%d5\\t%0, %1\;%I6%D5\\t%0, %2, %3"
6351    [(set_attr "conds" "use")
6352 +   (set_attr "insn" "mvn")
6353     (set_attr "length" "8")]
6354  )
6355  
6356 @@ -10185,7 +10732,7 @@
6357            (match_operand:SI 3 "arm_rhs_operand" "rI")])
6358          (not:SI (match_operand:SI 1 "s_register_operand" "r"))))
6359     (clobber (reg:CC CC_REGNUM))]
6360 -  "TARGET_ARM"
6361 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6362    "#"
6363    [(set_attr "conds" "clob")
6364     (set_attr "length" "12")]
6365 @@ -10203,6 +10750,7 @@
6366    "TARGET_ARM"
6367    "mvn%D5\\t%0, %1\;%I6%d5\\t%0, %2, %3"
6368    [(set_attr "conds" "use")
6369 +   (set_attr "insn" "mvn")
6370     (set_attr "length" "8")]
6371  )
6372  
6373 @@ -10215,7 +10763,7 @@
6374          (neg:SI (match_operand:SI 2 "s_register_operand" "r,r"))
6375          (match_operand:SI 1 "arm_not_operand" "0,?rIK")))
6376     (clobber (reg:CC CC_REGNUM))]
6377 -  "TARGET_ARM"
6378 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6379    "#"
6380    [(set_attr "conds" "clob")
6381     (set_attr "length" "8,12")]
6382 @@ -10246,7 +10794,7 @@
6383          (match_operand:SI 1 "arm_not_operand" "0,?rIK")
6384          (neg:SI (match_operand:SI 2 "s_register_operand" "r,r"))))
6385     (clobber (reg:CC CC_REGNUM))]
6386 -  "TARGET_ARM"
6387 +  "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC"
6388    "#"
6389    [(set_attr "conds" "clob")
6390     (set_attr "length" "8,12")]
6391 @@ -10614,7 +11162,7 @@
6392                          (match_dup 0)
6393                          (match_operand 4 "" "")))
6394     (clobber (reg:CC CC_REGNUM))]
6395 -  "TARGET_ARM && reload_completed"
6396 +  "TARGET_ARM && reload_completed && !TARGET_NO_SINGLE_COND_EXEC"
6397    [(set (match_dup 5) (match_dup 6))
6398     (cond_exec (match_dup 7)
6399               (set (match_dup 0) (match_dup 4)))]
6400 @@ -10642,7 +11190,7 @@
6401                          (match_operand 4 "" "")
6402                          (match_dup 0)))
6403     (clobber (reg:CC CC_REGNUM))]
6404 -  "TARGET_ARM && reload_completed"
6405 +  "TARGET_ARM && reload_completed && !TARGET_NO_SINGLE_COND_EXEC"
6406    [(set (match_dup 5) (match_dup 6))
6407     (cond_exec (match_op_dup 1 [(match_dup 5) (const_int 0)])
6408               (set (match_dup 0) (match_dup 4)))]
6409 @@ -10663,7 +11211,7 @@
6410                          (match_operand 4 "" "")
6411                          (match_operand 5 "" "")))
6412     (clobber (reg:CC CC_REGNUM))]
6413 -  "TARGET_ARM && reload_completed"
6414 +  "TARGET_ARM && reload_completed && !TARGET_NO_SINGLE_COND_EXEC"
6415    [(set (match_dup 6) (match_dup 7))
6416     (cond_exec (match_op_dup 1 [(match_dup 6) (const_int 0)])
6417               (set (match_dup 0) (match_dup 4)))
6418 @@ -10695,7 +11243,7 @@
6419                          (not:SI
6420                           (match_operand:SI 5 "s_register_operand" ""))))
6421     (clobber (reg:CC CC_REGNUM))]
6422 -  "TARGET_ARM && reload_completed"
6423 +  "TARGET_ARM && reload_completed && !TARGET_NO_SINGLE_COND_EXEC"
6424    [(set (match_dup 6) (match_dup 7))
6425     (cond_exec (match_op_dup 1 [(match_dup 6) (const_int 0)])
6426               (set (match_dup 0) (match_dup 4)))
6427 @@ -10730,6 +11278,7 @@
6428     mvn%D4\\t%0, %2
6429     mov%d4\\t%0, %1\;mvn%D4\\t%0, %2"
6430    [(set_attr "conds" "use")
6431 +   (set_attr "insn" "mvn")
6432     (set_attr "length" "4,8")]
6433  )
6434  
6435 @@ -10864,6 +11413,24 @@
6436    "
6437  )
6438  
6439 +(define_insn "align_16"
6440 +  [(unspec_volatile [(const_int 0)] VUNSPEC_ALIGN16)]
6441 +  "TARGET_EITHER"
6442 +  "*
6443 +  assemble_align (128);
6444 +  return \"\";
6445 +  "
6446 +)
6447 +
6448 +(define_insn "align_32"
6449 +  [(unspec_volatile [(const_int 0)] VUNSPEC_ALIGN32)]
6450 +  "TARGET_EITHER"
6451 +  "*
6452 +  assemble_align (256);
6453 +  return \"\";
6454 +  "
6455 +)
6456 +
6457  (define_insn "consttable_end"
6458    [(unspec_volatile [(const_int 0)] VUNSPEC_POOL_END)]
6459    "TARGET_EITHER"
6460 @@ -10890,6 +11457,7 @@
6461    "TARGET_THUMB1"
6462    "*
6463    making_const_table = TRUE;
6464 +  gcc_assert (GET_MODE_CLASS (GET_MODE (operands[0])) != MODE_FLOAT);
6465    assemble_integer (operands[0], 2, BITS_PER_WORD, 1);
6466    assemble_zeros (2);
6467    return \"\";
6468 @@ -10902,19 +11470,30 @@
6469    "TARGET_EITHER"
6470    "*
6471    {
6472 +    rtx x = operands[0];
6473      making_const_table = TRUE;
6474 -    switch (GET_MODE_CLASS (GET_MODE (operands[0])))
6475 +    switch (GET_MODE_CLASS (GET_MODE (x)))
6476        {
6477        case MODE_FLOAT:
6478 -      {
6479 -        REAL_VALUE_TYPE r;
6480 -        REAL_VALUE_FROM_CONST_DOUBLE (r, operands[0]);
6481 -        assemble_real (r, GET_MODE (operands[0]), BITS_PER_WORD);
6482 -        break;
6483 -      }
6484 +        if (GET_MODE (x) == HFmode)
6485 +         arm_emit_fp16_const (x);
6486 +       else
6487 +         {
6488 +           REAL_VALUE_TYPE r;
6489 +           REAL_VALUE_FROM_CONST_DOUBLE (r, x);
6490 +           assemble_real (r, GET_MODE (x), BITS_PER_WORD);
6491 +         }
6492 +       break;
6493        default:
6494 -        assemble_integer (operands[0], 4, BITS_PER_WORD, 1);
6495 -       mark_symbol_refs_as_used (operands[0]);
6496 +       /* XXX: Sometimes gcc does something really dumb and ends up with
6497 +          a HIGH in a constant pool entry, usually because it's trying to
6498 +          load into a VFP register.  We know this will always be used in
6499 +          combination with a LO_SUM which ignores the high bits, so just
6500 +          strip off the HIGH.  */
6501 +       if (GET_CODE (x) == HIGH)
6502 +         x = XEXP (x, 0);
6503 +        assemble_integer (x, 4, BITS_PER_WORD, 1);
6504 +       mark_symbol_refs_as_used (x);
6505          break;
6506        }
6507      return \"\";
6508 @@ -11008,6 +11587,28 @@
6509    [(set_attr "predicable" "yes")
6510     (set_attr "insn" "clz")])
6511  
6512 +(define_insn "rbitsi2"
6513 +  [(set (match_operand:SI 0 "s_register_operand" "=r")
6514 +       (unspec:SI [(match_operand:SI 1 "s_register_operand" "r")] UNSPEC_RBIT))]
6515 +  "TARGET_32BIT && arm_arch_thumb2"
6516 +  "rbit%?\\t%0, %1"
6517 +  [(set_attr "predicable" "yes")
6518 +   (set_attr "insn" "clz")])
6519 +
6520 +(define_expand "ctzsi2"
6521 + [(set (match_operand:SI           0 "s_register_operand" "")
6522 +       (ctz:SI (match_operand:SI  1 "s_register_operand" "")))]
6523 +  "TARGET_32BIT && arm_arch_thumb2"
6524 +  "
6525 +   {
6526 +     rtx tmp = gen_reg_rtx (SImode); 
6527 +     emit_insn (gen_rbitsi2 (tmp, operands[1]));
6528 +     emit_insn (gen_clzsi2 (operands[0], tmp));
6529 +   }
6530 +   DONE;
6531 +  "
6532 +)
6533 +
6534  ;; V5E instructions.
6535  
6536  (define_insn "prefetch"
6537 @@ -11017,13 +11618,15 @@
6538    "TARGET_32BIT && arm_arch5e"
6539    "pld\\t%a0")
6540  
6541 -;; General predication pattern
6542 +;; General predication pattern.
6543 +;; Conditional branches are available as both arm_cond_branch and
6544 +;; predicated arm_jump, so it doesn't matter if we disable the latter.
6545  
6546  (define_cond_exec
6547    [(match_operator 0 "arm_comparison_operator"
6548      [(match_operand 1 "cc_register" "")
6549       (const_int 0)])]
6550 -  "TARGET_32BIT"
6551 +  "TARGET_32BIT && !TARGET_NO_SINGLE_COND_EXEC"
6552    ""
6553  )
6554  
6555 diff -Nur a/gcc/config/arm/arm-modes.def b/gcc/config/arm/arm-modes.def
6556 --- a/gcc/config/arm/arm-modes.def      2007-08-02 12:49:31.000000000 +0200
6557 +++ b/gcc/config/arm/arm-modes.def      2010-01-25 09:50:28.985687200 +0100
6558 @@ -25,6 +25,11 @@
6559     FIXME What format is this?  */
6560  FLOAT_MODE (XF, 12, 0);
6561  
6562 +/* Half-precision floating point */
6563 +FLOAT_MODE (HF, 2, 0);
6564 +ADJUST_FLOAT_FORMAT (HF, ((arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE)
6565 +                         ? &arm_half_format : &ieee_half_format));
6566 +
6567  /* CCFPEmode should be used with floating inequalities,
6568     CCFPmode should be used with floating equalities.
6569     CC_NOOVmode should be used with SImode integer equalities.
6570 @@ -62,6 +67,4 @@
6571  INT_MODE (EI, 24);
6572  INT_MODE (OI, 32);
6573  INT_MODE (CI, 48);
6574 -/* ??? This should actually have 512 bits but the precision only has 9
6575 -   bits.  */
6576 -FRACTIONAL_INT_MODE (XI, 511, 64);
6577 +INT_MODE (XI, 64);
6578 diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
6579 --- a/gcc/config/arm/arm_neon.h 2009-04-10 01:23:07.000000000 +0200
6580 +++ b/gcc/config/arm/arm_neon.h 2010-01-25 09:50:28.985687200 +0100
6581 @@ -36,7 +36,11 @@
6582  extern "C" {
6583  #endif
6584  
6585 +#if defined (__vxworks) && defined (_WRS_KERNEL)
6586 +#include <vxWorks.h>
6587 +#else
6588  #include <stdint.h>
6589 +#endif
6590  
6591  typedef __builtin_neon_qi int8x8_t     __attribute__ ((__vector_size__ (8)));
6592  typedef __builtin_neon_hi int16x4_t    __attribute__ ((__vector_size__ (8)));
6593 @@ -61,7 +65,7 @@
6594  typedef __builtin_neon_usi uint32x4_t  __attribute__ ((__vector_size__ (16)));
6595  typedef __builtin_neon_udi uint64x2_t  __attribute__ ((__vector_size__ (16)));
6596  
6597 -typedef __builtin_neon_sf float32_t;
6598 +typedef float float32_t;
6599  typedef __builtin_neon_poly8 poly8_t;
6600  typedef __builtin_neon_poly16 poly16_t;
6601  
6602 @@ -5085,7 +5089,7 @@
6603  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
6604  vset_lane_f32 (float32_t __a, float32x2_t __b, const int __c)
6605  {
6606 -  return (float32x2_t)__builtin_neon_vset_lanev2sf (__a, __b, __c);
6607 +  return (float32x2_t)__builtin_neon_vset_lanev2sf ((__builtin_neon_sf) __a, __b, __c);
6608  }
6609  
6610  __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
6611 @@ -5151,7 +5155,7 @@
6612  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
6613  vsetq_lane_f32 (float32_t __a, float32x4_t __b, const int __c)
6614  {
6615 -  return (float32x4_t)__builtin_neon_vset_lanev4sf (__a, __b, __c);
6616 +  return (float32x4_t)__builtin_neon_vset_lanev4sf ((__builtin_neon_sf) __a, __b, __c);
6617  }
6618  
6619  __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
6620 @@ -5283,7 +5287,7 @@
6621  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
6622  vdup_n_f32 (float32_t __a)
6623  {
6624 -  return (float32x2_t)__builtin_neon_vdup_nv2sf (__a);
6625 +  return (float32x2_t)__builtin_neon_vdup_nv2sf ((__builtin_neon_sf) __a);
6626  }
6627  
6628  __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
6629 @@ -5349,7 +5353,7 @@
6630  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
6631  vdupq_n_f32 (float32_t __a)
6632  {
6633 -  return (float32x4_t)__builtin_neon_vdup_nv4sf (__a);
6634 +  return (float32x4_t)__builtin_neon_vdup_nv4sf ((__builtin_neon_sf) __a);
6635  }
6636  
6637  __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
6638 @@ -5415,7 +5419,7 @@
6639  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
6640  vmov_n_f32 (float32_t __a)
6641  {
6642 -  return (float32x2_t)__builtin_neon_vdup_nv2sf (__a);
6643 +  return (float32x2_t)__builtin_neon_vdup_nv2sf ((__builtin_neon_sf) __a);
6644  }
6645  
6646  __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
6647 @@ -5481,7 +5485,7 @@
6648  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
6649  vmovq_n_f32 (float32_t __a)
6650  {
6651 -  return (float32x4_t)__builtin_neon_vdup_nv4sf (__a);
6652 +  return (float32x4_t)__builtin_neon_vdup_nv4sf ((__builtin_neon_sf) __a);
6653  }
6654  
6655  __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
6656 @@ -6591,7 +6595,7 @@
6657  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
6658  vmul_n_f32 (float32x2_t __a, float32_t __b)
6659  {
6660 -  return (float32x2_t)__builtin_neon_vmul_nv2sf (__a, __b, 3);
6661 +  return (float32x2_t)__builtin_neon_vmul_nv2sf (__a, (__builtin_neon_sf) __b, 3);
6662  }
6663  
6664  __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
6665 @@ -6621,7 +6625,7 @@
6666  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
6667  vmulq_n_f32 (float32x4_t __a, float32_t __b)
6668  {
6669 -  return (float32x4_t)__builtin_neon_vmul_nv4sf (__a, __b, 3);
6670 +  return (float32x4_t)__builtin_neon_vmul_nv4sf (__a, (__builtin_neon_sf) __b, 3);
6671  }
6672  
6673  __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
6674 @@ -6735,7 +6739,7 @@
6675  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
6676  vmla_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)
6677  {
6678 -  return (float32x2_t)__builtin_neon_vmla_nv2sf (__a, __b, __c, 3);
6679 +  return (float32x2_t)__builtin_neon_vmla_nv2sf (__a, __b, (__builtin_neon_sf) __c, 3);
6680  }
6681  
6682  __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
6683 @@ -6765,7 +6769,7 @@
6684  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
6685  vmlaq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)
6686  {
6687 -  return (float32x4_t)__builtin_neon_vmla_nv4sf (__a, __b, __c, 3);
6688 +  return (float32x4_t)__builtin_neon_vmla_nv4sf (__a, __b, (__builtin_neon_sf) __c, 3);
6689  }
6690  
6691  __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
6692 @@ -6831,7 +6835,7 @@
6693  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
6694  vmls_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)
6695  {
6696 -  return (float32x2_t)__builtin_neon_vmls_nv2sf (__a, __b, __c, 3);
6697 +  return (float32x2_t)__builtin_neon_vmls_nv2sf (__a, __b, (__builtin_neon_sf) __c, 3);
6698  }
6699  
6700  __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
6701 @@ -6861,7 +6865,7 @@
6702  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
6703  vmlsq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)
6704  {
6705 -  return (float32x4_t)__builtin_neon_vmls_nv4sf (__a, __b, __c, 3);
6706 +  return (float32x4_t)__builtin_neon_vmls_nv4sf (__a, __b, (__builtin_neon_sf) __c, 3);
6707  }
6708  
6709  __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
6710 @@ -7851,7 +7855,7 @@
6711  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
6712  vld1_f32 (const float32_t * __a)
6713  {
6714 -  return (float32x2_t)__builtin_neon_vld1v2sf (__a);
6715 +  return (float32x2_t)__builtin_neon_vld1v2sf ((const __builtin_neon_sf *) __a);
6716  }
6717  
6718  __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
6719 @@ -7917,7 +7921,7 @@
6720  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
6721  vld1q_f32 (const float32_t * __a)
6722  {
6723 -  return (float32x4_t)__builtin_neon_vld1v4sf (__a);
6724 +  return (float32x4_t)__builtin_neon_vld1v4sf ((const __builtin_neon_sf *) __a);
6725  }
6726  
6727  __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
6728 @@ -7977,7 +7981,7 @@
6729  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
6730  vld1_lane_f32 (const float32_t * __a, float32x2_t __b, const int __c)
6731  {
6732 -  return (float32x2_t)__builtin_neon_vld1_lanev2sf (__a, __b, __c);
6733 +  return (float32x2_t)__builtin_neon_vld1_lanev2sf ((const __builtin_neon_sf *) __a, __b, __c);
6734  }
6735  
6736  __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
6737 @@ -8043,7 +8047,7 @@
6738  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
6739  vld1q_lane_f32 (const float32_t * __a, float32x4_t __b, const int __c)
6740  {
6741 -  return (float32x4_t)__builtin_neon_vld1_lanev4sf (__a, __b, __c);
6742 +  return (float32x4_t)__builtin_neon_vld1_lanev4sf ((const __builtin_neon_sf *) __a, __b, __c);
6743  }
6744  
6745  __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
6746 @@ -8109,7 +8113,7 @@
6747  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
6748  vld1_dup_f32 (const float32_t * __a)
6749  {
6750 -  return (float32x2_t)__builtin_neon_vld1_dupv2sf (__a);
6751 +  return (float32x2_t)__builtin_neon_vld1_dupv2sf ((const __builtin_neon_sf *) __a);
6752  }
6753  
6754  __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
6755 @@ -8175,7 +8179,7 @@
6756  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
6757  vld1q_dup_f32 (const float32_t * __a)
6758  {
6759 -  return (float32x4_t)__builtin_neon_vld1_dupv4sf (__a);
6760 +  return (float32x4_t)__builtin_neon_vld1_dupv4sf ((const __builtin_neon_sf *) __a);
6761  }
6762  
6763  __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
6764 @@ -8247,7 +8251,7 @@
6765  __extension__ static __inline void __attribute__ ((__always_inline__))
6766  vst1_f32 (float32_t * __a, float32x2_t __b)
6767  {
6768 -  __builtin_neon_vst1v2sf (__a, __b);
6769 +  __builtin_neon_vst1v2sf ((__builtin_neon_sf *) __a, __b);
6770  }
6771  
6772  __extension__ static __inline void __attribute__ ((__always_inline__))
6773 @@ -8313,7 +8317,7 @@
6774  __extension__ static __inline void __attribute__ ((__always_inline__))
6775  vst1q_f32 (float32_t * __a, float32x4_t __b)
6776  {
6777 -  __builtin_neon_vst1v4sf (__a, __b);
6778 +  __builtin_neon_vst1v4sf ((__builtin_neon_sf *) __a, __b);
6779  }
6780  
6781  __extension__ static __inline void __attribute__ ((__always_inline__))
6782 @@ -8373,7 +8377,7 @@
6783  __extension__ static __inline void __attribute__ ((__always_inline__))
6784  vst1_lane_f32 (float32_t * __a, float32x2_t __b, const int __c)
6785  {
6786 -  __builtin_neon_vst1_lanev2sf (__a, __b, __c);
6787 +  __builtin_neon_vst1_lanev2sf ((__builtin_neon_sf *) __a, __b, __c);
6788  }
6789  
6790  __extension__ static __inline void __attribute__ ((__always_inline__))
6791 @@ -8439,7 +8443,7 @@
6792  __extension__ static __inline void __attribute__ ((__always_inline__))
6793  vst1q_lane_f32 (float32_t * __a, float32x4_t __b, const int __c)
6794  {
6795 -  __builtin_neon_vst1_lanev4sf (__a, __b, __c);
6796 +  __builtin_neon_vst1_lanev4sf ((__builtin_neon_sf *) __a, __b, __c);
6797  }
6798  
6799  __extension__ static __inline void __attribute__ ((__always_inline__))
6800 @@ -8512,7 +8516,7 @@
6801  vld2_f32 (const float32_t * __a)
6802  {
6803    union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv;
6804 -  __rv.__o = __builtin_neon_vld2v2sf (__a);
6805 +  __rv.__o = __builtin_neon_vld2v2sf ((const __builtin_neon_sf *) __a);
6806    return __rv.__i;
6807  }
6808  
6809 @@ -8600,7 +8604,7 @@
6810  vld2q_f32 (const float32_t * __a)
6811  {
6812    union { float32x4x2_t __i; __builtin_neon_oi __o; } __rv;
6813 -  __rv.__o = __builtin_neon_vld2v4sf (__a);
6814 +  __rv.__o = __builtin_neon_vld2v4sf ((const __builtin_neon_sf *) __a);
6815    return __rv.__i;
6816  }
6817  
6818 @@ -8676,7 +8680,7 @@
6819  {
6820    union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
6821    union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv;
6822 -  __rv.__o = __builtin_neon_vld2_lanev2sf (__a, __bu.__o, __c);
6823 +  __rv.__o = __builtin_neon_vld2_lanev2sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
6824    return __rv.__i;
6825  }
6826  
6827 @@ -8748,7 +8752,7 @@
6828  {
6829    union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
6830    union { float32x4x2_t __i; __builtin_neon_oi __o; } __rv;
6831 -  __rv.__o = __builtin_neon_vld2_lanev4sf (__a, __bu.__o, __c);
6832 +  __rv.__o = __builtin_neon_vld2_lanev4sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
6833    return __rv.__i;
6834  }
6835  
6836 @@ -8807,7 +8811,7 @@
6837  vld2_dup_f32 (const float32_t * __a)
6838  {
6839    union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv;
6840 -  __rv.__o = __builtin_neon_vld2_dupv2sf (__a);
6841 +  __rv.__o = __builtin_neon_vld2_dupv2sf ((const __builtin_neon_sf *) __a);
6842    return __rv.__i;
6843  }
6844  
6845 @@ -8892,7 +8896,7 @@
6846  vst2_f32 (float32_t * __a, float32x2x2_t __b)
6847  {
6848    union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
6849 -  __builtin_neon_vst2v2sf (__a, __bu.__o);
6850 +  __builtin_neon_vst2v2sf ((__builtin_neon_sf *) __a, __bu.__o);
6851  }
6852  
6853  __extension__ static __inline void __attribute__ ((__always_inline__))
6854 @@ -8969,7 +8973,7 @@
6855  vst2q_f32 (float32_t * __a, float32x4x2_t __b)
6856  {
6857    union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
6858 -  __builtin_neon_vst2v4sf (__a, __bu.__o);
6859 +  __builtin_neon_vst2v4sf ((__builtin_neon_sf *) __a, __bu.__o);
6860  }
6861  
6862  __extension__ static __inline void __attribute__ ((__always_inline__))
6863 @@ -9032,7 +9036,7 @@
6864  vst2_lane_f32 (float32_t * __a, float32x2x2_t __b, const int __c)
6865  {
6866    union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
6867 -  __builtin_neon_vst2_lanev2sf (__a, __bu.__o, __c);
6868 +  __builtin_neon_vst2_lanev2sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
6869  }
6870  
6871  __extension__ static __inline void __attribute__ ((__always_inline__))
6872 @@ -9088,7 +9092,7 @@
6873  vst2q_lane_f32 (float32_t * __a, float32x4x2_t __b, const int __c)
6874  {
6875    union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
6876 -  __builtin_neon_vst2_lanev4sf (__a, __bu.__o, __c);
6877 +  __builtin_neon_vst2_lanev4sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
6878  }
6879  
6880  __extension__ static __inline void __attribute__ ((__always_inline__))
6881 @@ -9140,7 +9144,7 @@
6882  vld3_f32 (const float32_t * __a)
6883  {
6884    union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv;
6885 -  __rv.__o = __builtin_neon_vld3v2sf (__a);
6886 +  __rv.__o = __builtin_neon_vld3v2sf ((const __builtin_neon_sf *) __a);
6887    return __rv.__i;
6888  }
6889  
6890 @@ -9228,7 +9232,7 @@
6891  vld3q_f32 (const float32_t * __a)
6892  {
6893    union { float32x4x3_t __i; __builtin_neon_ci __o; } __rv;
6894 -  __rv.__o = __builtin_neon_vld3v4sf (__a);
6895 +  __rv.__o = __builtin_neon_vld3v4sf ((const __builtin_neon_sf *) __a);
6896    return __rv.__i;
6897  }
6898  
6899 @@ -9304,7 +9308,7 @@
6900  {
6901    union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
6902    union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv;
6903 -  __rv.__o = __builtin_neon_vld3_lanev2sf (__a, __bu.__o, __c);
6904 +  __rv.__o = __builtin_neon_vld3_lanev2sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
6905    return __rv.__i;
6906  }
6907  
6908 @@ -9376,7 +9380,7 @@
6909  {
6910    union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
6911    union { float32x4x3_t __i; __builtin_neon_ci __o; } __rv;
6912 -  __rv.__o = __builtin_neon_vld3_lanev4sf (__a, __bu.__o, __c);
6913 +  __rv.__o = __builtin_neon_vld3_lanev4sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
6914    return __rv.__i;
6915  }
6916  
6917 @@ -9435,7 +9439,7 @@
6918  vld3_dup_f32 (const float32_t * __a)
6919  {
6920    union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv;
6921 -  __rv.__o = __builtin_neon_vld3_dupv2sf (__a);
6922 +  __rv.__o = __builtin_neon_vld3_dupv2sf ((const __builtin_neon_sf *) __a);
6923    return __rv.__i;
6924  }
6925  
6926 @@ -9520,7 +9524,7 @@
6927  vst3_f32 (float32_t * __a, float32x2x3_t __b)
6928  {
6929    union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
6930 -  __builtin_neon_vst3v2sf (__a, __bu.__o);
6931 +  __builtin_neon_vst3v2sf ((__builtin_neon_sf *) __a, __bu.__o);
6932  }
6933  
6934  __extension__ static __inline void __attribute__ ((__always_inline__))
6935 @@ -9597,7 +9601,7 @@
6936  vst3q_f32 (float32_t * __a, float32x4x3_t __b)
6937  {
6938    union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
6939 -  __builtin_neon_vst3v4sf (__a, __bu.__o);
6940 +  __builtin_neon_vst3v4sf ((__builtin_neon_sf *) __a, __bu.__o);
6941  }
6942  
6943  __extension__ static __inline void __attribute__ ((__always_inline__))
6944 @@ -9660,7 +9664,7 @@
6945  vst3_lane_f32 (float32_t * __a, float32x2x3_t __b, const int __c)
6946  {
6947    union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
6948 -  __builtin_neon_vst3_lanev2sf (__a, __bu.__o, __c);
6949 +  __builtin_neon_vst3_lanev2sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
6950  }
6951  
6952  __extension__ static __inline void __attribute__ ((__always_inline__))
6953 @@ -9716,7 +9720,7 @@
6954  vst3q_lane_f32 (float32_t * __a, float32x4x3_t __b, const int __c)
6955  {
6956    union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
6957 -  __builtin_neon_vst3_lanev4sf (__a, __bu.__o, __c);
6958 +  __builtin_neon_vst3_lanev4sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
6959  }
6960  
6961  __extension__ static __inline void __attribute__ ((__always_inline__))
6962 @@ -9768,7 +9772,7 @@
6963  vld4_f32 (const float32_t * __a)
6964  {
6965    union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv;
6966 -  __rv.__o = __builtin_neon_vld4v2sf (__a);
6967 +  __rv.__o = __builtin_neon_vld4v2sf ((const __builtin_neon_sf *) __a);
6968    return __rv.__i;
6969  }
6970  
6971 @@ -9856,7 +9860,7 @@
6972  vld4q_f32 (const float32_t * __a)
6973  {
6974    union { float32x4x4_t __i; __builtin_neon_xi __o; } __rv;
6975 -  __rv.__o = __builtin_neon_vld4v4sf (__a);
6976 +  __rv.__o = __builtin_neon_vld4v4sf ((const __builtin_neon_sf *) __a);
6977    return __rv.__i;
6978  }
6979  
6980 @@ -9932,7 +9936,7 @@
6981  {
6982    union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
6983    union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv;
6984 -  __rv.__o = __builtin_neon_vld4_lanev2sf (__a, __bu.__o, __c);
6985 +  __rv.__o = __builtin_neon_vld4_lanev2sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
6986    return __rv.__i;
6987  }
6988  
6989 @@ -10004,7 +10008,7 @@
6990  {
6991    union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
6992    union { float32x4x4_t __i; __builtin_neon_xi __o; } __rv;
6993 -  __rv.__o = __builtin_neon_vld4_lanev4sf (__a, __bu.__o, __c);
6994 +  __rv.__o = __builtin_neon_vld4_lanev4sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
6995    return __rv.__i;
6996  }
6997  
6998 @@ -10063,7 +10067,7 @@
6999  vld4_dup_f32 (const float32_t * __a)
7000  {
7001    union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv;
7002 -  __rv.__o = __builtin_neon_vld4_dupv2sf (__a);
7003 +  __rv.__o = __builtin_neon_vld4_dupv2sf ((const __builtin_neon_sf *) __a);
7004    return __rv.__i;
7005  }
7006  
7007 @@ -10148,7 +10152,7 @@
7008  vst4_f32 (float32_t * __a, float32x2x4_t __b)
7009  {
7010    union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
7011 -  __builtin_neon_vst4v2sf (__a, __bu.__o);
7012 +  __builtin_neon_vst4v2sf ((__builtin_neon_sf *) __a, __bu.__o);
7013  }
7014  
7015  __extension__ static __inline void __attribute__ ((__always_inline__))
7016 @@ -10225,7 +10229,7 @@
7017  vst4q_f32 (float32_t * __a, float32x4x4_t __b)
7018  {
7019    union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
7020 -  __builtin_neon_vst4v4sf (__a, __bu.__o);
7021 +  __builtin_neon_vst4v4sf ((__builtin_neon_sf *) __a, __bu.__o);
7022  }
7023  
7024  __extension__ static __inline void __attribute__ ((__always_inline__))
7025 @@ -10288,7 +10292,7 @@
7026  vst4_lane_f32 (float32_t * __a, float32x2x4_t __b, const int __c)
7027  {
7028    union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
7029 -  __builtin_neon_vst4_lanev2sf (__a, __bu.__o, __c);
7030 +  __builtin_neon_vst4_lanev2sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
7031  }
7032  
7033  __extension__ static __inline void __attribute__ ((__always_inline__))
7034 @@ -10344,7 +10348,7 @@
7035  vst4q_lane_f32 (float32_t * __a, float32x4x4_t __b, const int __c)
7036  {
7037    union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
7038 -  __builtin_neon_vst4_lanev4sf (__a, __bu.__o, __c);
7039 +  __builtin_neon_vst4_lanev4sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
7040  }
7041  
7042  __extension__ static __inline void __attribute__ ((__always_inline__))
7043 diff -Nur a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
7044 --- a/gcc/config/arm/arm.opt    2009-02-20 16:20:38.000000000 +0100
7045 +++ b/gcc/config/arm/arm.opt    2010-01-25 09:50:28.985687200 +0100
7046 @@ -78,6 +78,10 @@
7047  mfp=
7048  Target RejectNegative Joined Undocumented Var(target_fpe_name)
7049  
7050 +mfp16-format=
7051 +Target RejectNegative Joined Var(target_fp16_format_name)
7052 +Specify the __fp16 floating-point format
7053 +
7054  ;; Now ignored.
7055  mfpe
7056  Target RejectNegative Mask(FPE) Undocumented
7057 @@ -93,6 +97,10 @@
7058  Target RejectNegative
7059  Alias for -mfloat-abi=hard
7060  
7061 +mfix-janus-2cc
7062 +Target Report Mask(FIX_JANUS)
7063 +Work around hardware errata for Avalent Janus 2CC cores.
7064 +
7065  mlittle-endian
7066  Target Report RejectNegative InverseMask(BIG_END)
7067  Assume target CPU is configured as little endian
7068 @@ -101,6 +109,10 @@
7069  Target Report Mask(LONG_CALLS)
7070  Generate call insns as indirect calls, if necessary
7071  
7072 +mmarvell-div
7073 +Target Report Mask(MARVELL_DIV)
7074 +Generate hardware integer division instructions supported by some Marvell cores.
7075 +
7076  mpic-register=
7077  Target RejectNegative Joined Var(arm_pic_register_string)
7078  Specify the register to be used for PIC addressing
7079 @@ -157,6 +169,10 @@
7080  Target Report Mask(NEON_VECTORIZE_QUAD)
7081  Use Neon quad-word (rather than double-word) registers for vectorization
7082  
7083 +mlow-irq-latency
7084 +Target Report Var(low_irq_latency)
7085 +Try to reduce interrupt latency of the generated code
7086 +
7087  mword-relocations
7088  Target Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS)
7089  Only generate absolute relocations on word sized values.
7090 diff -Nur a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h
7091 --- a/gcc/config/arm/arm-protos.h       2009-02-20 16:20:38.000000000 +0100
7092 +++ b/gcc/config/arm/arm-protos.h       2010-01-25 09:50:28.985687200 +0100
7093 @@ -88,7 +88,7 @@
7094  
7095  extern int cirrus_memory_offset (rtx);
7096  extern int arm_coproc_mem_operand (rtx, bool);
7097 -extern int neon_vector_mem_operand (rtx, bool);
7098 +extern int neon_vector_mem_operand (rtx, int);
7099  extern int neon_struct_mem_operand (rtx);
7100  extern int arm_no_early_store_addr_dep (rtx, rtx);
7101  extern int arm_no_early_alu_shift_dep (rtx, rtx);
7102 @@ -144,6 +144,7 @@
7103  extern int arm_debugger_arg_offset (int, rtx);
7104  extern bool arm_is_long_call_p (tree);
7105  extern int    arm_emit_vector_const (FILE *, rtx);
7106 +extern void arm_emit_fp16_const (rtx c);
7107  extern const char * arm_output_load_gr (rtx *);
7108  extern const char *vfp_output_fstmd (rtx *);
7109  extern void arm_set_return_address (rtx, rtx);
7110 @@ -154,13 +155,15 @@
7111  
7112  #if defined TREE_CODE
7113  extern rtx arm_function_arg (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
7114 +extern void arm_function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode,
7115 +                                     tree, bool);
7116  extern void arm_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree);
7117  extern bool arm_pad_arg_upward (enum machine_mode, const_tree);
7118  extern bool arm_pad_reg_upward (enum machine_mode, tree, int);
7119  extern bool arm_needs_doubleword_align (enum machine_mode, tree);
7120 -extern rtx arm_function_value(const_tree, const_tree);
7121  #endif
7122  extern int arm_apply_result_size (void);
7123 +extern rtx aapcs_libcall_value (enum machine_mode);
7124  
7125  #endif /* RTX_CODE */
7126  
7127 diff -Nur a/gcc/config/arm/arm-tune.md b/gcc/config/arm/arm-tune.md
7128 --- a/gcc/config/arm/arm-tune.md        2009-07-22 09:43:59.000000000 +0200
7129 +++ b/gcc/config/arm/arm-tune.md        2010-01-25 09:50:28.985687200 +0100
7130 @@ -1,5 +1,5 @@
7131  ;; -*- buffer-read-only: t -*-
7132  ;; Generated automatically by gentune.sh from arm-cores.def
7133  (define_attr "tune"
7134 -       "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"
7135 +       "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"
7136         (const (symbol_ref "arm_tune")))
7137 diff -Nur a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h
7138 --- a/gcc/config/arm/bpabi.h    2009-02-20 16:20:38.000000000 +0100
7139 +++ b/gcc/config/arm/bpabi.h    2010-01-25 09:50:28.985687200 +0100
7140 @@ -30,7 +30,7 @@
7141  
7142  /* Section 4.1 of the AAPCS requires the use of VFP format.  */
7143  #undef  FPUTYPE_DEFAULT
7144 -#define FPUTYPE_DEFAULT FPUTYPE_VFP
7145 +#define FPUTYPE_DEFAULT "vfp"
7146  
7147  /* TARGET_BIG_ENDIAN_DEFAULT is set in
7148     config.gcc for big endian configurations.  */
7149 @@ -53,6 +53,8 @@
7150  
7151  #define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4:--fix-v4bx}"
7152  
7153 +#define BE8_LINK_SPEC " %{mbig-endian:%{march=armv7-a|mcpu=cortex-a5|mcpu=cortex-a8|mcpu=cortex-a9:%{!r:--be8}}}"
7154 +
7155  /* Tell the assembler to build BPABI binaries.  */
7156  #undef  SUBTARGET_EXTRA_ASM_SPEC
7157  #define SUBTARGET_EXTRA_ASM_SPEC "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=5}" TARGET_FIX_V4BX_SPEC
7158 @@ -65,7 +67,7 @@
7159  #define BPABI_LINK_SPEC \
7160    "%{mbig-endian:-EB} %{mlittle-endian:-EL} "          \
7161    "%{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic} "       \
7162 -  "-X" SUBTARGET_EXTRA_LINK_SPEC TARGET_FIX_V4BX_SPEC
7163 +  "-X" SUBTARGET_EXTRA_LINK_SPEC TARGET_FIX_V4BX_SPEC BE8_LINK_SPEC
7164  
7165  #undef  LINK_SPEC
7166  #define LINK_SPEC BPABI_LINK_SPEC
7167 @@ -90,16 +92,22 @@
7168  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldi3, lmul)
7169  #endif
7170  #ifdef L_fixdfdi
7171 -#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, d2lz)
7172 +#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, d2lz) \
7173 +  extern DWtype __fixdfdi (DFtype) __attribute__((pcs("aapcs"))); \
7174 +  extern UDWtype __fixunsdfdi (DFtype) __asm__("__aeabi_d2ulz") __attribute__((pcs("aapcs")));
7175  #endif
7176  #ifdef L_fixunsdfdi
7177 -#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, d2ulz)
7178 +#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, d2ulz) \
7179 +  extern UDWtype __fixunsdfdi (DFtype) __attribute__((pcs("aapcs")));
7180  #endif
7181  #ifdef L_fixsfdi
7182 -#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, f2lz)
7183 +#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, f2lz) \
7184 +  extern DWtype __fixsfdi (SFtype) __attribute__((pcs("aapcs"))); \
7185 +  extern UDWtype __fixunssfdi (SFtype) __asm__("__aeabi_f2ulz") __attribute__((pcs("aapcs")));
7186  #endif
7187  #ifdef L_fixunssfdi
7188 -#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, f2ulz)
7189 +#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, f2ulz) \
7190 +  extern UDWtype __fixunssfdi (SFtype) __attribute__((pcs("aapcs")));
7191  #endif
7192  #ifdef L_floatdidf
7193  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdidf, l2d)
7194 diff -Nur a/gcc/config/arm/bpabi.S b/gcc/config/arm/bpabi.S
7195 --- a/gcc/config/arm/bpabi.S    2009-04-10 01:23:07.000000000 +0200
7196 +++ b/gcc/config/arm/bpabi.S    2010-01-25 09:50:28.985687200 +0100
7197 @@ -64,20 +64,69 @@
7198  
7199  #endif /* L_aeabi_ulcmp */
7200  
7201 +.macro test_div_by_zero signed
7202 +/* Tail-call to divide-by-zero handlers which may be overridden by the user,
7203 +   so unwinding works properly.  */
7204 +#if defined(__thumb2__)
7205 +       cbnz    yyh, 1f
7206 +       cbnz    yyl, 1f
7207 +       cmp     xxh, #0
7208 +       do_it   eq
7209 +       cmpeq   xxl, #0
7210 +       .ifc \signed, unsigned
7211 +       beq     2f
7212 +       mov     xxh, #0xffffffff
7213 +       mov     xxl, xxh
7214 +2:
7215 +       .else
7216 +       do_it   lt, t
7217 +       movlt   xxl, #0
7218 +       movlt   xxh, #0x80000000
7219 +       do_it   gt, t
7220 +       movgt   xxh, #0x7fffffff
7221 +       movgt   xxl, #0xffffffff
7222 +       .endif
7223 +       b       SYM (__aeabi_ldiv0) __PLT__
7224 +1:
7225 +#else
7226 +       /* Note: Thumb-1 code calls via an ARM shim on processors which
7227 +          support ARM mode.  */
7228 +       cmp     yyh, #0
7229 +       cmpeq   yyl, #0
7230 +       bne     2f
7231 +       cmp     xxh, #0
7232 +       cmpeq   xxl, #0
7233 +       .ifc \signed, unsigned
7234 +       movne   xxh, #0xffffffff
7235 +       movne   xxl, #0xffffffff
7236 +       .else
7237 +       movlt   xxh, #0x80000000
7238 +       movlt   xxl, #0
7239 +       movgt   xxh, #0x7fffffff
7240 +       movgt   xxl, #0xffffffff
7241 +       .endif
7242 +       b       SYM (__aeabi_ldiv0) __PLT__
7243 +2:
7244 +#endif
7245 +.endm
7246 +
7247  #ifdef L_aeabi_ldivmod
7248  
7249  ARM_FUNC_START aeabi_ldivmod
7250 +       test_div_by_zero signed
7251 +
7252         sub sp, sp, #8
7253 -#if defined(__thumb2__)
7254 +/* Low latency and Thumb-2 do_push implementations can't push sp directly.  */
7255 +#if defined(__thumb2__) || defined(__irq_low_latency__)
7256         mov ip, sp
7257 -       push {ip, lr}
7258 +       do_push (ip, lr)
7259  #else
7260 -       do_push {sp, lr}
7261 +       stmfd sp!, {sp, lr}
7262  #endif
7263         bl SYM(__gnu_ldivmod_helper) __PLT__
7264         ldr lr, [sp, #4]
7265         add sp, sp, #8
7266 -       do_pop {r2, r3}
7267 +       do_pop (r2, r3)
7268         RET
7269         
7270  #endif /* L_aeabi_ldivmod */
7271 @@ -85,17 +134,20 @@
7272  #ifdef L_aeabi_uldivmod
7273  
7274  ARM_FUNC_START aeabi_uldivmod
7275 +       test_div_by_zero unsigned
7276 +
7277         sub sp, sp, #8
7278 -#if defined(__thumb2__)
7279 +/* Low latency and Thumb-2 do_push implementations can't push sp directly.  */
7280 +#if defined(__thumb2__) || defined(__irq_low_latency__)
7281         mov ip, sp
7282 -       push {ip, lr}
7283 +       do_push (ip, lr)
7284  #else
7285 -       do_push {sp, lr}
7286 +       stmfd sp!, {sp, lr}
7287  #endif
7288         bl SYM(__gnu_uldivmod_helper) __PLT__
7289         ldr lr, [sp, #4]
7290         add sp, sp, #8
7291 -       do_pop {r2, r3}
7292 +       do_pop (r2, r3)
7293         RET
7294         
7295  #endif /* L_aeabi_divmod */
7296 diff -Nur a/gcc/config/arm/bpabi-v6m.S b/gcc/config/arm/bpabi-v6m.S
7297 --- a/gcc/config/arm/bpabi-v6m.S        2009-04-10 01:23:07.000000000 +0200
7298 +++ b/gcc/config/arm/bpabi-v6m.S        2010-01-25 09:50:28.985687200 +0100
7299 @@ -69,9 +69,52 @@
7300  
7301  #endif /* L_aeabi_ulcmp */
7302  
7303 +.macro test_div_by_zero signed
7304 +       cmp     yyh, #0
7305 +       bne     7f
7306 +       cmp     yyl, #0
7307 +       bne     7f
7308 +       cmp     xxh, #0
7309 +       bne     2f
7310 +       cmp     xxl, #0
7311 +2:
7312 +       .ifc    \signed, unsigned
7313 +       beq     3f
7314 +       mov     xxh, #0
7315 +       mvn     xxh, xxh                @ 0xffffffff
7316 +       mov     xxl, xxh
7317 +3:
7318 +       .else
7319 +       beq     5f
7320 +       blt     6f
7321 +       mov     xxl, #0
7322 +       mvn     xxl, xxl                @ 0xffffffff
7323 +       lsr     xxh, xxl, #1            @ 0x7fffffff
7324 +       b       5f
7325 +6:     mov     xxh, #0x80
7326 +       lsl     xxh, xxh, #24           @ 0x80000000
7327 +       mov     xxl, #0
7328 +5:
7329 +       .endif
7330 +       @ tailcalls are tricky on v6-m.
7331 +       push    {r0, r1, r2}
7332 +       ldr     r0, 1f
7333 +       adr     r1, 1f
7334 +       add     r0, r1
7335 +       str     r0, [sp, #8]
7336 +       @ We know we are not on armv4t, so pop pc is safe.
7337 +       pop     {r0, r1, pc}
7338 +       .align  2
7339 +1:
7340 +       .word   __aeabi_ldiv0 - 1b
7341 +7:
7342 +.endm
7343 +
7344  #ifdef L_aeabi_ldivmod
7345  
7346  FUNC_START aeabi_ldivmod
7347 +       test_div_by_zero signed
7348 +
7349         push {r0, r1}
7350         mov r0, sp
7351         push {r0, lr}
7352 @@ -89,6 +132,8 @@
7353  #ifdef L_aeabi_uldivmod
7354  
7355  FUNC_START aeabi_uldivmod
7356 +       test_div_by_zero unsigned
7357 +
7358         push {r0, r1}
7359         mov r0, sp
7360         push {r0, lr}
7361 diff -Nur a/gcc/config/arm/constraints.md b/gcc/config/arm/constraints.md
7362 --- a/gcc/config/arm/constraints.md     2009-02-20 16:20:38.000000000 +0100
7363 +++ b/gcc/config/arm/constraints.md     2010-01-25 09:50:28.985687200 +0100
7364 @@ -25,14 +25,15 @@
7365  ;; In ARM state, 'l' is an alias for 'r'
7366  
7367  ;; The following normal constraints have been used:
7368 -;; in ARM/Thumb-2 state: G, H, I, J, K, L, M
7369 +;; in ARM/Thumb-2 state: G, H, I, j, J, K, L, M
7370  ;; in Thumb-1 state: I, J, K, L, M, N, O
7371  
7372  ;; The following multi-letter normal constraints have been used:
7373 -;; in ARM/Thumb-2 state: Da, Db, Dc, Dn, Dl, DL, Dv
7374 +;; in ARM/Thumb-2 state: Da, Db, Dc, Dn, Dl, DL, Dv, Dy
7375 +;; in Thumb-1 state: Pa, Pb
7376  
7377  ;; The following memory constraints have been used:
7378 -;; in ARM/Thumb-2 state: Q, Ut, Uv, Uy, Un, Us
7379 +;; in ARM/Thumb-2 state: Q, Ut, Uv, Uy, Un, Um, Us
7380  ;; in ARM state: Uq
7381  
7382  
7383 @@ -65,6 +66,13 @@
7384  (define_register_constraint "h" "TARGET_THUMB ? HI_REGS : NO_REGS"
7385   "In Thumb state the core registers @code{r8}-@code{r15}.")
7386  
7387 +(define_constraint "j"
7388 + "A constant suitable for a MOVW instruction. (ARM/Thumb-2)"
7389 + (and (match_test "TARGET_32BIT && arm_arch_thumb2")
7390 +      (ior (match_code "high")
7391 +          (and (match_code "const_int")
7392 +                (match_test "(ival & 0xffff0000) == 0")))))
7393 +
7394  (define_register_constraint "k" "STACK_REG"
7395   "@internal The stack register.")
7396  
7397 @@ -116,11 +124,9 @@
7398                    : ((ival >= 0 && ival <= 1020) && ((ival & 3) == 0))")))
7399  
7400  (define_constraint "N"
7401 - "In ARM/Thumb-2 state a constant suitable for a MOVW instruction.
7402 -  In Thumb-1 state a constant in the range 0-31."
7403 + "Thumb-1 state a constant in the range 0-31."
7404   (and (match_code "const_int")
7405 -      (match_test "TARGET_32BIT ? arm_arch_thumb2 && ((ival & 0xffff0000) == 0)
7406 -                               : (ival >= 0 && ival <= 31)")))
7407 +      (match_test "!TARGET_32BIT && (ival >= 0 && ival <= 31)")))
7408  
7409  (define_constraint "O"
7410   "In Thumb-1 state a constant that is a multiple of 4 in the range
7411 @@ -129,6 +135,18 @@
7412        (match_test "TARGET_THUMB1 && ival >= -508 && ival <= 508
7413                    && ((ival & 3) == 0)")))
7414  
7415 +(define_constraint "Pa"
7416 +  "@internal In Thumb-1 state a constant in the range -510 to +510"
7417 +  (and (match_code "const_int")
7418 +       (match_test "TARGET_THUMB1 && ival >= -510 && ival <= 510
7419 +                   && (ival > 255 || ival < -255)")))
7420 +
7421 +(define_constraint "Pb"
7422 +  "@internal In Thumb-1 state a constant in the range -262 to +262"
7423 +  (and (match_code "const_int")
7424 +       (match_test "TARGET_THUMB1 && ival >= -262 && ival <= 262
7425 +                   && (ival > 255 || ival < -255)")))
7426 +
7427  (define_constraint "G"
7428   "In ARM/Thumb-2 state a valid FPA immediate constant."
7429   (and (match_code "const_double")
7430 @@ -189,10 +207,17 @@
7431  (define_constraint "Dv"
7432   "@internal
7433    In ARM/Thumb-2 state a const_double which can be used with a VFP fconsts
7434 -  or fconstd instruction."
7435 +  instruction."
7436   (and (match_code "const_double")
7437        (match_test "TARGET_32BIT && vfp3_const_double_rtx (op)")))
7438  
7439 +(define_constraint "Dy"
7440 + "@internal
7441 +  In ARM/Thumb-2 state a const_double which can be used with a VFP fconstd
7442 +  instruction."
7443 + (and (match_code "const_double")
7444 +      (match_test "TARGET_32BIT && TARGET_VFP_DOUBLE && vfp3_const_double_rtx (op)")))
7445 +
7446  (define_memory_constraint "Ut"
7447   "@internal
7448    In ARM/Thumb-2 state an address valid for loading/storing opaque structure
7449 @@ -214,17 +239,24 @@
7450  
7451  (define_memory_constraint "Un"
7452   "@internal
7453 +  In ARM/Thumb-2 state a valid address for Neon doubleword vector
7454 +  load/store instructions."
7455 + (and (match_code "mem")
7456 +      (match_test "TARGET_32BIT && neon_vector_mem_operand (op, 0)")))
7457 +
7458 +(define_memory_constraint "Um"
7459 + "@internal
7460    In ARM/Thumb-2 state a valid address for Neon element and structure
7461    load/store instructions."
7462   (and (match_code "mem")
7463 -      (match_test "TARGET_32BIT && neon_vector_mem_operand (op, FALSE)")))
7464 +      (match_test "TARGET_32BIT && neon_vector_mem_operand (op, 2)")))
7465  
7466  (define_memory_constraint "Us"
7467   "@internal
7468    In ARM/Thumb-2 state a valid address for non-offset loads/stores of
7469    quad-word values in four ARM registers."
7470   (and (match_code "mem")
7471 -      (match_test "TARGET_32BIT && neon_vector_mem_operand (op, TRUE)")))
7472 +      (match_test "TARGET_32BIT && neon_vector_mem_operand (op, 1)")))
7473  
7474  (define_memory_constraint "Uq"
7475   "@internal
7476 diff -Nur a/gcc/config/arm/fp16.c b/gcc/config/arm/fp16.c
7477 --- a/gcc/config/arm/fp16.c     1970-01-01 01:00:00.000000000 +0100
7478 +++ b/gcc/config/arm/fp16.c     2010-01-25 09:50:28.985687200 +0100
7479 @@ -0,0 +1,145 @@
7480 +/* Half-float conversion routines.
7481 +
7482 +   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
7483 +   Contributed by CodeSourcery.
7484 +
7485 +   This file is free software; you can redistribute it and/or modify it
7486 +   under the terms of the GNU General Public License as published by the
7487 +   Free Software Foundation; either version 3, or (at your option) any
7488 +   later version.
7489 +
7490 +   This file is distributed in the hope that it will be useful, but
7491 +   WITHOUT ANY WARRANTY; without even the implied warranty of
7492 +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
7493 +   General Public License for more details.
7494 +
7495 +   Under Section 7 of GPL version 3, you are granted additional
7496 +   permissions described in the GCC Runtime Library Exception, version
7497 +   3.1, as published by the Free Software Foundation.
7498 +
7499 +   You should have received a copy of the GNU General Public License and
7500 +   a copy of the GCC Runtime Library Exception along with this program;
7501 +   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
7502 +   <http://www.gnu.org/licenses/>.  */
7503 +
7504 +static inline unsigned short
7505 +__gnu_f2h_internal(unsigned int a, int ieee)
7506 +{
7507 +  unsigned short sign = (a >> 16) & 0x8000;
7508 +  int aexp = (a >> 23) & 0xff;
7509 +  unsigned int mantissa = a & 0x007fffff;
7510 +  unsigned int mask;
7511 +  unsigned int increment;
7512 +
7513 +  if (aexp == 0xff)
7514 +    {
7515 +      if (!ieee)
7516 +       return sign;
7517 +      return sign | 0x7e00 | (mantissa >> 13);
7518 +    }
7519 +  
7520 +  if (aexp == 0 && mantissa == 0)
7521 +    return sign;
7522 +
7523 +  aexp -= 127;
7524 +
7525 +  /* Decimal point between bits 22 and 23.  */
7526 +  mantissa |= 0x00800000;
7527 +  if (aexp < -14)
7528 +    {
7529 +      mask = 0x007fffff;
7530 +      if (aexp < -25)
7531 +       aexp = -26;
7532 +      else if (aexp != -25)
7533 +       mask >>= 24 + aexp;
7534 +    }
7535 +  else
7536 +    mask = 0x00001fff;
7537 +
7538 +  /* Round.  */
7539 +  if (mantissa & mask)
7540 +    {
7541 +      increment = (mask + 1) >> 1;
7542 +      if ((mantissa & mask) == increment)
7543 +       increment = mantissa & (increment << 1);
7544 +      mantissa += increment;
7545 +      if (mantissa >= 0x01000000)
7546 +               {
7547 +         mantissa >>= 1;
7548 +         aexp++;
7549 +       }
7550 +    }
7551 +
7552 +  if (ieee)
7553 +    {
7554 +      if (aexp > 15)
7555 +       return sign | 0x7c00;
7556 +    }
7557 +  else
7558 +    {
7559 +      if (aexp > 16)
7560 +       return sign | 0x7fff;
7561 +    }
7562 +
7563 +  if (aexp < -24)
7564 +    return sign;
7565 +
7566 +  if (aexp < -14)
7567 +    {
7568 +      mantissa >>= -14 - aexp;
7569 +      aexp = -14;
7570 +    }
7571 +
7572 +  /* We leave the leading 1 in the mantissa, and subtract one
7573 +     from the exponent bias to compensate.  */
7574 +  return sign | (((aexp + 14) << 10) + (mantissa >> 13));
7575 +}
7576 +
7577 +unsigned int
7578 +__gnu_h2f_internal(unsigned short a, int ieee)
7579 +{
7580 +  unsigned int sign = (unsigned int)(a & 0x8000) << 16;
7581 +  int aexp = (a >> 10) & 0x1f;
7582 +  unsigned int mantissa = a & 0x3ff;
7583 +
7584 +  if (aexp == 0x1f && ieee)
7585 +    return sign | 0x7f800000 | (mantissa << 13);
7586 +
7587 +  if (aexp == 0)
7588 +    {
7589 +      int shift;
7590 +
7591 +      if (mantissa == 0)
7592 +       return sign;
7593 +
7594 +      shift = __builtin_clz(mantissa) - 21;
7595 +      mantissa <<= shift;
7596 +      aexp = -shift;
7597 +    }
7598 +
7599 +  return sign | (((aexp + 0x70) << 23) + (mantissa << 13));
7600 +}
7601 +
7602 +unsigned short
7603 +__gnu_f2h_ieee(unsigned int a)
7604 +{
7605 +  return __gnu_f2h_internal(a, 1);
7606 +}
7607 +
7608 +unsigned int
7609 +__gnu_h2f_ieee(unsigned short a)
7610 +{
7611 +  return __gnu_h2f_internal(a, 1);
7612 +}
7613 +
7614 +unsigned short
7615 +__gnu_f2h_alternative(unsigned int x)
7616 +{
7617 +  return __gnu_f2h_internal(x, 0);
7618 +}
7619 +
7620 +unsigned int
7621 +__gnu_h2f_alternative(unsigned short a)
7622 +{
7623 +  return __gnu_h2f_internal(a, 0);
7624 +}
7625 diff -Nur a/gcc/config/arm/fpa.md b/gcc/config/arm/fpa.md
7626 --- a/gcc/config/arm/fpa.md     2007-08-02 12:49:31.000000000 +0200
7627 +++ b/gcc/config/arm/fpa.md     2010-01-25 09:50:28.985687200 +0100
7628 @@ -599,10 +599,10 @@
7629      {
7630      default:
7631      case 0: return \"mvf%?e\\t%0, %1\";
7632 -    case 1: if (arm_fpu_arch == FPUTYPE_FPA_EMU2)
7633 +    case 1: if (TARGET_FPA_EMU2)
7634               return \"ldf%?e\\t%0, %1\";
7635             return \"lfm%?\\t%0, 1, %1\";
7636 -    case 2: if (arm_fpu_arch == FPUTYPE_FPA_EMU2)
7637 +    case 2: if (TARGET_FPA_EMU2)
7638               return \"stf%?e\\t%1, %0\";
7639             return \"sfm%?\\t%1, 1, %0\";
7640      }
7641 diff -Nur a/gcc/config/arm/hwdiv.md b/gcc/config/arm/hwdiv.md
7642 --- a/gcc/config/arm/hwdiv.md   1970-01-01 01:00:00.000000000 +0100
7643 +++ b/gcc/config/arm/hwdiv.md   2010-01-25 09:50:28.985687200 +0100
7644 @@ -0,0 +1,41 @@
7645 +;; ARM instruction patterns for hardware division 
7646 +;; Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
7647 +;; Written by CodeSourcery, LLC.
7648 +;;
7649 +;; This file is part of GCC.
7650 +;;
7651 +;; GCC is free software; you can redistribute it and/or modify it
7652 +;; under the terms of the GNU General Public License as published by
7653 +;; the Free Software Foundation; either version 2, or (at your option)
7654 +;; any later version.
7655 +;;
7656 +;; GCC is distributed in the hope that it will be useful, but
7657 +;; WITHOUT ANY WARRANTY; without even the implied warranty of
7658 +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
7659 +;; General Public License for more details.
7660 +;;
7661 +;; You should have received a copy of the GNU General Public License
7662 +;; along with GCC; see the file COPYING.  If not, write to
7663 +;; the Free Software Foundation, 51 Franklin Street, Fifth Floor,
7664 +;; Boston, MA 02110-1301, USA.
7665 +
7666 +(define_insn "divsi3"
7667 +  [(set (match_operand:SI        0 "s_register_operand" "=r")
7668 +       (div:SI (match_operand:SI 1 "s_register_operand"  "r")
7669 +               (match_operand:SI 2 "s_register_operand"  "r")))]
7670 +  "arm_arch_hwdiv"
7671 +  "sdiv%?\t%0, %1, %2"
7672 +  [(set_attr "predicable" "yes")
7673 +   (set_attr "insn" "sdiv")]
7674 +)
7675 +
7676 +(define_insn "udivsi3"
7677 +  [(set (match_operand:SI         0 "s_register_operand" "=r")
7678 +       (udiv:SI (match_operand:SI 1 "s_register_operand"  "r")
7679 +                (match_operand:SI 2 "s_register_operand"  "r")))]
7680 +  "arm_arch_hwdiv"
7681 +  "udiv%?\t%0, %1, %2"
7682 +  [(set_attr "predicable" "yes")
7683 +   (set_attr "insn" "udiv")]
7684 +)
7685 +
7686 diff -Nur a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
7687 --- a/gcc/config/arm/ieee754-df.S       2009-04-10 01:23:07.000000000 +0200
7688 +++ b/gcc/config/arm/ieee754-df.S       2010-01-25 09:50:28.985687200 +0100
7689 @@ -83,7 +83,7 @@
7690  ARM_FUNC_START adddf3
7691  ARM_FUNC_ALIAS aeabi_dadd adddf3
7692  
7693 -1:     do_push {r4, r5, lr}
7694 +1:     do_push (r4, r5, lr)
7695  
7696         @ Look for zeroes, equal values, INF, or NAN.
7697         shift1  lsl, r4, xh, #1
7698 @@ -427,7 +427,7 @@
7699         do_it   eq, t
7700         moveq   r1, #0
7701         RETc(eq)
7702 -       do_push {r4, r5, lr}
7703 +       do_push (r4, r5, lr)
7704         mov     r4, #0x400              @ initial exponent
7705         add     r4, r4, #(52-1 - 1)
7706         mov     r5, #0                  @ sign bit is 0
7707 @@ -447,7 +447,7 @@
7708         do_it   eq, t
7709         moveq   r1, #0
7710         RETc(eq)
7711 -       do_push {r4, r5, lr}
7712 +       do_push (r4, r5, lr)
7713         mov     r4, #0x400              @ initial exponent
7714         add     r4, r4, #(52-1 - 1)
7715         ands    r5, r0, #0x80000000     @ sign bit in r5
7716 @@ -481,7 +481,7 @@
7717         RETc(eq)                        @ we are done already.
7718  
7719         @ value was denormalized.  We can normalize it now.
7720 -       do_push {r4, r5, lr}
7721 +       do_push (r4, r5, lr)
7722         mov     r4, #0x380              @ setup corresponding exponent
7723         and     r5, xh, #0x80000000     @ move sign bit in r5
7724         bic     xh, xh, #0x80000000
7725 @@ -508,9 +508,9 @@
7726         @ compatibility.
7727         adr     ip, LSYM(f0_ret)
7728         @ Push pc as well so that RETLDM works correctly.
7729 -       do_push {r4, r5, ip, lr, pc}
7730 +       do_push (r4, r5, ip, lr, pc)
7731  #else
7732 -       do_push {r4, r5, lr}
7733 +       do_push (r4, r5, lr)
7734  #endif
7735  
7736         mov     r5, #0
7737 @@ -534,9 +534,9 @@
7738         @ compatibility.
7739         adr     ip, LSYM(f0_ret)
7740         @ Push pc as well so that RETLDM works correctly.
7741 -       do_push {r4, r5, ip, lr, pc}
7742 +       do_push (r4, r5, ip, lr, pc)
7743  #else
7744 -       do_push {r4, r5, lr}
7745 +       do_push (r4, r5, lr)
7746  #endif
7747  
7748         ands    r5, ah, #0x80000000     @ sign bit in r5
7749 @@ -585,7 +585,7 @@
7750         @ Legacy code expects the result to be returned in f0.  Copy it
7751         @ there as well.
7752  LSYM(f0_ret):
7753 -       do_push {r0, r1}
7754 +       do_push (r0, r1)
7755         ldfd    f0, [sp], #8
7756         RETLDM
7757  
7758 @@ -602,7 +602,7 @@
7759  
7760  ARM_FUNC_START muldf3
7761  ARM_FUNC_ALIAS aeabi_dmul muldf3
7762 -       do_push {r4, r5, r6, lr}
7763 +       do_push (r4, r5, r6, lr)
7764  
7765         @ Mask out exponents, trap any zero/denormal/INF/NAN.
7766         mov     ip, #0xff
7767 @@ -910,7 +910,7 @@
7768  ARM_FUNC_START divdf3
7769  ARM_FUNC_ALIAS aeabi_ddiv divdf3
7770         
7771 -       do_push {r4, r5, r6, lr}
7772 +       do_push (r4, r5, r6, lr)
7773  
7774         @ Mask out exponents, trap any zero/denormal/INF/NAN.
7775         mov     ip, #0xff
7776 @@ -1117,7 +1117,7 @@
7777  ARM_FUNC_ALIAS eqdf2 cmpdf2
7778         mov     ip, #1                  @ how should we specify unordered here?
7779  
7780 -1:     str     ip, [sp, #-4]
7781 +1:     str     ip, [sp, #-4]!
7782  
7783         @ Trap any INF/NAN first.
7784         mov     ip, xh, lsl #1
7785 @@ -1129,7 +1129,8 @@
7786  
7787         @ Test for equality.
7788         @ Note that 0.0 is equal to -0.0.
7789 -2:     orrs    ip, xl, xh, lsl #1      @ if x == 0.0 or -0.0
7790 +2:     add     sp, sp, #4
7791 +       orrs    ip, xl, xh, lsl #1      @ if x == 0.0 or -0.0
7792         do_it   eq, e
7793         COND(orr,s,eq)  ip, yl, yh, lsl #1      @ and y == 0.0 or -0.0
7794         teqne   xh, yh                  @ or xh == yh
7795 @@ -1168,7 +1169,7 @@
7796         bne     2b
7797         orrs    ip, yl, yh, lsl #12
7798         beq     2b                      @ y is not NAN
7799 -5:     ldr     r0, [sp, #-4]           @ unordered return code
7800 +5:     ldr     r0, [sp], #4            @ unordered return code
7801         RET
7802  
7803         FUNC_END gedf2
7804 @@ -1194,7 +1195,7 @@
7805  
7806         @ The status-returning routines are required to preserve all
7807         @ registers except ip, lr, and cpsr.
7808 -6:     do_push {r0, lr}
7809 +6:     do_push (r0, lr)
7810         ARM_CALL cmpdf2
7811         @ Set the Z flag correctly, and the C flag unconditionally.
7812         cmp     r0, #0
7813 diff -Nur a/gcc/config/arm/ieee754-sf.S b/gcc/config/arm/ieee754-sf.S
7814 --- a/gcc/config/arm/ieee754-sf.S       2009-04-10 01:23:07.000000000 +0200
7815 +++ b/gcc/config/arm/ieee754-sf.S       2010-01-25 09:50:28.985687200 +0100
7816 @@ -481,7 +481,7 @@
7817         and     r3, ip, #0x80000000
7818  
7819         @ Well, no way to make it shorter without the umull instruction.
7820 -       do_push {r3, r4, r5}
7821 +       do_push (r3, r4, r5)
7822         mov     r4, r0, lsr #16
7823         mov     r5, r1, lsr #16
7824         bic     r0, r0, r4, lsl #16
7825 @@ -492,7 +492,7 @@
7826         mla     r0, r4, r1, r0
7827         adds    r3, r3, r0, lsl #16
7828         adc     r1, ip, r0, lsr #16
7829 -       do_pop  {r0, r4, r5}
7830 +       do_pop  (r0, r4, r5)
7831  
7832  #else
7833  
7834 @@ -822,7 +822,7 @@
7835  ARM_FUNC_ALIAS eqsf2 cmpsf2
7836         mov     ip, #1                  @ how should we specify unordered here?
7837  
7838 -1:     str     ip, [sp, #-4]
7839 +1:     str     ip, [sp, #-4]!
7840  
7841         @ Trap any INF/NAN first.
7842         mov     r2, r0, lsl #1
7843 @@ -834,7 +834,8 @@
7844  
7845         @ Compare values.
7846         @ Note that 0.0 is equal to -0.0.
7847 -2:     orrs    ip, r2, r3, lsr #1      @ test if both are 0, clear C flag
7848 +2:     add     sp, sp, #4
7849 +       orrs    ip, r2, r3, lsr #1      @ test if both are 0, clear C flag
7850         do_it   ne
7851         teqne   r0, r1                  @ if not 0 compare sign
7852         do_it   pl
7853 @@ -858,7 +859,7 @@
7854         bne     2b
7855         movs    ip, r1, lsl #9
7856         beq     2b                      @ r1 is not NAN
7857 -5:     ldr     r0, [sp, #-4]           @ return unordered code.
7858 +5:     ldr     r0, [sp], #4            @ return unordered code.
7859         RET
7860  
7861         FUNC_END gesf2
7862 @@ -881,7 +882,7 @@
7863  
7864         @ The status-returning routines are required to preserve all
7865         @ registers except ip, lr, and cpsr.
7866 -6:     do_push {r0, r1, r2, r3, lr}
7867 +6:     do_push (r0, r1, r2, r3, lr)
7868         ARM_CALL cmpsf2
7869         @ Set the Z flag correctly, and the C flag unconditionally.
7870         cmp     r0, #0
7871 diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
7872 --- a/gcc/config/arm/lib1funcs.asm      2009-04-10 01:23:07.000000000 +0200
7873 +++ b/gcc/config/arm/lib1funcs.asm      2010-01-25 09:50:28.985687200 +0100
7874 @@ -27,8 +27,17 @@
7875  #if defined(__ELF__) && defined(__linux__)
7876  .section .note.GNU-stack,"",%progbits
7877  .previous
7878 -#endif
7879 +#endif  /* __ELF__ and __linux__ */
7880  
7881 +#ifdef __ARM_EABI__
7882 +/* Some attributes that are common to all routines in this file.  */
7883 +       /* Tag_ABI_align8_needed: This code does not require 8-byte
7884 +          alignment from the caller.  */
7885 +       /* .eabi_attribute 24, 0  -- default setting.  */
7886 +       /* Tag_ABI_align8_preserved: This code preserves 8-byte 
7887 +          alignment in any callee.  */
7888 +       .eabi_attribute 25, 1
7889 +#endif /* __ARM_EABI__ */
7890  /* ------------------------------------------------------------------------ */
7891  
7892  /* We need to know what prefix to add to function names.  */
7893 @@ -233,8 +242,8 @@
7894  .macro shift1 op, arg0, arg1, arg2
7895         \op     \arg0, \arg1, \arg2
7896  .endm
7897 -#define do_push        push
7898 -#define do_pop pop
7899 +#define do_push(...)   push {__VA_ARGS__}
7900 +#define do_pop(...)    pop {__VA_ARGS__}
7901  #define COND(op1, op2, cond) op1 ## op2 ## cond
7902  /* Perform an arithmetic operation with a variable shift operand.  This
7903     requires two instructions and a scratch register on Thumb-2.  */
7904 @@ -248,24 +257,133 @@
7905  .macro shift1 op, arg0, arg1, arg2
7906         mov     \arg0, \arg1, \op \arg2
7907  .endm
7908 -#define do_push        stmfd sp!,
7909 -#define do_pop ldmfd sp!,
7910 +#if defined(__low_irq_latency__)        
7911 +#define do_push(...) \
7912 +  _buildN1(do_push, _buildC1(__VA_ARGS__))( __VA_ARGS__)
7913 +#define _buildN1(BASE, X)      _buildN2(BASE, X)
7914 +#define _buildN2(BASE, X)      BASE##X
7915 +#define _buildC1(...)          _buildC2(__VA_ARGS__,9,8,7,6,5,4,3,2,1)
7916 +#define _buildC2(a1,a2,a3,a4,a5,a6,a7,a8,a9,c,...) c
7917 +        
7918 +#define do_push1(r1) str r1, [sp, #-4]!
7919 +#define do_push2(r1, r2) str r2, [sp, #-4]! ; str r1, [sp, #-4]!
7920 +#define do_push3(r1, r2, r3) str r3, [sp, #-4]! ; str r2, [sp, #-4]!; str r1, [sp, #-4]!
7921 +#define do_push4(r1, r2, r3, r4) \
7922 +        do_push3 (r2, r3, r4);\
7923 +        do_push1 (r1)
7924 +#define do_push5(r1, r2, r3, r4, r5) \
7925 +        do_push4 (r2, r3, r4, r5);\
7926 +        do_push1 (r1)
7927 +        
7928 +#define do_pop(...) \
7929 +_buildN1(do_pop, _buildC1(__VA_ARGS__))( __VA_ARGS__)
7930 +        
7931 +#define do_pop1(r1) ldr r1, [sp], #4
7932 +#define do_pop2(r1, r2) ldr r1, [sp], #4 ; ldr r2, [sp], #4
7933 +#define do_pop3(r1, r2, r3) ldr r1, [sp], #4 ; str r2, [sp], #4; str r3, [sp], #4
7934 +#define do_pop4(r1, r2, r3, r4) \
7935 +        do_pop1 (r1);\
7936 +        do_pup3 (r2, r3, r4)
7937 +#define do_pop5(r1, r2, r3, r4, r5) \
7938 +        do_pop1 (r1);\
7939 +        do_pop4 (r2, r3, r4, r5)
7940 +#else
7941 +#define do_push(...)    stmfd sp!, { __VA_ARGS__}
7942 +#define do_pop(...)     ldmfd sp!, {__VA_ARGS__}
7943 +#endif
7944 +
7945 +        
7946  #define COND(op1, op2, cond) op1 ## cond ## op2
7947  .macro shiftop name, dest, src1, src2, shiftop, shiftreg, tmp
7948         \name \dest, \src1, \src2, \shiftop \shiftreg
7949  .endm
7950  #endif
7951  
7952 -.macro ARM_LDIV0 name
7953 +#ifdef __ARM_EABI__
7954 +.macro ARM_LDIV0 name signed
7955 +       cmp     r0, #0
7956 +       .ifc    \signed, unsigned
7957 +       movne   r0, #0xffffffff
7958 +       .else
7959 +       movgt   r0, #0x7fffffff
7960 +       movlt   r0, #0x80000000
7961 +       .endif
7962 +       b       SYM (__aeabi_idiv0) __PLT__
7963 +.endm
7964 +#else
7965 +.macro ARM_LDIV0 name signed
7966         str     lr, [sp, #-8]!
7967  98:    cfi_push 98b - __\name, 0xe, -0x8, 0x8
7968         bl      SYM (__div0) __PLT__
7969         mov     r0, #0                  @ About as wrong as it could be.
7970         RETLDM  unwind=98b
7971  .endm
7972 +#endif
7973  
7974  
7975 -.macro THUMB_LDIV0 name
7976 +#ifdef __ARM_EABI__
7977 +.macro THUMB_LDIV0 name signed
7978 +#if defined(__ARM_ARCH_6M__)
7979 +       .ifc \signed, unsigned
7980 +       cmp     r0, #0
7981 +       beq     1f
7982 +       mov     r0, #0
7983 +       mvn     r0, r0          @ 0xffffffff
7984 +1:
7985 +       .else
7986 +       cmp     r0, #0
7987 +       beq     2f
7988 +       blt     3f
7989 +       mov     r0, #0
7990 +       mvn     r0, r0
7991 +       lsr     r0, r0, #1      @ 0x7fffffff
7992 +       b       2f
7993 +3:     mov     r0, #0x80
7994 +       lsl     r0, r0, #24     @ 0x80000000
7995 +2:
7996 +       .endif
7997 +       push    {r0, r1, r2}
7998 +       ldr     r0, 4f
7999 +       adr     r1, 4f
8000 +       add     r0, r1
8001 +       str     r0, [sp, #8]
8002 +       @ We know we are not on armv4t, so pop pc is safe.
8003 +       pop     {r0, r1, pc}
8004 +       .align  2
8005 +4:
8006 +       .word   __aeabi_idiv0 - 4b
8007 +#elif defined(__thumb2__)
8008 +       .syntax unified
8009 +       .ifc \signed, unsigned
8010 +       cbz     r0, 1f
8011 +       mov     r0, #0xffffffff
8012 +1:
8013 +       .else
8014 +       cmp     r0, #0
8015 +       do_it   gt
8016 +       movgt   r0, #0x7fffffff
8017 +       do_it   lt
8018 +       movlt   r0, #0x80000000
8019 +       .endif
8020 +       b.w     SYM(__aeabi_idiv0) __PLT__
8021 +#else
8022 +       .align  2
8023 +       bx      pc
8024 +       nop
8025 +       .arm
8026 +       cmp     r0, #0
8027 +       .ifc    \signed, unsigned
8028 +       movne   r0, #0xffffffff
8029 +       .else
8030 +       movgt   r0, #0x7fffffff
8031 +       movlt   r0, #0x80000000
8032 +       .endif
8033 +       b       SYM(__aeabi_idiv0) __PLT__
8034 +       .thumb
8035 +#endif
8036 +.endm
8037 +#else
8038 +.macro THUMB_LDIV0 name signed
8039         push    { r1, lr }
8040  98:    cfi_push 98b - __\name, 0xe, -0x4, 0x8
8041         bl      SYM (__div0)
8042 @@ -277,18 +395,19 @@
8043         pop     { r1, pc }
8044  #endif
8045  .endm
8046 +#endif
8047  
8048  .macro FUNC_END name
8049         SIZE (__\name)
8050  .endm
8051  
8052 -.macro DIV_FUNC_END name
8053 +.macro DIV_FUNC_END name signed
8054         cfi_start       __\name, LSYM(Lend_div0)
8055  LSYM(Ldiv0):
8056  #ifdef __thumb__
8057 -       THUMB_LDIV0 \name
8058 +       THUMB_LDIV0 \name \signed
8059  #else
8060 -       ARM_LDIV0 \name
8061 +       ARM_LDIV0 \name \signed
8062  #endif
8063         cfi_end LSYM(Lend_div0)
8064         FUNC_END \name
8065 @@ -413,6 +532,12 @@
8066  #define yyl r2
8067  #endif 
8068  
8069 +#ifdef __ARM_EABI__
8070 +.macro WEAK name
8071 +       .weak SYM (__\name)
8072 +.endm
8073 +#endif
8074 +
8075  #ifdef __thumb__
8076  /* Register aliases.  */
8077  
8078 @@ -437,6 +562,43 @@
8079  
8080  #if __ARM_ARCH__ >= 5 && ! defined (__OPTIMIZE_SIZE__)
8081  
8082 +#if defined (__thumb2__)
8083 +       clz     \curbit, \dividend
8084 +       clz     \result, \divisor
8085 +       sub     \curbit, \result, \curbit
8086 +       rsb     \curbit, \curbit, #31
8087 +       adr     \result, 1f
8088 +       add     \curbit, \result, \curbit, lsl #4
8089 +       mov     \result, #0
8090 +       mov     pc, \curbit
8091 +.p2align 3
8092 +1:
8093 +       .set    shift, 32
8094 +       .rept   32
8095 +       .set    shift, shift - 1
8096 +       cmp.w   \dividend, \divisor, lsl #shift
8097 +       nop.n
8098 +       adc.w   \result, \result, \result
8099 +       it      cs
8100 +       subcs.w \dividend, \dividend, \divisor, lsl #shift
8101 +       .endr
8102 +#elif defined(__ARM_TUNE_MARVELL_F__)
8103 +       clz     \curbit, \dividend
8104 +       clz     \result, \divisor
8105 +       sub     \curbit, \result, \curbit
8106 +       mov     \divisor, \divisor, lsl \curbit
8107 +       rsb     \curbit, \curbit, #31
8108 +       mov     \curbit, \curbit, lsl #2
8109 +       mov     \result, #0
8110 +       add     pc, pc, \curbit, lsl #2
8111 +       nop
8112 +       .rept   32
8113 +       cmp     \dividend, \divisor
8114 +       subcs   \dividend, \dividend, \divisor
8115 +       mov     \divisor, \divisor, lsr #1
8116 +       adc     \result, \result, \result
8117 +       .endr
8118 +#else  /* ! defined(__ARM_TUNE_MARVELL_F__) */
8119         clz     \curbit, \dividend
8120         clz     \result, \divisor
8121         sub     \curbit, \result, \curbit
8122 @@ -452,6 +614,7 @@
8123         adc     \result, \result, \result
8124         subcs   \dividend, \dividend, \divisor, lsl #shift
8125         .endr
8126 +#endif /* defined(__ARM_TUNE_MARVELL_F__) */
8127  
8128  #else /* __ARM_ARCH__ < 5 || defined (__OPTIMIZE_SIZE__) */
8129  #if __ARM_ARCH__ >= 5
8130 @@ -499,18 +662,23 @@
8131  
8132         @ Division loop
8133  1:     cmp     \dividend, \divisor
8134 +       do_it   hs, t
8135         subhs   \dividend, \dividend, \divisor
8136         orrhs   \result,   \result,   \curbit
8137         cmp     \dividend, \divisor,  lsr #1
8138 +       do_it   hs, t
8139         subhs   \dividend, \dividend, \divisor, lsr #1
8140         orrhs   \result,   \result,   \curbit,  lsr #1
8141         cmp     \dividend, \divisor,  lsr #2
8142 +       do_it   hs, t
8143         subhs   \dividend, \dividend, \divisor, lsr #2
8144         orrhs   \result,   \result,   \curbit,  lsr #2
8145         cmp     \dividend, \divisor,  lsr #3
8146 +       do_it   hs, t
8147         subhs   \dividend, \dividend, \divisor, lsr #3
8148         orrhs   \result,   \result,   \curbit,  lsr #3
8149         cmp     \dividend, #0                   @ Early termination?
8150 +       do_it   ne, t
8151         movnes  \curbit,   \curbit,  lsr #4     @ No, any more bits to do?
8152         movne   \divisor,  \divisor, lsr #4
8153         bne     1b
8154 @@ -799,13 +967,14 @@
8155  /* ------------------------------------------------------------------------ */
8156  #ifdef L_udivsi3
8157  
8158 +#if defined(__ARM_ARCH_6M__)
8159 +
8160         FUNC_START udivsi3
8161         FUNC_ALIAS aeabi_uidiv udivsi3
8162  
8163 -#ifdef __thumb__
8164 -
8165         cmp     divisor, #0
8166         beq     LSYM(Ldiv0)
8167 +LSYM(udivsi3_nodiv0):
8168         mov     curbit, #1
8169         mov     result, #0
8170         
8171 @@ -819,9 +988,16 @@
8172         pop     { work }
8173         RET
8174  
8175 -#else /* ARM version.  */
8176 +#else /* ARM/Thumb-2 version.  */
8177 +
8178 +       ARM_FUNC_START udivsi3
8179 +       ARM_FUNC_ALIAS aeabi_uidiv udivsi3
8180  
8181 +       /* Note: if called via udivsi3_nodiv0, this will unnecessarily check
8182 +          for division-by-zero a second time.  */
8183 +LSYM(udivsi3_nodiv0):
8184         subs    r2, r1, #1
8185 +       do_it   eq
8186         RETc(eq)
8187         bcc     LSYM(Ldiv0)
8188         cmp     r0, r1
8189 @@ -834,7 +1010,8 @@
8190         mov     r0, r2
8191         RET     
8192  
8193 -11:    moveq   r0, #1
8194 +11:    do_it   eq, e
8195 +       moveq   r0, #1
8196         movne   r0, #0
8197         RET
8198  
8199 @@ -845,19 +1022,24 @@
8200  
8201  #endif /* ARM version */
8202  
8203 -       DIV_FUNC_END udivsi3
8204 +       DIV_FUNC_END udivsi3 unsigned
8205  
8206 +#if defined(__ARM_ARCH_6M__)
8207  FUNC_START aeabi_uidivmod
8208 -#ifdef __thumb__
8209 +       cmp     r1, #0
8210 +       beq     LSYM(Ldiv0)
8211         push    {r0, r1, lr}
8212 -       bl      SYM(__udivsi3)
8213 +       bl      LSYM(udivsi3_nodiv0)
8214         POP     {r1, r2, r3}
8215         mul     r2, r0
8216         sub     r1, r1, r2
8217         bx      r3
8218  #else
8219 +ARM_FUNC_START aeabi_uidivmod
8220 +       cmp     r1, #0
8221 +       beq     LSYM(Ldiv0)
8222         stmfd   sp!, { r0, r1, lr }
8223 -       bl      SYM(__udivsi3)
8224 +       bl      LSYM(udivsi3_nodiv0)
8225         ldmfd   sp!, { r1, r2, lr }
8226         mul     r3, r2, r0
8227         sub     r1, r1, r3
8228 @@ -904,19 +1086,20 @@
8229  
8230  #endif /* ARM version.  */
8231         
8232 -       DIV_FUNC_END umodsi3
8233 +       DIV_FUNC_END umodsi3 unsigned
8234  
8235  #endif /* L_umodsi3 */
8236  /* ------------------------------------------------------------------------ */
8237  #ifdef L_divsi3
8238  
8239 +#if defined(__ARM_ARCH_6M__)
8240 +
8241         FUNC_START divsi3       
8242         FUNC_ALIAS aeabi_idiv divsi3
8243  
8244 -#ifdef __thumb__
8245         cmp     divisor, #0
8246         beq     LSYM(Ldiv0)
8247 -       
8248 +LSYM(divsi3_nodiv0):
8249         push    { work }
8250         mov     work, dividend
8251         eor     work, divisor           @ Save the sign of the result.
8252 @@ -945,15 +1128,21 @@
8253         pop     { work }
8254         RET
8255  
8256 -#else /* ARM version.  */
8257 +#else /* ARM/Thumb-2 version.  */
8258         
8259 +       ARM_FUNC_START divsi3   
8260 +       ARM_FUNC_ALIAS aeabi_idiv divsi3
8261 +
8262         cmp     r1, #0
8263 -       eor     ip, r0, r1                      @ save the sign of the result.
8264         beq     LSYM(Ldiv0)
8265 +LSYM(divsi3_nodiv0):
8266 +       eor     ip, r0, r1                      @ save the sign of the result.
8267 +       do_it   mi
8268         rsbmi   r1, r1, #0                      @ loops below use unsigned.
8269         subs    r2, r1, #1                      @ division by 1 or -1 ?
8270         beq     10f
8271         movs    r3, r0
8272 +       do_it   mi
8273         rsbmi   r3, r0, #0                      @ positive dividend value
8274         cmp     r3, r1
8275         bls     11f
8276 @@ -963,14 +1152,18 @@
8277         ARM_DIV_BODY r3, r1, r0, r2
8278         
8279         cmp     ip, #0
8280 +       do_it   mi
8281         rsbmi   r0, r0, #0
8282         RET     
8283  
8284  10:    teq     ip, r0                          @ same sign ?
8285 +       do_it   mi
8286         rsbmi   r0, r0, #0
8287         RET     
8288  
8289 -11:    movlo   r0, #0
8290 +11:    do_it   lo
8291 +       movlo   r0, #0
8292 +       do_it   eq,t
8293         moveq   r0, ip, asr #31
8294         orreq   r0, r0, #1
8295         RET
8296 @@ -979,24 +1172,30 @@
8297  
8298         cmp     ip, #0
8299         mov     r0, r3, lsr r2
8300 +       do_it   mi
8301         rsbmi   r0, r0, #0
8302         RET
8303  
8304  #endif /* ARM version */
8305         
8306 -       DIV_FUNC_END divsi3
8307 +       DIV_FUNC_END divsi3 signed
8308  
8309 +#if defined(__ARM_ARCH_6M__)
8310  FUNC_START aeabi_idivmod
8311 -#ifdef __thumb__
8312 +       cmp     r1, #0
8313 +       beq     LSYM(Ldiv0)
8314         push    {r0, r1, lr}
8315 -       bl      SYM(__divsi3)
8316 +       bl      LSYM(divsi3_nodiv0)
8317         POP     {r1, r2, r3}
8318         mul     r2, r0
8319         sub     r1, r1, r2
8320         bx      r3
8321  #else
8322 +ARM_FUNC_START aeabi_idivmod
8323 +       cmp     r1, #0
8324 +       beq     LSYM(Ldiv0)
8325         stmfd   sp!, { r0, r1, lr }
8326 -       bl      SYM(__divsi3)
8327 +       bl      LSYM(divsi3_nodiv0)
8328         ldmfd   sp!, { r1, r2, lr }
8329         mul     r3, r2, r0
8330         sub     r1, r1, r3
8331 @@ -1062,21 +1261,25 @@
8332  
8333  #endif /* ARM version */
8334         
8335 -       DIV_FUNC_END modsi3
8336 +       DIV_FUNC_END modsi3 signed
8337  
8338  #endif /* L_modsi3 */
8339  /* ------------------------------------------------------------------------ */
8340  #ifdef L_dvmd_tls
8341  
8342 -       FUNC_START div0
8343 -       FUNC_ALIAS aeabi_idiv0 div0
8344 -       FUNC_ALIAS aeabi_ldiv0 div0
8345 -
8346 +#ifdef __ARM_EABI__
8347 +       WEAK aeabi_idiv0
8348 +       WEAK aeabi_ldiv0
8349 +       FUNC_START aeabi_idiv0
8350 +       FUNC_START aeabi_ldiv0
8351         RET
8352 -
8353         FUNC_END aeabi_ldiv0
8354         FUNC_END aeabi_idiv0
8355 +#else
8356 +       FUNC_START div0
8357 +       RET
8358         FUNC_END div0
8359 +#endif
8360         
8361  #endif /* L_divmodsi_tools */
8362  /* ------------------------------------------------------------------------ */
8363 @@ -1086,16 +1289,49 @@
8364  /* Constant taken from <asm/signal.h>.  */
8365  #define SIGFPE 8
8366  
8367 +#ifdef __ARM_EABI__
8368 +       WEAK aeabi_idiv0
8369 +       WEAK aeabi_ldiv0
8370 +       ARM_FUNC_START aeabi_idiv0
8371 +       ARM_FUNC_START aeabi_ldiv0
8372 +#else
8373         ARM_FUNC_START div0
8374 +#endif
8375  
8376 -       do_push {r1, lr}
8377 +       do_push (r1, lr)
8378         mov     r0, #SIGFPE
8379         bl      SYM(raise) __PLT__
8380         RETLDM  r1
8381  
8382 +#ifdef __ARM_EABI__
8383 +       FUNC_END aeabi_ldiv0
8384 +       FUNC_END aeabi_idiv0
8385 +#else
8386         FUNC_END div0
8387 +#endif
8388         
8389  #endif /* L_dvmd_lnx */
8390 +#ifdef L_clear_cache
8391 +#if defined __ARM_EABI__ && defined __linux__
8392 +@ EABI GNU/Linux call to cacheflush syscall.
8393 +       ARM_FUNC_START clear_cache
8394 +       do_push (r7)
8395 +#if __ARM_ARCH__ >= 7 || defined(__ARM_ARCH_6T2__)
8396 +       movw    r7, #2
8397 +       movt    r7, #0xf
8398 +#else
8399 +       mov     r7, #0xf0000
8400 +       add     r7, r7, #2
8401 +#endif
8402 +       mov     r2, #0
8403 +       swi     0
8404 +       do_pop  (r7)
8405 +       RET
8406 +       FUNC_END clear_cache
8407 +#else
8408 +#error "This is only for ARM EABI GNU/Linux"
8409 +#endif
8410 +#endif /* L_clear_cache */
8411  /* ------------------------------------------------------------------------ */
8412  /* Dword shift operations.  */
8413  /* All the following Dword shift variants rely on the fact that
8414 @@ -1292,7 +1528,7 @@
8415         push    {r4, lr}
8416  # else
8417  ARM_FUNC_START clzdi2
8418 -       do_push {r4, lr}
8419 +       do_push (r4, lr)
8420  # endif
8421         cmp     xxh, #0
8422         bne     1f
8423 diff -Nur a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
8424 --- a/gcc/config/arm/linux-eabi.h       2007-11-08 14:44:09.000000000 +0100
8425 +++ b/gcc/config/arm/linux-eabi.h       2010-01-25 09:50:28.995687913 +0100
8426 @@ -66,22 +66,14 @@
8427  /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
8428     use the GNU/Linux version, not the generic BPABI version.  */
8429  #undef  LINK_SPEC
8430 -#define LINK_SPEC LINUX_TARGET_LINK_SPEC
8431 +#define LINK_SPEC LINUX_TARGET_LINK_SPEC BE8_LINK_SPEC
8432  
8433  /* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we
8434     do not use -lfloat.  */
8435  #undef LIBGCC_SPEC
8436  
8437 -/* Clear the instruction cache from `beg' to `end'.  This makes an
8438 -   inline system call to SYS_cacheflush.  */
8439 +/* Clear the instruction cache from `beg' to `end'.  This is
8440 +   implemented in lib1funcs.asm, so ensure an error if this definition
8441 +   is used.  */
8442  #undef  CLEAR_INSN_CACHE
8443 -#define CLEAR_INSN_CACHE(BEG, END)                                     \
8444 -{                                                                      \
8445 -  register unsigned long _beg __asm ("a1") = (unsigned long) (BEG);    \
8446 -  register unsigned long _end __asm ("a2") = (unsigned long) (END);    \
8447 -  register unsigned long _flg __asm ("a3") = 0;                                \
8448 -  register unsigned long _scno __asm ("r7") = 0xf0002;                 \
8449 -  __asm __volatile ("swi 0             @ sys_cacheflush"               \
8450 -                   : "=r" (_beg)                                       \
8451 -                   : "0" (_beg), "r" (_end), "r" (_flg), "r" (_scno)); \
8452 -}
8453 +#define CLEAR_INSN_CACHE(BEG, END) not used
8454 diff -Nur a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
8455 --- a/gcc/config/arm/linux-elf.h        2009-02-20 16:20:38.000000000 +0100
8456 +++ b/gcc/config/arm/linux-elf.h        2010-01-25 09:50:28.995687913 +0100
8457 @@ -98,7 +98,7 @@
8458  
8459  /* NWFPE always understands FPA instructions.  */
8460  #undef  FPUTYPE_DEFAULT
8461 -#define FPUTYPE_DEFAULT FPUTYPE_FPA_EMU3
8462 +#define FPUTYPE_DEFAULT "fpe3"
8463  
8464  /* Call the function profiler with a given profile label.  */
8465  #undef  ARM_FUNCTION_PROFILER
8466 diff -Nur a/gcc/config/arm/marvell-f.md b/gcc/config/arm/marvell-f.md
8467 --- a/gcc/config/arm/marvell-f.md       1970-01-01 01:00:00.000000000 +0100
8468 +++ b/gcc/config/arm/marvell-f.md       2010-01-25 09:50:28.995687913 +0100
8469 @@ -0,0 +1,365 @@
8470 +;; Marvell 2850 pipeline description
8471 +;; Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
8472 +;; Written by Marvell and CodeSourcery, Inc.
8473 +
8474 +;; This file is part of GCC.
8475 +
8476 +;; GCC is free software; you can redistribute it and/or modify it
8477 +;; under the terms of the GNU General Public License as published
8478 +;; by the Free Software Foundation; either version 2, or (at your
8479 +;; option) any later version.
8480 +
8481 +;; GCC is distributed in the hope that it will be useful, but WITHOUT
8482 +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
8483 +;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
8484 +;; License for more details.
8485 +
8486 +;; You should have received a copy of the GNU General Public License
8487 +;; along with GCC; see the file COPYING.  If not, write to
8488 +;; the Free Software Foundation, 51 Franklin Street, Fifth Floor,
8489 +;; Boston, MA 02110-1301, USA.
8490 +
8491 +;; This automaton provides a pipeline description for the Marvell
8492 +;; 2850 core.
8493 +;;
8494 +;; The model given here assumes that the condition for all conditional
8495 +;; instructions is "true", i.e., that all of the instructions are
8496 +;; actually executed.
8497 +
8498 +(define_automaton "marvell_f")
8499 +
8500 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8501 +;; Pipelines
8502 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8503 +
8504 +;; This is a dual-issue processor with three pipelines:
8505 +;;
8506 +;; 1. Arithmetic and load/store pipeline A1.
8507 +;;    Issue | E1 | E2 | OF | WR | WB  for load-store instructions
8508 +;;    Issue | E1 | E2 | WB  for arithmetic instructions
8509 +;;
8510 +;; 2. Arithmetic pipeline A2.
8511 +;;    Issue | E1 | E2 | WB
8512 +;;
8513 +;; 3. Multiply and multiply-accumulate pipeline.
8514 +;;    Issue | MAC1 | MAC2 | MAC3 | WB
8515 +;;
8516 +;; There are various bypasses modelled to a greater or lesser extent.
8517 +;;
8518 +;; Latencies in this file correspond to the number of cycles after
8519 +;; the issue stage that it takes for the result of the instruction to
8520 +;; be computed, or for its side-effects to occur.
8521 +
8522 +(define_cpu_unit "a1_e1,a1_e2,a1_of,a1_wr,a1_wb" "marvell_f") ; ALU 1
8523 +(define_cpu_unit "a2_e1,a2_e2,a2_wb" "marvell_f")             ; ALU 2
8524 +(define_cpu_unit "m_1,m_2,m_3,m_wb" "marvell_f")              ; MAC
8525 +
8526 +;; We define an SRAM cpu unit to enable us to describe conflicts
8527 +;; between loads at the E2 stage and stores at the WR stage.
8528 +
8529 +(define_cpu_unit "sram" "marvell_f")
8530 +
8531 +;; Handling of dual-issue constraints.
8532 +;;
8533 +;; Certain pairs of instructions can be issued in parallel, and certain
8534 +;; pairs cannot.  We divide a subset of the instructions into groups as
8535 +;; follows.
8536 +;;
8537 +;; - data processing 1 (mov, mvn);
8538 +;; - data processing 2 (adc, add, and, bic, cmn, cmp, eor, orr, rsb,
8539 +;;                      rsc, sbc, sub, teq, tst);
8540 +;; - load single (ldr, ldrb, ldrbt, ldrt, ldrh, ldrsb, ldrsh);
8541 +;; - store single (str, strb, strbt, strt, strh);
8542 +;; - swap (swp, swpb);
8543 +;; - pld;
8544 +;; - count leading zeros and DSP add/sub (clz, qadd, qdadd, qsub, qdsub);
8545 +;; - multiply 2 (mul, muls, smull, umull, smulxy, smulls, umulls);
8546 +;; - multiply 3 (mla, mlas, smlal, umlal, smlaxy, smlalxy, smlawx,
8547 +;;               smlawy, smlals, umlals);
8548 +;; - branches (b, bl, blx, bx).
8549 +;;
8550 +;; Ignoring conditional execution, it is a good approximation to the core
8551 +;; to model that two instructions may only be issued in parallel if the
8552 +;; following conditions are met.
8553 +;; I.   The instructions both fall into one of the above groups and their
8554 +;;      corresponding groups have a entry in the matrix below that is not X.
8555 +;; II.  The second instruction does not read any register updated by the
8556 +;;      first instruction (already enforced by the GCC scheduler).
8557 +;; III. The second instruction does not need the carry flag updated by the
8558 +;;      first instruction.  Currently we do not model this.
8559 +;;
8560 +;; First       Second instruction group
8561 +;; insn
8562 +;;             DP1  DP2  L    S    SWP  PLD  CLZ  M2   M3   B
8563 +;;
8564 +;;     DP1     ok   ok   ok   ok   ok   ok   ok   ok   ok   ok
8565 +;;     DP2(1)  ok   ok   ok   ok   ok   ok   ok   ok   ok   ok
8566 +;;     DP2(2)  ok   (2)  ok   (4)  ok   ok   ok   ok   X    ok
8567 +;;     L   }
8568 +;;     SWP }   ok   ok   X    X    X    X    ok   ok   ok   ok
8569 +;;     PLD }
8570 +;;      S(3)   ok   ok   X    X    X    X    ok   ok   ok   ok
8571 +;;      S(4)   ok   (2)  X    X    X    X    ok   ok   X    ok
8572 +;;     CLZ     ok   ok   ok   ok   ok   ok   ok   ok   ok   ok
8573 +;;     M2      ok   ok   ok   ok   ok   ok   ok   X    X    ok
8574 +;;     M3      ok   (2)  ok   (4)  ok   ok   ok   X    X    ok
8575 +;;     B       ok   ok   ok   ok   ok   ok   ok   ok   ok   ok
8576 +;;
8577 +;; (1) without register shift
8578 +;; (2) with register shift
8579 +;; (3) with immediate offset
8580 +;; (4) with register offset
8581 +;;
8582 +;; We define a fake cpu unit "reg_shift_lock" to enforce constraints
8583 +;; between instructions in groups DP2(2) and M3.  All other
8584 +;; constraints are enforced automatically by virtue of the limited
8585 +;; number of pipelines available for the various operations, with
8586 +;; the exception of constraints involving S(4) that we do not model.
8587 +
8588 +(define_cpu_unit "reg_shift_lock" "marvell_f")
8589 +
8590 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8591 +;; ALU instructions
8592 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8593 +
8594 +;; 1. Certain logic operations can be retired after the E1 stage if
8595 +;; the pipeline is not already retiring another instruction.  In this
8596 +;; model we assume this behaviour always holds for mov, mvn, and, orr, eor
8597 +;; instructions.  If a register shift is involved and the instruction is
8598 +;; not mov or mvn, then a dual-issue constraint must be enforced.
8599 +
8600 +;; The first two cases are separate so they can be identified for
8601 +;; bypasses below.
8602 +
8603 +(define_insn_reservation "marvell_f_alu_early_retire" 1
8604 +  (and (eq_attr "tune" "marvell_f")
8605 +       (and (eq_attr "type" "alu")
8606 +            (eq_attr "insn" "mov,mvn,and,orr,eor")))
8607 +  "(a1_e1,a1_wb)|(a2_e1,a2_wb)")
8608 +
8609 +(define_insn_reservation "marvell_f_alu_early_retire_shift" 1
8610 +  (and (eq_attr "tune" "marvell_f")
8611 +       (and (eq_attr "type" "alu_shift_reg")
8612 +            (eq_attr "insn" "mov,mvn,and,orr,eor")))
8613 +  "(a1_e1,a1_wb)|(a2_e1,a2_wb)")
8614 +
8615 +(define_insn_reservation "marvell_f_alu_early_retire_reg_shift1" 1
8616 +  (and (eq_attr "tune" "marvell_f")
8617 +       (and (eq_attr "type" "alu_shift_reg")
8618 +            (eq_attr "insn" "mov,mvn")))
8619 +  "(a1_e1,a1_wb)|(a2_e1,a2_wb)")
8620 +
8621 +(define_insn_reservation "marvell_f_alu_early_retire_reg_shift2" 1
8622 +  (and (eq_attr "tune" "marvell_f")
8623 +       (and (eq_attr "type" "alu_shift_reg")
8624 +            (eq_attr "insn" "and,orr,eor")))
8625 +  "(reg_shift_lock+a1_e1,a1_wb)|(reg_shift_lock+a2_e1,a2_wb)")
8626 +
8627 +;; 2. ALU operations with no shifted operand.  These bypass the E1 stage if
8628 +;; the E2 stage of the corresponding pipeline is clear; here, we always
8629 +;; model this scenario [*].  We give the operation a latency of 1 yet reserve
8630 +;; both E1 and E2 for it (thus preventing the GCC scheduler, in the case
8631 +;; where both E1 and E2 of one pipeline are clear, from issuing one
8632 +;; instruction to each).
8633 +;;
8634 +;; [*] The non-bypass case is a latency of two, reserving E1 on the first
8635 +;;     cycle and E2 on the next.  Due to the way the scheduler works we
8636 +;;     have to choose between taking this as the default and taking the
8637 +;;     above case (with latency one) as the default; we choose the latter.
8638 +
8639 +(define_insn_reservation "marvell_f_alu_op_bypass_e1" 1
8640 +  (and (eq_attr "tune" "marvell_f")
8641 +       (and (eq_attr "type" "alu")
8642 +            (not (eq_attr "insn" "mov,mvn,and,orr,eor"))))
8643 +  "(a1_e1+a1_e2,a1_wb)|(a2_e1+a2_e2,a2_wb)")
8644 +
8645 +;; 3. ALU operations with a shift-by-constant operand.
8646 +
8647 +(define_insn_reservation "marvell_f_alu_shift_op" 2
8648 +  (and (eq_attr "tune" "marvell_f")
8649 +       (and (eq_attr "type" "alu_shift")
8650 +            (not (eq_attr "insn" "mov,mvn,and,orr,eor"))))
8651 +  "(a1_e1,a1_e2,a1_wb)|(a2_e1,a2_e2,a2_wb)")
8652 +
8653 +;; 4. ALU operations with a shift-by-register operand.  Since the
8654 +;; instruction is never mov or mvn, a dual-issue constraint must
8655 +;; be enforced.
8656 +
8657 +(define_insn_reservation "marvell_f_alu_shift_reg_op" 2
8658 +  (and (eq_attr "tune" "marvell_f")
8659 +       (and (eq_attr "type" "alu_shift_reg")
8660 +            (not (eq_attr "insn" "mov,mvn,and,orr,eor"))))
8661 +  "(reg_shift_lock+a1_e1,a1_e2,a1_wb)|(reg_shift_lock+a2_e1,a2_e2,a2_wb)")
8662 +
8663 +;; Given an ALU operation with shift (I1) followed by another ALU
8664 +;; operation (I2), with I2 depending on the destination register Rd of I1
8665 +;; and with I2 not using that value as the amount or the starting value for
8666 +;; a shift, then I1 and I2 may be issued to the same pipeline on
8667 +;; consecutive cycles.  In terms of this model that corresponds to I1
8668 +;; having a latency of one cycle.  There are three cases for various
8669 +;; I1 and I2 as follows.
8670 +
8671 +;; (a) I1 has a constant or register shift and I2 doesn't have a shift at all.
8672 +(define_bypass 1 "marvell_f_alu_shift_op,\
8673 +                 marvell_f_alu_shift_reg_op"
8674 +              "marvell_f_alu_op_bypass_e1,marvell_f_alu_early_retire")
8675 +
8676 +;; (b) I1 has a constant or register shift and I2 has a constant shift.
8677 +;; Rd must not provide the starting value for the shift.
8678 +(define_bypass 1 "marvell_f_alu_shift_op,\
8679 +                 marvell_f_alu_shift_reg_op"
8680 +              "marvell_f_alu_shift_op,marvell_f_alu_early_retire_shift"
8681 +              "arm_no_early_alu_shift_value_dep")
8682 +
8683 +;; (c) I1 has a constant or register shift and I2 has a register shift.
8684 +;; Rd must not provide the amount by which to shift.
8685 +(define_bypass 1 "marvell_f_alu_shift_op,\
8686 +                 marvell_f_alu_shift_reg_op"
8687 +              "marvell_f_alu_shift_reg_op,\
8688 +               marvell_f_alu_early_retire_reg_shift1,\
8689 +               marvell_f_alu_early_retire_reg_shift2"
8690 +              "arm_no_early_alu_shift_dep")
8691 +
8692 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8693 +;; Multiplication instructions
8694 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8695 +
8696 +;; Multiplication instructions in group "Multiply 2".
8697 +
8698 +(define_insn_reservation "marvell_f_multiply_2" 3
8699 +  (and (eq_attr "tune" "marvell_f")
8700 +       (eq_attr "insn" "mul,muls,smull,umull,smulxy,smulls,umulls"))
8701 +  "m_1,m_2,m_3,m_wb")
8702 +
8703 +;; Multiplication instructions in group "Multiply 3".  There is a
8704 +;; dual-issue constraint with non-multiplication ALU instructions
8705 +;; to be respected here.
8706 +
8707 +(define_insn_reservation "marvell_f_multiply_3" 3
8708 +  (and (eq_attr "tune" "marvell_f")
8709 +       (eq_attr "insn" "mla,mlas,smlal,umlal,smlaxy,smlalxy,smlawx,\
8710 +                        smlawy,smlals,umlals"))
8711 +  "reg_shift_lock+m_1,m_2,m_3,m_wb")
8712 +
8713 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8714 +;; Branch instructions
8715 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8716 +
8717 +;; Conditional backward b instructions can have a zero-cycle penalty, and
8718 +;; other conditional b and bl instructions have a one-cycle penalty if
8719 +;; predicted correctly.  Currently we model the zero-cycle case for all
8720 +;; branches.
8721 +
8722 +(define_insn_reservation "marvell_f_branches" 0
8723 + (and (eq_attr "tune" "marvell_f")
8724 +      (eq_attr "type" "branch"))
8725 + "nothing")
8726 +
8727 +;; Call latencies are not predictable; a semi-arbitrary very large
8728 +;; number is used as "positive infinity" for such latencies.
8729 +
8730 +(define_insn_reservation "marvell_f_call" 32 
8731 + (and (eq_attr "tune" "marvell_f")
8732 +      (eq_attr "type" "call"))
8733 + "nothing")
8734 +
8735 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8736 +;; Load/store instructions
8737 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8738 +
8739 +;; The models for load/store instructions do not accurately describe
8740 +;; the difference between operations with a base register writeback.
8741 +;; These models assume that all memory references hit in dcache.
8742 +
8743 +;; 1. Load/store for single registers.
8744 +
8745 +;; The worst case for a load is when the load result is needed in E1
8746 +;; (for example for a register shift), giving a latency of four.  Loads
8747 +;; skip E1 and access memory at the E2 stage.
8748 +
8749 +(define_insn_reservation "marvell_f_load1" 4
8750 + (and (eq_attr "tune" "marvell_f")
8751 +      (eq_attr "type" "load1,load_byte"))
8752 + "a1_e2+sram,a1_of,a1_wr,a1_wb")
8753 +
8754 +;; The result for a load may be bypassed (to be available at the same
8755 +;; time as the load arrives in the WR stage, so effectively at the OF
8756 +;; stage) to the Rn operand at E2 with a latency of two.  The result may
8757 +;; be bypassed to a non-Rn operand at E2 with a latency of three.  For
8758 +;; instructions without shifts, detection of an Rn bypass situation is
8759 +;; difficult (because some of the instruction patterns switch their
8760 +;; operands), and so we do not model that here.  For instructions with
8761 +;; shifts, the operand used at E2 will always be Rn, and so we can
8762 +;; model the latency-two bypass for these.
8763 +
8764 +(define_bypass 2 "marvell_f_load1"
8765 +               "marvell_f_alu_shift_op"
8766 +              "arm_no_early_alu_shift_value_dep")
8767 +
8768 +(define_bypass 2 "marvell_f_load1"
8769 +               "marvell_f_alu_shift_reg_op"
8770 +              "arm_no_early_alu_shift_dep")
8771 +
8772 +;; Stores write at the WR stage and loads read at the E2 stage, giving
8773 +;; a store latency of three.
8774 +
8775 +(define_insn_reservation "marvell_f_store1" 3
8776 + (and (eq_attr "tune" "marvell_f")
8777 +      (eq_attr "type" "store1"))
8778 + "a1_e2,a1_of,a1_wr+sram,a1_wb")
8779 +
8780 +;; 2. Load/store for two consecutive registers.  These may be dealt
8781 +;; with in the same number of cycles as single loads and stores.
8782 +
8783 +(define_insn_reservation "marvell_f_load2" 4
8784 + (and (eq_attr "tune" "marvell_f")
8785 +      (eq_attr "type" "load2"))
8786 + "a1_e2+sram,a1_of,a1_wr,a1_wb")
8787 +
8788 +(define_insn_reservation "marvell_f_store2" 3
8789 + (and (eq_attr "tune" "marvell_f")
8790 +      (eq_attr "type" "store2"))
8791 + "a1_e2,a1_of,a1_wr+sram,a1_wb")
8792 +
8793 +;; The first word of a doubleword load is eligible for the latency-two
8794 +;; bypass described above for single loads, but this is not modelled here.
8795 +;; We do however assume that either word may also be bypassed with
8796 +;; latency three for ALU operations with shifts (where the shift value and
8797 +;; amount do not depend on the loaded value) and latency four for ALU
8798 +;; operations without shifts.  The latency four case is of course the default.
8799 +
8800 +(define_bypass 3 "marvell_f_load2"
8801 +               "marvell_f_alu_shift_op"
8802 +              "arm_no_early_alu_shift_value_dep")
8803 +
8804 +(define_bypass 3 "marvell_f_load2"
8805 +               "marvell_f_alu_shift_reg_op"
8806 +              "arm_no_early_alu_shift_dep")
8807 +
8808 +;; 3. Load/store for more than two registers.
8809 +
8810 +;; These instructions stall for an extra cycle in the decode stage;
8811 +;; individual load/store instructions for each register are then issued.
8812 +;; The load/store multiple instruction itself is removed from the decode
8813 +;; stage at the same time as the final load/store instruction is issued.
8814 +;; To complicate matters, pairs of loads/stores referencing two
8815 +;; consecutive registers will be issued together as doubleword operations.
8816 +;; We model a 3-word load as an LDR plus an LDRD, and a 4-word load
8817 +;; as two LDRDs; thus, these are allocated the same latencies (the
8818 +;; latency for two consecutive loads plus one for the setup stall).
8819 +;; The extra stall is modelled by reserving E1.
8820 +
8821 +(define_insn_reservation "marvell_f_load3_4" 6
8822 + (and (eq_attr "tune" "marvell_f")
8823 +      (eq_attr "type" "load3,load4"))
8824 + "a1_e1,a1_e1+a1_e2+sram,a1_e2+sram+a1_of,a1_of+a1_wr,a1_wr+a1_wb,a1_wb")
8825 +
8826 +;; Bypasses are possible for ldm as for single loads, but we do not
8827 +;; model them here since the order of the constituent loads is
8828 +;; difficult to predict.
8829 +
8830 +(define_insn_reservation "marvell_f_store3_4" 5
8831 + (and (eq_attr "tune" "marvell_f")
8832 +      (eq_attr "type" "store3,store4"))
8833 + "a1_e1,a1_e1+a1_e2,a1_e2+a1_of,a1_of+a1_wr+sram,a1_wr+sram+a1_wb,a1_wb")
8834 +
8835 diff -Nur a/gcc/config/arm/marvell-f-vfp.md b/gcc/config/arm/marvell-f-vfp.md
8836 --- a/gcc/config/arm/marvell-f-vfp.md   1970-01-01 01:00:00.000000000 +0100
8837 +++ b/gcc/config/arm/marvell-f-vfp.md   2010-01-25 09:50:28.995687913 +0100
8838 @@ -0,0 +1,153 @@
8839 +;; Marvell 2850 VFP pipeline description
8840 +;; Copyright (C) 2007 Free Software Foundation, Inc.
8841 +;; Written by CodeSourcery, Inc.
8842 +
8843 +;; This file is part of GCC.
8844 +
8845 +;; GCC is distributed in the hope that it will be useful, but WITHOUT
8846 +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
8847 +;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
8848 +;; License for more details.
8849 +
8850 +;; You should have received a copy of the GNU General Public License
8851 +;; along with GCC; see the file COPYING.  If not, write to
8852 +;; the Free Software Foundation, 51 Franklin Street, Fifth Floor,
8853 +;; Boston, MA 02110-1301, USA.
8854 +
8855 +;; This automaton provides a pipeline description for the Marvell
8856 +;; 2850 core.
8857 +;;
8858 +;; The model given here assumes that the condition for all conditional
8859 +;; instructions is "true", i.e., that all of the instructions are
8860 +;; actually executed.
8861 +
8862 +(define_automaton "marvell_f_vfp")
8863 +
8864 +;; This is a single-issue VFPv2 implementation with the following execution
8865 +;; units:
8866 +;;
8867 +;; 1. Addition/subtraction unit; takes three cycles, pipelined.
8868 +;; 2. Multiplication unit; takes four cycles, pipelined.
8869 +;; 3. Add buffer, used for multiply-accumulate (see below).
8870 +;; 4. Divide/square root unit, not pipelined.
8871 +;;    For single-precision: takes sixteen cycles, can accept another insn
8872 +;;                         after fifteen cycles.
8873 +;;    For double-precision: takes thirty-one cycles, can accept another insn
8874 +;;                         after thirty cycles.
8875 +;; 5. Single-cycle unit, pipelined.
8876 +;;    This does absolute value/copy/negate/compare in one cycle and
8877 +;;    conversion in two cycles.
8878 +;;
8879 +;; When all three operands of a multiply-accumulate instruction are ready,
8880 +;; one is issued to the add buffer (which can hold six operands in a FIFO)
8881 +;; and the two to be multiplied are issued to the multiply unit.  After
8882 +;; four cycles in the multiply unit, one cycle is taken to issue the
8883 +;; operand from the add buffer plus the multiplication result to the
8884 +;; addition/subtraction unit.  That issue takes priority over any add/sub
8885 +;; instruction waiting at the normal issue stage, but may be performed in
8886 +;; parallel with the issue of a non-add/sub instruction.  The total time
8887 +;; for a multiply-accumulate instruction to pass through the execution
8888 +;; units is hence eight cycles.
8889 +;;
8890 +;; We do not need to explicitly model the add buffer because it can
8891 +;; always issue the instruction at the head of its FIFO (due to the above
8892 +;; priority rule) and there are more spaces in the add buffer (six) than
8893 +;; there are stages (four) in the multiplication unit.
8894 +;;
8895 +;; Two instructions may be retired at once from the head of an 8-entry
8896 +;; reorder buffer.  Data from these first two instructions only may be
8897 +;; forwarded to the inputs of the issue unit.  We assume that the
8898 +;; pressure on the reorder buffer will be sufficiently low that every
8899 +;; instruction entering it will be eligible for data forwarding.  Since
8900 +;; data is forwarded to the issue unit and not the execution units (so
8901 +;; for example single-cycle instructions cannot be issued back-to-back),
8902 +;; the latencies given below are the cycle counts above plus one.
8903 +
8904 +(define_cpu_unit "mf_vfp_issue" "marvell_f_vfp")
8905 +(define_cpu_unit "mf_vfp_add" "marvell_f_vfp")
8906 +(define_cpu_unit "mf_vfp_mul" "marvell_f_vfp")
8907 +(define_cpu_unit "mf_vfp_div" "marvell_f_vfp")
8908 +(define_cpu_unit "mf_vfp_single_cycle" "marvell_f_vfp")
8909 +
8910 +;; An attribute to indicate whether our reservations are applicable.
8911 +
8912 +(define_attr "marvell_f_vfp" "yes,no"
8913 +  (const (if_then_else (and (eq_attr "tune" "marvell_f")
8914 +                            (eq_attr "fpu" "vfp"))
8915 +                       (const_string "yes") (const_string "no"))))
8916 +
8917 +;; Reservations of functional units.  The nothing*2 reservations at the
8918 +;; start of many of the reservation strings correspond to the decode
8919 +;; stages.  We need to have these reservations so that we can correctly
8920 +;; reserve parts of the core's A1 pipeline for loads and stores.  For
8921 +;; that case (since loads skip E1) the pipelines line up thus:
8922 +;;     A1 pipe:        Issue   E2      OF      WR      WB       ...
8923 +;;     VFP pipe:       Fetch   Decode1 Decode2 Issue   Execute1 ...
8924 +;; For a load, we need to make a reservation of E2, and thus we must
8925 +;; use Decode1 as the starting point for all VFP reservations here.
8926 +;;
8927 +;; For reservations of pipelined VFP execution units we only reserve
8928 +;; the execution unit for the first execution cycle, omitting any trailing
8929 +;; "nothing" reservations.
8930 +
8931 +(define_insn_reservation "marvell_f_vfp_add" 4
8932 +  (and (eq_attr "marvell_f_vfp" "yes")
8933 +       (eq_attr "type" "farith"))
8934 +  "nothing*2,mf_vfp_issue,mf_vfp_add")
8935 +
8936 +(define_insn_reservation "marvell_f_vfp_mul" 5
8937 +  (and (eq_attr "marvell_f_vfp" "yes")
8938 +       (eq_attr "type" "fmuls,fmuld"))
8939 +  "nothing*2,mf_vfp_issue,mf_vfp_mul")
8940 +
8941 +(define_insn_reservation "marvell_f_vfp_divs" 17
8942 +  (and (eq_attr "marvell_f_vfp" "yes")
8943 +       (eq_attr "type" "fdivs"))
8944 +  "nothing*2,mf_vfp_issue,mf_vfp_div*15")
8945 +
8946 +(define_insn_reservation "marvell_f_vfp_divd" 32
8947 +  (and (eq_attr "marvell_f_vfp" "yes")
8948 +       (eq_attr "type" "fdivd"))
8949 +  "nothing*2,mf_vfp_issue,mf_vfp_div*30")
8950 +
8951 +;; The DFA lookahead is small enough that the "add" reservation here
8952 +;; will always take priority over any addition/subtraction instruction
8953 +;; issued five cycles after the multiply-accumulate instruction, as
8954 +;; required.
8955 +(define_insn_reservation "marvell_f_vfp_mac" 9
8956 +  (and (eq_attr "marvell_f_vfp" "yes")
8957 +       (eq_attr "type" "fmacs,fmacd"))
8958 +  "nothing*2,mf_vfp_issue,mf_vfp_mul,nothing*4,mf_vfp_add")
8959 +
8960 +(define_insn_reservation "marvell_f_vfp_single" 2
8961 +  (and (eq_attr "marvell_f_vfp" "yes")
8962 +       (eq_attr "type" "ffarith"))
8963 +  "nothing*2,mf_vfp_issue,mf_vfp_single_cycle")
8964 +
8965 +(define_insn_reservation "marvell_f_vfp_convert" 3
8966 +  (and (eq_attr "marvell_f_vfp" "yes")
8967 +       (eq_attr "type" "f_cvt"))
8968 +  "nothing*2,mf_vfp_issue,mf_vfp_single_cycle")
8969 +
8970 +(define_insn_reservation "marvell_f_vfp_load" 2
8971 +  (and (eq_attr "marvell_f_vfp" "yes")
8972 +       (eq_attr "type" "f_loads,f_loadd"))
8973 +  "a1_e2+sram,a1_of,a1_wr+mf_vfp_issue,a1_wb+mf_vfp_single_cycle")
8974 +
8975 +(define_insn_reservation "marvell_f_vfp_from_core" 2
8976 +  (and (eq_attr "marvell_f_vfp" "yes")
8977 +       (eq_attr "type" "r_2_f"))
8978 +  "a1_e2,a1_of,a1_wr+mf_vfp_issue,a1_wb+mf_vfp_single_cycle")
8979 +
8980 +;; The interaction between the core and VFP pipelines during VFP
8981 +;; store operations and core <-> VFP moves is not clear, so we guess.
8982 +(define_insn_reservation "marvell_f_vfp_store" 3
8983 +  (and (eq_attr "marvell_f_vfp" "yes")
8984 +       (eq_attr "type" "f_stores,f_stored"))
8985 +  "a1_e2,a1_of,mf_vfp_issue,a1_wr+sram+mf_vfp_single_cycle")
8986 +
8987 +(define_insn_reservation "marvell_f_vfp_to_core" 4
8988 +  (and (eq_attr "marvell_f_vfp" "yes")
8989 +       (eq_attr "type" "f_2_r"))
8990 +  "a1_e2,a1_of,a1_wr+mf_vfp_issue,a1_wb+mf_vfp_single_cycle")
8991 +
8992 diff -Nur a/gcc/config/arm/montavista-linux.h b/gcc/config/arm/montavista-linux.h
8993 --- a/gcc/config/arm/montavista-linux.h 1970-01-01 01:00:00.000000000 +0100
8994 +++ b/gcc/config/arm/montavista-linux.h 2010-01-25 09:50:28.995687913 +0100
8995 @@ -0,0 +1,33 @@
8996 +/* MontaVista GNU/Linux Configuration.
8997 +   Copyright (C) 2009
8998 +   Free Software Foundation, Inc.
8999 +
9000 +This file is part of GCC.
9001 +
9002 +GCC is free software; you can redistribute it and/or modify
9003 +it under the terms of the GNU General Public License as published by
9004 +the Free Software Foundation; either version 3, or (at your option)
9005 +any later version.
9006 +
9007 +GCC is distributed in the hope that it will be useful,
9008 +but WITHOUT ANY WARRANTY; without even the implied warranty of
9009 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9010 +GNU General Public License for more details.
9011 +
9012 +You should have received a copy of the GNU General Public License
9013 +along with GCC; see the file COPYING3.  If not see
9014 +<http://www.gnu.org/licenses/>.  */
9015 +
9016 +/* Add -tarmv6 and -tthumb2 options for convenience in generating multilibs.
9017 +*/
9018 +#undef CC1_SPEC
9019 +#define CC1_SPEC "                                                     \
9020 + %{tarmv6:      -march=armv6 -mfloat-abi=softfp ;                      \
9021 +   tthumb2:     -mthumb -march=armv7-a -mfloat-abi=softfp ;             \
9022 +   :            -march=armv5t}"
9023 +
9024 +/* The various C libraries each have their own subdirectory.  */
9025 +#undef SYSROOT_SUFFIX_SPEC
9026 +#define SYSROOT_SUFFIX_SPEC                                    \
9027 +  "%{tarmv6:/armv6 ;                                           \
9028 +     tthumb2:/thumb2}"
9029 diff -Nur a/gcc/config/arm/neon-gen.ml b/gcc/config/arm/neon-gen.ml
9030 --- a/gcc/config/arm/neon-gen.ml        2009-04-10 01:23:07.000000000 +0200
9031 +++ b/gcc/config/arm/neon-gen.ml        2010-01-25 09:50:28.995687913 +0100
9032 @@ -122,6 +122,7 @@
9033    | T_uint16 | T_int16 -> T_intHI
9034    | T_uint32 | T_int32 -> T_intSI
9035    | T_uint64 | T_int64 -> T_intDI
9036 +  | T_float32 -> T_floatSF
9037    | T_poly8 -> T_intQI
9038    | T_poly16 -> T_intHI
9039    | T_arrayof (n, elt) -> T_arrayof (n, signed_ctype elt)
9040 @@ -320,7 +321,7 @@
9041      typeinfo;
9042    Format.print_newline ();
9043    (* Extra types not in <stdint.h>.  *)
9044 -  Format.printf "typedef __builtin_neon_sf float32_t;\n";
9045 +  Format.printf "typedef float float32_t;\n";
9046    Format.printf "typedef __builtin_neon_poly8 poly8_t;\n";
9047    Format.printf "typedef __builtin_neon_poly16 poly16_t;\n"
9048  
9049 @@ -399,7 +400,11 @@
9050  "extern \"C\" {";
9051  "#endif";
9052  "";
9053 +"#if defined (__vxworks) && defined (_WRS_KERNEL)";
9054 +"#include <vxWorks.h>";
9055 +"#else";
9056  "#include <stdint.h>";
9057 +"#endif";
9058  ""];
9059    deftypes ();
9060    arrtypes ();
9061 diff -Nur a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md
9062 --- a/gcc/config/arm/neon.md    2009-02-20 16:20:38.000000000 +0100
9063 +++ b/gcc/config/arm/neon.md    2010-01-25 09:50:28.995687913 +0100
9064 @@ -159,7 +159,8 @@
9065     (UNSPEC_VUZP1               201)
9066     (UNSPEC_VUZP2               202)
9067     (UNSPEC_VZIP1               203)
9068 -   (UNSPEC_VZIP2               204)])
9069 +   (UNSPEC_VZIP2               204)
9070 +   (UNSPEC_MISALIGNED_ACCESS   205)])
9071  
9072  ;; Double-width vector modes.
9073  (define_mode_iterator VD [V8QI V4HI V2SI V2SF])
9074 @@ -459,7 +460,9 @@
9075           "=w,Uv,w, w,  ?r,?w,?r,?r, ?Us")
9076         (match_operand:VD 1 "general_operand"
9077           " w,w, Dn,Uvi, w, r, r, Usi,r"))]
9078 -  "TARGET_NEON"
9079 +  "TARGET_NEON
9080 +   && (register_operand (operands[0], <MODE>mode)
9081 +       || register_operand (operands[1], <MODE>mode))"
9082  {
9083    if (which_alternative == 2)
9084      {
9085 @@ -481,7 +484,7 @@
9086  
9087    /* FIXME: If the memory layout is changed in big-endian mode, output_move_vfp
9088       below must be changed to output_move_neon (which will use the
9089 -     element/structure loads/stores), and the constraint changed to 'Un' instead
9090 +     element/structure loads/stores), and the constraint changed to 'Um' instead
9091       of 'Uv'.  */
9092  
9093    switch (which_alternative)
9094 @@ -506,7 +509,9 @@
9095           "=w,Un,w, w,  ?r,?w,?r,?r,  ?Us")
9096         (match_operand:VQXMOV 1 "general_operand"
9097           " w,w, Dn,Uni, w, r, r, Usi, r"))]
9098 -  "TARGET_NEON"
9099 +  "TARGET_NEON
9100 +   && (register_operand (operands[0], <MODE>mode)
9101 +       || register_operand (operands[1], <MODE>mode))"
9102  {
9103    if (which_alternative == 2)
9104      {
9105 @@ -549,6 +554,11 @@
9106         (match_operand:TI 1 "general_operand" ""))]
9107    "TARGET_NEON"
9108  {
9109 +  if (can_create_pseudo_p ())
9110 +    {
9111 +      if (GET_CODE (operands[0]) != REG)
9112 +       operands[1] = force_reg (TImode, operands[1]);
9113 +    }
9114  })
9115  
9116  (define_expand "mov<mode>"
9117 @@ -556,12 +566,19 @@
9118         (match_operand:VSTRUCT 1 "general_operand" ""))]
9119    "TARGET_NEON"
9120  {
9121 +  if (can_create_pseudo_p ())
9122 +    {
9123 +      if (GET_CODE (operands[0]) != REG)
9124 +       operands[1] = force_reg (<MODE>mode, operands[1]);
9125 +    }
9126  })
9127  
9128  (define_insn "*neon_mov<mode>"
9129    [(set (match_operand:VSTRUCT 0 "nonimmediate_operand"        "=w,Ut,w")
9130         (match_operand:VSTRUCT 1 "general_operand"      " w,w, Ut"))]
9131 -  "TARGET_NEON"
9132 +  "TARGET_NEON
9133 +   && (register_operand (operands[0], <MODE>mode)
9134 +       || register_operand (operands[1], <MODE>mode))"
9135  {
9136    switch (which_alternative)
9137      {
9138 @@ -658,6 +675,49 @@
9139    neon_disambiguate_copy (operands, dest, src, 4);
9140  })
9141  
9142 +(define_expand "movmisalign<mode>"
9143 +  [(set (match_operand:VDQX 0 "nonimmediate_operand"         "")
9144 +       (unspec:VDQX [(match_operand:VDQX 1 "general_operand" "")]
9145 +                    UNSPEC_MISALIGNED_ACCESS))]
9146 +  "TARGET_NEON && !BYTES_BIG_ENDIAN"
9147 +{
9148 +  if (!s_register_operand (operands[0], <MODE>mode)
9149 +      && !s_register_operand (operands[1], <MODE>mode))
9150 +    FAIL;
9151 +})
9152 +
9153 +(define_insn "*movmisalign<mode>_neon_store"
9154 +  [(set (match_operand:VDX 0 "memory_operand"                  "=Um")
9155 +       (unspec:VDX [(match_operand:VDX 1 "s_register_operand" " w")]
9156 +                   UNSPEC_MISALIGNED_ACCESS))]
9157 +  "TARGET_NEON && !BYTES_BIG_ENDIAN"
9158 +  "vst1.<V_sz_elem>\t{%P1}, %A0"
9159 +  [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")])
9160 +
9161 +(define_insn "*movmisalign<mode>_neon_load"
9162 +  [(set (match_operand:VDX 0 "s_register_operand"          "=w")
9163 +       (unspec:VDX [(match_operand:VDX 1 "memory_operand" " Um")]
9164 +                   UNSPEC_MISALIGNED_ACCESS))]
9165 +  "TARGET_NEON && !BYTES_BIG_ENDIAN"
9166 +  "vld1.<V_sz_elem>\t{%P0}, %A1"
9167 +  [(set_attr "neon_type" "neon_vld1_1_2_regs")])
9168 +
9169 +(define_insn "*movmisalign<mode>_neon_store"
9170 +  [(set (match_operand:VQX 0 "memory_operand"                  "=Um")
9171 +       (unspec:VQX [(match_operand:VQX 1 "s_register_operand" " w")]
9172 +                   UNSPEC_MISALIGNED_ACCESS))]
9173 +  "TARGET_NEON && !BYTES_BIG_ENDIAN"
9174 +  "vst1.<V_sz_elem>\t{%q1}, %A0"
9175 +  [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")])
9176 +
9177 +(define_insn "*movmisalign<mode>_neon_load"
9178 +  [(set (match_operand:VQX 0 "s_register_operand"           "=w")
9179 +       (unspec:VQX [(match_operand:VQX 1 "general_operand" " Um")]
9180 +                   UNSPEC_MISALIGNED_ACCESS))]
9181 +  "TARGET_NEON && !BYTES_BIG_ENDIAN"
9182 +  "vld1.<V_sz_elem>\t{%q0}, %A1"
9183 +  [(set_attr "neon_type" "neon_vld1_1_2_regs")])
9184 +
9185  (define_insn "vec_set<mode>_internal"
9186    [(set (match_operand:VD 0 "s_register_operand" "=w")
9187          (vec_merge:VD
9188 @@ -862,6 +922,50 @@
9189                                      (const_string "neon_mul_qqq_8_16_32_ddd_32")))))]
9190  )
9191  
9192 +(define_insn "*mul<mode>3add<mode>_neon"
9193 +  [(set (match_operand:VDQ 0 "s_register_operand" "=w")
9194 +        (plus:VDQ (mult:VDQ (match_operand:VDQ 2 "s_register_operand" "w")
9195 +                            (match_operand:VDQ 3 "s_register_operand" "w"))
9196 +                 (match_operand:VDQ 1 "s_register_operand" "0")))]
9197 +  "TARGET_NEON"
9198 +  "vmla.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
9199 +  [(set (attr "neon_type")
9200 +      (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
9201 +                    (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
9202 +                                  (const_string "neon_fp_vmla_ddd")
9203 +                                  (const_string "neon_fp_vmla_qqq"))
9204 +                    (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
9205 +                                  (if_then_else
9206 +                                    (ne (symbol_ref "<Scalar_mul_8_16>") (const_int 0))
9207 +                                    (const_string "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long")
9208 +                                    (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
9209 +                                  (if_then_else (ne (symbol_ref "<Scalar_mul_8_16>") (const_int 0))
9210 +                                    (const_string "neon_mla_qqq_8_16")
9211 +                                    (const_string "neon_mla_qqq_32_qqd_32_scalar")))))]
9212 +)
9213 +
9214 +(define_insn "*mul<mode>3neg<mode>add<mode>_neon"
9215 +  [(set (match_operand:VDQ 0 "s_register_operand" "=w")
9216 +        (minus:VDQ (match_operand:VDQ 1 "s_register_operand" "0")
9217 +                   (mult:VDQ (match_operand:VDQ 2 "s_register_operand" "w")
9218 +                             (match_operand:VDQ 3 "s_register_operand" "w"))))]
9219 +  "TARGET_NEON"
9220 +  "vmls.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
9221 +  [(set (attr "neon_type")
9222 +      (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
9223 +                    (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
9224 +                                  (const_string "neon_fp_vmla_ddd")
9225 +                                  (const_string "neon_fp_vmla_qqq"))
9226 +                    (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
9227 +                                  (if_then_else
9228 +                                    (ne (symbol_ref "<Scalar_mul_8_16>") (const_int 0))
9229 +                                    (const_string "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long")
9230 +                                    (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
9231 +                                  (if_then_else (ne (symbol_ref "<Scalar_mul_8_16>") (const_int 0))
9232 +                                    (const_string "neon_mla_qqq_8_16")
9233 +                                    (const_string "neon_mla_qqq_32_qqd_32_scalar")))))]
9234 +)
9235 +
9236  (define_insn "ior<mode>3"
9237    [(set (match_operand:VDQ 0 "s_register_operand" "=w,w")
9238         (ior:VDQ (match_operand:VDQ 1 "s_register_operand" "w,0")
9239 @@ -3611,7 +3715,8 @@
9240                           UNSPEC_VSHLL_N))]
9241    "TARGET_NEON"
9242  {
9243 -  neon_const_bounds (operands[2], 0, neon_element_bits (<MODE>mode));
9244 +  /* The boundaries are: 0 < imm <= size.  */
9245 +  neon_const_bounds (operands[2], 0, neon_element_bits (<MODE>mode) + 1);
9246    return "vshll.%T3%#<V_sz_elem>\t%q0, %P1, %2";
9247  }
9248    [(set_attr "neon_type" "neon_shift_1")]
9249 diff -Nur a/gcc/config/arm/neon.ml b/gcc/config/arm/neon.ml
9250 --- a/gcc/config/arm/neon.ml    2007-08-02 12:49:31.000000000 +0200
9251 +++ b/gcc/config/arm/neon.ml    2010-01-25 09:50:28.995687913 +0100
9252 @@ -50,7 +50,7 @@
9253               | T_ptrto of vectype | T_const of vectype
9254               | T_void      | T_intQI
9255               | T_intHI     | T_intSI
9256 -             | T_intDI
9257 +             | T_intDI     | T_floatSF
9258  
9259  (* The meanings of the following are:
9260       TImode : "Tetra", two registers (four words).
9261 @@ -1693,6 +1693,7 @@
9262    | T_intHI -> "__builtin_neon_hi"
9263    | T_intSI -> "__builtin_neon_si"
9264    | T_intDI -> "__builtin_neon_di"
9265 +  | T_floatSF -> "__builtin_neon_sf"
9266    | T_arrayof (num, base) ->
9267        let basename = name (fun x -> x) base in
9268        affix (Printf.sprintf "%sx%d" basename num)
9269 diff -Nur a/gcc/config/arm/neon-testgen.ml b/gcc/config/arm/neon-testgen.ml
9270 --- a/gcc/config/arm/neon-testgen.ml    2007-08-02 12:49:31.000000000 +0200
9271 +++ b/gcc/config/arm/neon-testgen.ml    2010-01-25 09:50:28.995687913 +0100
9272 @@ -51,8 +51,8 @@
9273    Printf.fprintf chan "/* This file was autogenerated by neon-testgen.  */\n\n";
9274    Printf.fprintf chan "/* { dg-do assemble } */\n";
9275    Printf.fprintf chan "/* { dg-require-effective-target arm_neon_ok } */\n";
9276 -  Printf.fprintf chan
9277 -                 "/* { dg-options \"-save-temps -O0 -mfpu=neon -mfloat-abi=softfp\" } */\n";
9278 +  Printf.fprintf chan "/* { dg-options \"-save-temps -O0\" } */\n";
9279 +  Printf.fprintf chan "/* { dg-add-options arm_neon } */\n";
9280    Printf.fprintf chan "\n#include \"arm_neon.h\"\n\n";
9281    Printf.fprintf chan "void test_%s (void)\n{\n" test_name
9282  
9283 diff -Nur a/gcc/config/arm/netbsd-elf.h b/gcc/config/arm/netbsd-elf.h
9284 --- a/gcc/config/arm/netbsd-elf.h       2007-08-02 12:49:31.000000000 +0200
9285 +++ b/gcc/config/arm/netbsd-elf.h       2010-01-25 09:50:28.995687913 +0100
9286 @@ -153,5 +153,5 @@
9287  while (0)
9288  
9289  #undef FPUTYPE_DEFAULT
9290 -#define FPUTYPE_DEFAULT FPUTYPE_VFP
9291 +#define FPUTYPE_DEFAULT "vfp"
9292  
9293 diff -Nur a/gcc/config/arm/nocrt0.h b/gcc/config/arm/nocrt0.h
9294 --- a/gcc/config/arm/nocrt0.h   1970-01-01 01:00:00.000000000 +0100
9295 +++ b/gcc/config/arm/nocrt0.h   2010-01-25 09:50:28.995687913 +0100
9296 @@ -0,0 +1,25 @@
9297 +/* Definitions for generic libgloss based cofigs where crt0 is supplied by
9298 +   the linker script.
9299 +   Copyright (C) 2006 Free Software Foundation, Inc.
9300 +
9301 +   This file is part of GCC.
9302 +
9303 +   GCC is free software; you can redistribute it and/or modify it
9304 +   under the terms of the GNU General Public License as published
9305 +   by the Free Software Foundation; either version 3, or (at your
9306 +   option) any later version.
9307 +
9308 +   GCC is distributed in the hope that it will be useful, but WITHOUT
9309 +   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
9310 +   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
9311 +   License for more details.
9312 +
9313 +   You should have received a copy of the GNU General Public License
9314 +   along with GCC; see the file COPYING3.  If not see
9315 +   <http://www.gnu.org/licenses/>.  */
9316 +
9317 +#undef  STARTFILE_SPEC
9318 +#define STARTFILE_SPEC " crti%O%s crtbegin%O%s"
9319 +
9320 +#undef LIB_SPEC
9321 +#define LIB_SPEC "-lc"
9322 diff -Nur a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md
9323 --- a/gcc/config/arm/predicates.md      2009-02-20 16:20:38.000000000 +0100
9324 +++ b/gcc/config/arm/predicates.md      2010-01-25 09:50:28.995687913 +0100
9325 @@ -73,6 +73,10 @@
9326               || REGNO_REG_CLASS (REGNO (op)) == FPA_REGS));
9327  })
9328  
9329 +(define_special_predicate "subreg_lowpart_operator"
9330 +  (and (match_code "subreg")
9331 +       (match_test "subreg_lowpart_p (op)")))
9332 +
9333  ;; Reg, subreg(reg) or const_int.
9334  (define_predicate "reg_or_int_operand"
9335    (ior (match_code "const_int")
9336 @@ -168,6 +172,11 @@
9337    (and (match_code "plus,minus,ior,xor,and")
9338         (match_test "mode == GET_MODE (op)")))
9339  
9340 +;; True for plus/minus operators
9341 +(define_special_predicate "plusminus_operator"
9342 +  (and (match_code "plus,minus")
9343 +       (match_test "mode == GET_MODE (op)")))
9344 +
9345  ;; True for logical binary operators.
9346  (define_special_predicate "logical_binary_operator"
9347    (and (match_code "ior,xor,and")
9348 @@ -295,6 +304,9 @@
9349    HOST_WIDE_INT i = 1, base = 0;
9350    rtx elt;
9351  
9352 +  if (low_irq_latency)
9353 +    return false;
9354 +
9355    if (count <= 1
9356        || GET_CODE (XVECEXP (op, 0, 0)) != SET)
9357      return false;
9358 @@ -352,6 +364,9 @@
9359    HOST_WIDE_INT i = 1, base = 0;
9360    rtx elt;
9361  
9362 +  if (low_irq_latency)
9363 +    return false;
9364 +
9365    if (count <= 1
9366        || GET_CODE (XVECEXP (op, 0, 0)) != SET)
9367      return false;
9368 diff -Nur a/gcc/config/arm/sfp-machine.h b/gcc/config/arm/sfp-machine.h
9369 --- a/gcc/config/arm/sfp-machine.h      2008-03-03 15:30:48.000000000 +0100
9370 +++ b/gcc/config/arm/sfp-machine.h      2010-01-25 09:50:28.995687913 +0100
9371 @@ -14,9 +14,11 @@
9372  #define _FP_DIV_MEAT_D(R,X,Y)  _FP_DIV_MEAT_2_udiv(D,R,X,Y)
9373  #define _FP_DIV_MEAT_Q(R,X,Y)  _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
9374  
9375 +#define _FP_NANFRAC_H          ((_FP_QNANBIT_H << 1) - 1)
9376  #define _FP_NANFRAC_S          ((_FP_QNANBIT_S << 1) - 1)
9377  #define _FP_NANFRAC_D          ((_FP_QNANBIT_D << 1) - 1), -1
9378  #define _FP_NANFRAC_Q          ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
9379 +#define _FP_NANSIGN_H          0
9380  #define _FP_NANSIGN_S          0
9381  #define _FP_NANSIGN_D          0
9382  #define _FP_NANSIGN_Q          0
9383 @@ -92,5 +94,7 @@
9384  #define __fixdfdi      __aeabi_d2lz
9385  #define __fixunsdfdi   __aeabi_d2ulz
9386  #define __floatdidf    __aeabi_l2d
9387 +#define __extendhfsf2  __gnu_h2f_ieee
9388 +#define __truncsfhf2   __gnu_f2h_ieee
9389  
9390  #endif /* __ARM_EABI__ */
9391 diff -Nur a/gcc/config/arm/t-arm b/gcc/config/arm/t-arm
9392 --- a/gcc/config/arm/t-arm      2008-03-27 20:20:18.000000000 +0100
9393 +++ b/gcc/config/arm/t-arm      2010-01-25 09:50:28.995687913 +0100
9394 @@ -13,7 +13,9 @@
9395                 $(srcdir)/config/arm/iwmmxt.md \
9396                 $(srcdir)/config/arm/vfp.md \
9397                 $(srcdir)/config/arm/neon.md \
9398 -               $(srcdir)/config/arm/thumb2.md
9399 +               $(srcdir)/config/arm/thumb2.md \
9400 +               $(srcdir)/config/arm/marvell-f.md \
9401 +               $(srcdir)/config/arm/hwdiv.md
9402  
9403  s-config s-conditions s-flags s-codes s-constants s-emit s-recog s-preds \
9404         s-opinit s-extract s-peep s-attr s-attrtab s-output: $(MD_INCLUDES)
9405 diff -Nur a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf
9406 --- a/gcc/config/arm/t-arm-elf  2008-06-12 19:29:47.000000000 +0200
9407 +++ b/gcc/config/arm/t-arm-elf  2010-01-25 09:50:28.995687913 +0100
9408 @@ -24,10 +24,18 @@
9409  #MULTILIB_MATCHES      += march?armv7=march?armv7-a
9410  #MULTILIB_MATCHES      += march?armv7=march?armv7-r
9411  #MULTILIB_MATCHES      += march?armv7=march?armv7-m
9412 +#MULTILIB_MATCHES      += march?armv7=march?armv7e-m
9413  #MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
9414  #MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
9415  #MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
9416  
9417 +# Not quite true.  We can support hard-vfp calling in Thumb2, but how do we
9418 +# express that here?  Also, we really need architecture v5e or later
9419 +# (mcrr etc).
9420 +MULTILIB_OPTIONS       += mfloat-abi=hard
9421 +MULTILIB_DIRNAMES      += fpu
9422 +MULTILIB_EXCEPTIONS    += *mthumb/*mfloat-abi=hard*
9423 +
9424  # MULTILIB_OPTIONS    += mcpu=ep9312
9425  # MULTILIB_DIRNAMES   += ep9312
9426  # MULTILIB_EXCEPTIONS += *mthumb/*mcpu=ep9312*
9427 diff -Nur a/gcc/config/arm/t-asa b/gcc/config/arm/t-asa
9428 --- a/gcc/config/arm/t-asa      1970-01-01 01:00:00.000000000 +0100
9429 +++ b/gcc/config/arm/t-asa      2010-01-25 09:50:28.995687913 +0100
9430 @@ -0,0 +1,45 @@
9431 +# Overrides for ASA
9432 +
9433 +# Here is the expected output from xgcc -print-multi-lib.
9434 +#
9435 +# .;@fno-omit-frame-pointer@mapcs-frame
9436 +# armv4t;@march=armv4t@fno-omit-frame-pointer@mapcs-frame
9437 +# armv6;@march=armv6@fno-omit-frame-pointer@mapcs-frame
9438 +# armv7a;@march=armv7-a@fno-omit-frame-pointer@mapcs-frame
9439 +# armv6f;@march=armv6@mfloat-abi=softfp@fno-omit-frame-pointer@mapcs-frame
9440 +# armv7af;@march=armv7-a@mfpu=neon@mfloat-abi=softfp@fno-omit-frame-pointer@mapcs-frame
9441 +# thumb2;@mthumb@march=armv7-a@fno-omit-frame-pointer@mapcs-frame
9442 +# thumb2f;@mthumb@march=armv7-a@mfpu=neon@mfloat-abi=softfp@fno-omit-frame-pointer@mapcs-frame
9443 +
9444 +MULTILIB_OPTIONS = mthumb march=armv4t/march=armv6/march=armv7-a mfpu=neon mfloat-abi=softfp
9445 +MULTILIB_DIRNAMES = thumb v4t v6 v7a neon softfp
9446 +MULTILIB_MATCHES =
9447 +
9448 +MULTILIB_EXTRA_OPTS = fno-omit-frame-pointer mapcs-frame
9449 +
9450 +MULTILIB_EXCEPTIONS  = mthumb
9451 +MULTILIB_EXCEPTIONS += mfpu=neon*
9452 +MULTILIB_EXCEPTIONS += mfloat-abi=softfp
9453 +MULTILIB_EXCEPTIONS += *march=armv4t*/*mfpu=neon*
9454 +MULTILIB_EXCEPTIONS += *march=armv4t*/*mfloat-abi=softfp*
9455 +MULTILIB_EXCEPTIONS += march=armv6/*mfpu=neon*
9456 +MULTILIB_EXCEPTIONS += mthumb/mfpu=neon
9457 +MULTILIB_EXCEPTIONS += mthumb/mfloat-abi=softfp
9458 +MULTILIB_EXCEPTIONS += mthumb/mfpu=neon*
9459 +MULTILIB_EXCEPTIONS += mthumb/march=armv6/mfpu=neon*
9460 +
9461 +MULTILIB_OSDIRNAMES  = march.armv4t=!armv4t
9462 +MULTILIB_OSDIRNAMES += march.armv6=!armv6
9463 +MULTILIB_OSDIRNAMES += march.armv6/mfloat-abi.softfp=!armv6f
9464 +MULTILIB_OSDIRNAMES += march.armv7-a=!armv7a
9465 +MULTILIB_OSDIRNAMES += march.armv7-a/mfpu.neon/mfloat-abi.softfp=!armv7af
9466 +MULTILIB_OSDIRNAMES += mthumb/march.armv7-a=!thumb2
9467 +MULTILIB_OSDIRNAMES += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=!thumb2f
9468 +
9469 +MULTILIB_ALIASES  = march?armv4t=mthumb/march?armv4t
9470 +MULTILIB_ALIASES += march?armv6=mthumb/march?armv6
9471 +MULTILIB_ALIASES += march?armv6/mfloat-abi?softfp=mthumb/march?armv6/mfloat-abi?softfp
9472 +MULTILIB_ALIASES += march?armv7-a/mfpu?neon/mfloat-abi?softfp=march?armv7-a/mfpu?neon
9473 +MULTILIB_ALIASES += march?armv7-a/mfpu?neon/mfloat-abi?softfp=march?armv7-a/mfloat-abi?softfp
9474 +MULTILIB_ALIASES += mthumb/march?armv7-a/mfpu?neon/mfloat-abi?softfp=mthumb/march?armv7-a/mfpu?neon
9475 +MULTILIB_ALIASES += mthumb/march?armv7-a/mfpu?neon/mfloat-abi?softfp=mthumb/march?armv7-a/mfloat-abi?softfp
9476 diff -Nur a/gcc/config/arm/t-bpabi b/gcc/config/arm/t-bpabi
9477 --- a/gcc/config/arm/t-bpabi    2005-11-04 15:51:20.000000000 +0100
9478 +++ b/gcc/config/arm/t-bpabi    2010-01-25 09:50:28.995687913 +0100
9479 @@ -1,10 +1,13 @@
9480  # Add the bpabi.S functions.
9481 -LIB1ASMFUNCS += _aeabi_lcmp _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod
9482 +LIB1ASMFUNCS += _aeabi_lcmp _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod \
9483 +               _aeabi_idiv0 _aeabi_ldiv0
9484  
9485  # Add the BPABI C functions.
9486  LIB2FUNCS_EXTRA = $(srcdir)/config/arm/bpabi.c \
9487                   $(srcdir)/config/arm/unaligned-funcs.c
9488  
9489 +LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/arm/fp16.c
9490 +
9491  UNWIND_H = $(srcdir)/config/arm/unwind-arm.h
9492  LIB2ADDEH = $(srcdir)/config/arm/unwind-arm.c \
9493    $(srcdir)/config/arm/libunwind.S \
9494 diff -Nur a/gcc/config/arm/t-cs-eabi b/gcc/config/arm/t-cs-eabi
9495 --- a/gcc/config/arm/t-cs-eabi  1970-01-01 01:00:00.000000000 +0100
9496 +++ b/gcc/config/arm/t-cs-eabi  2010-01-25 09:50:28.995687913 +0100
9497 @@ -0,0 +1,198 @@
9498 +# Multilibs for SourceryG++ arm-none-eabi
9499 +
9500 +MULTILIB_OPTIONS     = mthumb
9501 +MULTILIB_DIRNAMES    = t
9502 +MULTILIB_EXCEPTIONS  = 
9503 +MULTILIB_MATCHES     =
9504 +MULTILIB_ALIASES     =
9505 +
9506 +MULTILIB_OPTIONS      += march=armv7/march=armv7-a/march=armv5te/march=armv6-m
9507 +MULTILIB_DIRNAMES     += v7 v7a v5te v6m
9508 +MULTILIB_MATCHES      += march?armv7-a=march?armv7a
9509 +MULTILIB_MATCHES      += march?armv7=march?armv7r
9510 +MULTILIB_MATCHES      += march?armv7=march?armv7m
9511 +MULTILIB_MATCHES      += march?armv7=march?armv7-r
9512 +MULTILIB_MATCHES      += march?armv7=march?armv7-m
9513 +MULTILIB_MATCHES      += march?armv7=march?armv7e-m
9514 +MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a9
9515 +MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a8
9516 +MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a5
9517 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
9518 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4f
9519 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
9520 +MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m1
9521 +MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m0
9522 +MULTILIB_MATCHES      += march?armv5te=march?armv6
9523 +MULTILIB_MATCHES      += march?armv5te=march?armv6j
9524 +MULTILIB_MATCHES      += march?armv5te=march?armv6k
9525 +MULTILIB_MATCHES      += march?armv5te=march?armv6z
9526 +MULTILIB_MATCHES      += march?armv5te=march?armv6zk
9527 +MULTILIB_MATCHES      += march?armv5te=march?armv6t2
9528 +MULTILIB_MATCHES      += march?armv5te=march?iwmmxt
9529 +MULTILIB_MATCHES      += march?armv5te=march?iwmmxt2
9530 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm9e
9531 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm946e-s
9532 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm966e-s
9533 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm968e-s
9534 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm10e
9535 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm1020e
9536 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm1022e
9537 +MULTILIB_MATCHES      += march?armv5te=mcpu?xscale
9538 +MULTILIB_MATCHES      += march?armv5te=mcpu?iwmmxt
9539 +MULTILIB_MATCHES      += march?armv5te=mcpu?iwmmxt2
9540 +MULTILIB_MATCHES      += march?armv5te=mcpu?marvell-f
9541 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm926ej-s
9542 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm1026ej-s
9543 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm1136j-s
9544 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm1136jf-s
9545 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm1176jz-s
9546 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm1176jzf-s
9547 +MULTILIB_MATCHES      += march?armv5te=mcpu?mpcorenovfp
9548 +MULTILIB_MATCHES      += march?armv5te=mcpu?mpcore
9549 +MULTILIB_MATCHES      += march?armv5te=mcpu?arm1156t2-s
9550 +
9551 +MULTILIB_OPTIONS      += mfloat-abi=softfp/mfloat-abi=hard
9552 +MULTILIB_DIRNAMES     += softfp hard
9553 +MULTILIB_MATCHES      += mfloat-abi?hard=mhard-float
9554 +
9555 +MULTILIB_OPTIONS      += mfpu=neon
9556 +MULTILIB_DIRNAMES     += neon
9557 +MULTILIB_EXCEPTIONS   += mfpu=neon
9558 +MULTILIB_MATCHES      += mfpu?neon=mfpu?neon-fp16
9559 +MULTILIB_MATCHES      += mfpu?neon=mfpu?neon-vfpv4
9560 +
9561 +MULTILIB_ALIASES      += mthumb=mthumb/mfpu?neon
9562 +MULTILIB_ALIASES      += mthumb=mthumb/march?armv5te/mfpu?neon
9563 +MULTILIB_ALIASES      += mbig-endian=mthumb/mfpu?neon/mbig-endian
9564 +#MULTILIB_ALIASES      += mfloat-abi?softfp=mthumb/mfloat-abi?softfp/mfpu?neon
9565 +#MULTILIB_ALIASES      += mfloat-abi?softfp=mfloat-abi?softfp/mfpu?neon
9566 +#MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mfloat-abi?softfp/mfpu?neon/mbig-endian
9567 +#MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mthumb/mfloat-abi?softfp/mfpu?neon/mbig-endian
9568 +MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a/mfpu?neon
9569 +MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7-a/mfpu?neon/mbig-endian
9570 +MULTILIB_ALIASES      += march?armv7-a/mfloat-abi?softfp/mfpu?neon=mthumb/march?armv7-a/mfloat-abi?softfp/mfpu?neon
9571 +MULTILIB_ALIASES      += march?armv7-a/mfloat-abi?hard/mfpu?neon=mthumb/march?armv7-a/mfloat-abi?hard/mfpu?neon
9572 +
9573 +MULTILIB_OPTIONS      += mbig-endian
9574 +MULTILIB_DIRNAMES     += be
9575 +MULTILIB_ALIASES      += mbig-endian=mfpu?neon/mbig-endian
9576 +
9577 +# ARMv6-M  does not have ARM mode.
9578 +MULTILIB_EXCEPTIONS   += march=armv6-m
9579 +
9580 +# Some ARMv7 variants have ARM mode.  Use the ARM libraries.
9581 +MULTILIB_EXCEPTIONS   += march=armv7 march=armv7/*
9582 +MULTILIB_ALIASES      += mbig-endian=march?armv7/mbig-endian
9583 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp=march?armv7/mfloat-abi?softfp
9584 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp=march?armv7/mfloat-abi?softfp/mfpu?neon
9585 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv7/mfloat-abi?softfp/mbig-endian
9586 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv7/mfloat-abi?softfp/mfpu?neon/mbig-endian
9587 +MULTILIB_ALIASES      += mbig-endian=march?armv7/mfpu?neon/mbig-endian
9588 +MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7/mfloat-abi?softfp/mfpu?neon
9589 +MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7/mfpu?neon
9590 +MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7/mfpu?neon/mbig-endian
9591 +MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7/mfloat-abi?softfp/mfpu?neon/mbig-endian
9592 +
9593 +# ARMv7-A is specially useful used with VFPv3 (enabled by NEON). Rest of the cases behaves as ARMv7.
9594 +MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a
9595 +MULTILIB_ALIASES      += mbig-endian=march?armv7-a/mbig-endian
9596 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mbig-endian
9597 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian
9598 +MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a/mfloat-abi?softfp
9599 +MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7-a/mbig-endian
9600 +MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mbig-endian
9601 +MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7/mfloat-abi?softfp             
9602 +MULTILIB_ALIASES      += march?armv5te=march?armv7-a
9603 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp=march?armv7-a/mfloat-abi?softfp
9604 +MULTILIB_ALIASES      += march?armv5te=march?armv7-a/mfpu?neon
9605 +MULTILIB_ALIASES      += mbig-endian=march?armv7-a/mfpu?neon/mbig-endian
9606 +MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian
9607 +
9608 +# ARMv5T thumb uses the ARMv5T ARM libraries (with or without VFP).
9609 +MULTILIB_ALIASES      += mthumb=mthumb/march?armv5te
9610 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp=mthumb/march?armv5te/mfloat-abi?softfp
9611 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp=march?armv5te/mfloat-abi?softfp/mfpu?neon
9612 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp=mthumb/march?armv5te/mfloat-abi?softfp/mfpu?neon
9613 +MULTILIB_ALIASES      += march?armv5te=march?armv5te/mfpu?neon
9614 +MULTILIB_ALIASES      += mbig-endian=march?armv5te/mfpu?neon/mbig-endian
9615 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv5te/mfloat-abi?softfp/mfpu?neon/mbig-endian
9616 +MULTILIB_ALIASES      += mbig-endian=mthumb/march?armv5te/mfpu?neon/mbig-endian
9617 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=mthumb/march?armv5te/mfloat-abi?softfp/mfpu?neon/mbig-endian
9618 +
9619 +# ARMv6-M and VFP are incompatible.
9620 +# FIXME:  The compiler should probably error.
9621 +MULTILIB_EXCEPTIONS   += *march=armv6-m/mfloat-abi=softfp
9622 +MULTILIB_ALIASES      += mthumb/march?armv6-m=mthumb/march?armv6-m/mfpu?neon
9623 +MULTILIB_EXCEPTIONS   += march=armv6-m*mfpu=neon
9624 +MULTILIB_EXCEPTIONS   += mthumb/march=armv6-m/mfloat-abi=softfp/mfpu=neon
9625 +
9626 +# ARMv4t VFP isn't really supported, so use the soft-float libraries.
9627 +MULTILIB_EXCEPTIONS   += mfloat-abi?softfp
9628 +MULTILIB_EXCEPTIONS   += mfloat-abi?softfp/mfpu?neon
9629 +MULTILIB_ALIASES      += mthumb=mthumb/mfloat-abi?softfp
9630 +MULTILIB_ALIASES      += mthumb=mthumb/mfloat-abi?softfp/mfpu?neon
9631 +
9632 +MULTILIB_ALIASES      += mbig-endian=mfloat-abi?softfp/mbig-endian
9633 +MULTILIB_ALIASES      += mbig-endian=mfloat-abi?softfp/mfpu?neon/mbig-endian
9634 +MULTILIB_ALIASES      += mbig-endian=mthumb/mfloat-abi?softfp/mbig-endian
9635 +MULTILIB_ALIASES      += mbig-endian=mthumb/mfloat-abi?softfp/mfpu?neon/mbig-endian
9636 +
9637 +# We don't have a big-endian ARMv6-M compatible multilibs.
9638 +MULTILIB_EXCEPTIONS   += *march=armv6-m*mbig-endian
9639 +
9640 +# Use the generic libraries for big-endian ARMv5T
9641 +MULTILIB_ALIASES      += mbig-endian=march?armv5te/mbig-endian
9642 +MULTILIB_ALIASES      += mbig-endian=mfloat-abi?softfp/mbig-endian
9643 +MULTILIB_ALIASES      += mbig-endian=mthumb/march?armv5te/mbig-endian
9644 +MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=mthumb/march?armv5te/mfloat-abi?softfp/mbig-endian
9645 +
9646 +# Use ARM libraries for big-endian Thumb.
9647 +MULTILIB_ALIASES      += mbig-endian=mthumb/mbig-endian
9648 +
9649 +# Don't bother with big-endian Thumb-2 VFP.  Use the soft-float libraries
9650 +# for now.
9651 +MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7/mfloat-abi?softfp/mbig-endian
9652 +
9653 +# The only -mfloat-abi=hard libraries provided are for little-endian
9654 +# v7-A NEON.
9655 +MULTILIB_EXCEPTIONS   += mfloat-abi=hard*
9656 +MULTILIB_EXCEPTIONS   += *march=armv5te*mfloat-abi=hard*
9657 +MULTILIB_EXCEPTIONS   += *march=armv7/*mfloat-abi=hard*
9658 +MULTILIB_EXCEPTIONS   += *march=armv6-m*mfloat-abi=hard*
9659 +MULTILIB_EXCEPTIONS   += mthumb/mfloat-abi=hard*
9660 +MULTILIB_EXCEPTIONS   += *mfloat-abi=hard*mbig-endian
9661 +MULTILIB_EXCEPTIONS   += *mfloat-abi=hard
9662 +
9663 +# FIXME: We need a sane way of doing this.
9664 +# This isn't really a multilib, it's a hack to add an extra option
9665 +# to the v7-m multilib.
9666 +MULTILIB_OPTIONS      += mfix-cortex-m3-ldrd
9667 +MULTILIB_DIRNAMES     += broken_ldrd
9668 +
9669 +MULTILIB_EXCEPTIONS   += mfix-cortex-m3-ldrd
9670 +MULTILIB_EXCEPTIONS   += mthumb/mfix-cortex-m3-ldrd
9671 +MULTILIB_EXCEPTIONS   += *march=armv6-m*mfix-cortex-m3-ldrd
9672 +MULTILIB_EXCEPTIONS   += *march=armv7-a*mfix-cortex-m3-ldrd
9673 +MULTILIB_EXCEPTIONS   += *mcpu=*mfix-cortex-m3-ldrd
9674 +MULTILIB_EXCEPTIONS   += *mbig-endian*mfix-cortex-m3-ldrd
9675 +MULTILIB_EXCEPTIONS   += *mfloat-abi=softfp*mfix-cortex-m3-ldrd
9676 +MULTILIB_EXCEPTIONS   += *march=armv5te*mfix-cortex-m3-ldrd
9677 +MULTILIB_EXCEPTIONS   += *mfpu=neon*mfix-cortex-m3-ldrd
9678 +
9679 +MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7
9680 +MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a/mfix-cortex-m3-ldrd
9681 +MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7/mfpu?neon/mfix-cortex-m3-ldrd
9682 +MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a/mfpu?neon/mfix-cortex-m3-ldrd
9683 +
9684 +# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
9685 +# omitted from MULTILIB_OSDIRNAMES
9686 +MULTILIB_OSDIRNAMES    = mthumb=!thumb
9687 +MULTILIB_OSDIRNAMES   += mbig-endian=!be
9688 +MULTILIB_OSDIRNAMES   += march.armv5te=!armv5te
9689 +MULTILIB_OSDIRNAMES   += march.armv5te/mfloat-abi.softfp=!vfp
9690 +MULTILIB_OSDIRNAMES   += march.armv5te/mfloat-abi.softfp/mbig-endian=!vfp-be
9691 +MULTILIB_OSDIRNAMES   += mthumb/march.armv7/mfix-cortex-m3-ldrd=!thumb2
9692 +MULTILIB_OSDIRNAMES   += march.armv7-a/mfloat-abi.softfp/mfpu.neon=!armv7-a-neon
9693 +MULTILIB_OSDIRNAMES   += march.armv7-a/mfloat-abi.hard/mfpu.neon=!armv7-a-hard
9694 +MULTILIB_OSDIRNAMES   += mthumb/march.armv7/mbig-endian=!thumb2-be
9695 +MULTILIB_OSDIRNAMES   += mthumb/march.armv6-m=!armv6-m
9696 diff -Nur a/gcc/config/arm/t-cs-eabi-lite b/gcc/config/arm/t-cs-eabi-lite
9697 --- a/gcc/config/arm/t-cs-eabi-lite     1970-01-01 01:00:00.000000000 +0100
9698 +++ b/gcc/config/arm/t-cs-eabi-lite     2010-01-25 09:50:28.995687913 +0100
9699 @@ -0,0 +1,47 @@
9700 +# We build 4 multilibs:
9701 +#  ./            (default)
9702 +#  thumb/        -mthumb
9703 +#  thumb2/       -mthumb -march=armv7
9704 +#  armv6-m/      -mthumb -march=armv6-m
9705 +
9706 +MULTILIB_OPTIONS     = mthumb
9707 +MULTILIB_DIRNAMES    = thumb
9708 +MULTILIB_EXCEPTIONS  =
9709 +MULTILIB_MATCHES     =
9710 +MULTILIB_ALIASES     =
9711 +
9712 +MULTILIB_OPTIONS      += march=armv7/march=armv6-m
9713 +MULTILIB_DIRNAMES     += v7 v6-m
9714 +MULTILIB_EXCEPTIONS   += march=armv7*
9715 +MULTILIB_MATCHES      += march?armv7=march?armv7-a
9716 +MULTILIB_MATCHES      += march?armv7=march?armv7-r
9717 +MULTILIB_MATCHES      += march?armv7=march?armv7-m
9718 +MULTILIB_MATCHES      += march?armv7=march?armv7e-m
9719 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a9
9720 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
9721 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a5
9722 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
9723 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4f
9724 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
9725 +
9726 +MULTILIB_EXCEPTIONS   += march=armv6-m
9727 +MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m1
9728 +MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m0
9729 +
9730 +# FIXME: We need a sane way of doing this.
9731 +# This isn't really a multilib, it's a hack to add an extra option
9732 +# to the v7-m multilib.
9733 +MULTILIB_OPTIONS      += mfix-cortex-m3-ldrd
9734 +MULTILIB_DIRNAMES     += broken_ldrd
9735 +
9736 +MULTILIB_EXCEPTIONS   += mfix-cortex-m3-ldrd
9737 +MULTILIB_EXCEPTIONS   += mthumb/mfix-cortex-m3-ldrd
9738 +MULTILIB_EXCEPTIONS   += *march=armv6-m*mfix-cortex-m3-ldrd
9739 +
9740 +MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7
9741 +
9742 +# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
9743 +# omitted from MULTILIB_OSDIRNAMES
9744 +MULTILIB_OSDIRNAMES    = mthumb=!thumb
9745 +MULTILIB_OSDIRNAMES   += mthumb/march.armv7/mfix-cortex-m3-ldrd=!thumb2
9746 +MULTILIB_OSDIRNAMES   += mthumb/march.armv6-m=!armv6-m
9747 diff -Nur a/gcc/config/arm/t-cs-linux b/gcc/config/arm/t-cs-linux
9748 --- a/gcc/config/arm/t-cs-linux 1970-01-01 01:00:00.000000000 +0100
9749 +++ b/gcc/config/arm/t-cs-linux 2010-01-25 09:50:28.995687913 +0100
9750 @@ -0,0 +1,112 @@
9751 +# Multilibs for SourceryG++ arm-none-linux-gnueabi
9752 +
9753 +MULTILIB_OPTIONS     = mthumb
9754 +MULTILIB_DIRNAMES    = t
9755 +MULTILIB_EXCEPTIONS  = 
9756 +MULTILIB_MATCHES     =
9757 +MULTILIB_ALIASES     =
9758 +
9759 +MULTILIB_OPTIONS      += march=armv4t/march=armv7-a
9760 +MULTILIB_DIRNAMES     += v4t v7a
9761 +
9762 +MULTILIB_MATCHES      += march?armv7-a=march?armv7a
9763 +MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a9
9764 +MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a8
9765 +MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a5
9766 +MULTILIB_MATCHES      += march?armv4t=march?ep9312
9767 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm7tdmi
9768 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm7tdmi-s
9769 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm710t
9770 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm720t
9771 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm740t
9772 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm9
9773 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm9tdmi
9774 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm920
9775 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm920t
9776 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm922t
9777 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm940t
9778 +MULTILIB_MATCHES      += march?armv4t=mcpu?ep9312
9779 +MULTILIB_MATCHES      += march?armv4t=march?armv5
9780 +MULTILIB_MATCHES      += march?armv4t=march?armv5t
9781 +MULTILIB_MATCHES      += march?armv4t=march?arm10tdmi
9782 +MULTILIB_MATCHES      += march?armv4t=march?arm1020t
9783 +
9784 +MULTILIB_OPTIONS      += mfloat-abi=softfp/mfloat-abi=hard
9785 +MULTILIB_DIRNAMES     += softfp hard
9786 +MULTILIB_MATCHES      += mfloat-abi?hard=mhard-float
9787 +
9788 +MULTILIB_OPTIONS      += mfpu=neon
9789 +MULTILIB_DIRNAMES     += neon
9790 +MULTILIB_EXCEPTIONS   += mfpu=neon
9791 +MULTILIB_MATCHES      += mfpu?neon=mfpu?neon-fp16
9792 +MULTILIB_MATCHES      += mfpu?neon=mfpu?neon-vfpv4
9793 +MULTILIB_ALIASES      += mfloat-abi?softfp=mfloat-abi?softfp/mfpu?neon
9794 +MULTILIB_ALIASES      += mfloat-abi?softfp=mthumb/mfloat-abi?softfp/mfpu?neon
9795 +MULTILIB_ALIASES      += march?armv7-a/mfloat-abi?hard/mfpu?neon=mthumb/march?armv7-a/mfloat-abi?hard/mfpu?neon
9796 +
9797 +MULTILIB_OPTIONS      += mbig-endian
9798 +MULTILIB_DIRNAMES     += be
9799 +MULTILIB_ALIASES      += mbig-endian=mfpu?neon/mbig-endian
9800 +MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mfloat-abi?softfp/mfpu?neon/mbig-endian
9801 +MULTILIB_ALIASES      += mbig-endian=mthumb/mfpu?neon/mbig-endian
9802 +MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mthumb/mfloat-abi?softfp/mfpu?neon/mbig-endian
9803 +
9804 +# Do not build Thumb libraries.
9805 +MULTILIB_EXCEPTIONS   += mthumb
9806 +MULTILIB_EXCEPTIONS   += mthumb/mfpu=neon
9807 +
9808 +# Use ARM libraries for ARMv4t Thumb and VFP.
9809 +MULTILIB_ALIASES      += march?armv4t=mthumb/march?armv4t
9810 +MULTILIB_ALIASES      += march?armv4t=march?armv4t/mfloat-abi?softfp
9811 +MULTILIB_ALIASES      += march?armv4t=mthumb/march?armv4t/mfloat-abi?softfp
9812 +MULTILIB_ALIASES      += march?armv4t=march?armv4t/mfpu?neon
9813 +MULTILIB_ALIASES      += march?armv4t=march?armv4t/mfloat-abi?softfp/mfpu?neon
9814 +MULTILIB_ALIASES      += march?armv4t=mthumb/march?armv4t/mfpu?neon
9815 +MULTILIB_ALIASES      += march?armv4t=mthumb/march?armv4t/mfloat-abi?softfp/mfpu?neon
9816 +
9817 +# We do not support ARMv4t big-endian.
9818 +MULTILIB_EXCEPTIONS   += *march=armv4t*mbig-endian
9819 +
9820 +# Behave ARMv7-A as ARMv7 for some cases.
9821 +MULTILIB_EXCEPTIONS   += march=armv7-a
9822 +MULTILIB_EXCEPTIONS   += march=armv7-a/mfpu=neon
9823 +MULTILIB_ALIASES      += mfloat-abi?softfp=march?armv7-a/mfloat-abi?softfp
9824 +MULTILIB_ALIASES      += mbig-endian=march?armv7-a/mbig-endian
9825 +MULTILIB_ALIASES      += mbig-endian=march?armv7-a/mfpu?neon/mbig-endian
9826 +MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mbig-endian
9827 +MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian
9828 +MULTILIB_ALIASES      += mthumb/march?armv7-a=mthumb/march?armv7-a/mfpu?neon
9829 +MULTILIB_ALIASES      += mthumb/march?armv7-a/mbig-endian=mthumb/march?armv7-a/mfpu?neon/mbig-endian
9830 +MULTILIB_ALIASES      += mthumb/march?armv7-a/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian
9831 +MULTILIB_ALIASES      += mthumb/march?armv7-a=mthumb/march?armv7-a/mfloat-abi?softfp
9832 +
9833 +# Thumb-1 VFP isn't really a meaningful combination.  Use the ARM VFP.
9834 +MULTILIB_ALIASES      += mfloat-abi?softfp=mthumb/mfloat-abi?softfp
9835 +MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mthumb/mfloat-abi?softfp/mbig-endian
9836 +
9837 +# Use ARM libraries for big-endian Thumb.
9838 +MULTILIB_ALIASES      += mbig-endian=mthumb/mbig-endian
9839 +
9840 +# Don't bother with big-endian Thumb-2 VFP.  Use the soft-float libraries
9841 +# for now.
9842 +MULTILIB_ALIASES      += mthumb/march?armv7-a/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mbig-endian
9843 +
9844 +# The only -mfloat-abi=hard libraries provided are for little-endian
9845 +# v7-A NEON.
9846 +MULTILIB_EXCEPTIONS   += mfloat-abi=hard*
9847 +MULTILIB_EXCEPTIONS   += *march=armv4t*mfloat-abi=hard*
9848 +MULTILIB_EXCEPTIONS   += mthumb/mfloat-abi=hard*
9849 +MULTILIB_EXCEPTIONS   += *mfloat-abi=hard*mbig-endian
9850 +MULTILIB_EXCEPTIONS   += *mfloat-abi=hard
9851 +
9852 +# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
9853 +# omitted from MULTILIB_OSDIRNAMES
9854 +MULTILIB_OSDIRNAMES    = march.armv4t=!armv4t
9855 +MULTILIB_OSDIRNAMES   += mbig-endian=!be
9856 +MULTILIB_OSDIRNAMES   += mfloat-abi.softfp=!vfp
9857 +MULTILIB_OSDIRNAMES   += mfloat-abi.softfp/mbig-endian=!vfp-be
9858 +MULTILIB_OSDIRNAMES   += mthumb/march.armv7-a=!thumb2
9859 +MULTILIB_OSDIRNAMES   += march.armv7-a/mfloat-abi.softfp/mfpu.neon=!armv7-a-neon
9860 +MULTILIB_OSDIRNAMES   += mthumb/march.armv7-a/mfloat-abi.softfp/mfpu.neon=!thumb2-neon
9861 +MULTILIB_OSDIRNAMES   += march.armv7-a/mfloat-abi.hard/mfpu.neon=!armv7-a-hard
9862 +MULTILIB_OSDIRNAMES   += mthumb/march.armv7-a/mbig-endian=!thumb2-be
9863 diff -Nur a/gcc/config/arm/t-cs-linux-lite b/gcc/config/arm/t-cs-linux-lite
9864 --- a/gcc/config/arm/t-cs-linux-lite    1970-01-01 01:00:00.000000000 +0100
9865 +++ b/gcc/config/arm/t-cs-linux-lite    2010-01-25 09:50:28.995687913 +0100
9866 @@ -0,0 +1,48 @@
9867 +# We build 3 multilibs:
9868 +#  ./            (default)
9869 +#  armv4t/       -march=armv4t [-mthumb]
9870 +#  thumb2/       -mthumb -march=armv7
9871 +MULTILIB_OPTIONS     = mthumb
9872 +MULTILIB_DIRNAMES    = thumb
9873 +MULTILIB_OPTIONS    += march=armv4t/march=armv7
9874 +MULTILIB_DIRNAMES   += v4t v7
9875 +MULTILIB_EXCEPTIONS += march=armv7
9876 +MULTILIB_EXCEPTIONS += mthumb
9877 +
9878 +MULTILIB_ALIASES     = march?armv4t=mthumb/march?armv4t
9879 +
9880 +# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
9881 +# omitted from MULTILIB_OSDIRNAMES
9882 +MULTILIB_OSDIRNAMES    = march.armv4t=!armv4t
9883 +MULTILIB_OSDIRNAMES   += mthumb/march.armv7=!thumb2
9884 +
9885 +MULTILIB_MATCHES      += march?armv7=march?armv7a
9886 +MULTILIB_MATCHES      += march?armv7=march?armv7r
9887 +MULTILIB_MATCHES      += march?armv7=march?armv7m
9888 +MULTILIB_MATCHES      += march?armv7=march?armv7-a
9889 +MULTILIB_MATCHES      += march?armv7=march?armv7-r
9890 +MULTILIB_MATCHES      += march?armv7=march?armv7-m
9891 +MULTILIB_MATCHES      += march?armv7=march?armv7e-m
9892 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a9
9893 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
9894 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a5
9895 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
9896 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4f
9897 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
9898 +MULTILIB_MATCHES      += march?armv4t=march?ep9312
9899 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm7tdmi
9900 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm7tdmi-s
9901 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm710t
9902 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm720t
9903 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm740t
9904 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm9
9905 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm9tdmi
9906 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm920
9907 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm920t
9908 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm922t
9909 +MULTILIB_MATCHES      += march?armv4t=mcpu?arm940t
9910 +MULTILIB_MATCHES      += march?armv4t=mcpu?ep9312
9911 +MULTILIB_MATCHES      += march?armv4t=march?armv5
9912 +MULTILIB_MATCHES      += march?armv4t=march?armv5t
9913 +MULTILIB_MATCHES      += march?armv4t=march?arm10tdmi
9914 +MULTILIB_MATCHES      += march?armv4t=march?arm1020t
9915 diff -Nur a/gcc/config/arm/t-cs-uclinux-eabi b/gcc/config/arm/t-cs-uclinux-eabi
9916 --- a/gcc/config/arm/t-cs-uclinux-eabi  1970-01-01 01:00:00.000000000 +0100
9917 +++ b/gcc/config/arm/t-cs-uclinux-eabi  2010-01-25 09:50:28.995687913 +0100
9918 @@ -0,0 +1,55 @@
9919 +# EABI uClinux multilib selection.  Other setting are inherited from t-arm-elf
9920 +
9921 +# We build 3 multilibs:
9922 +#  .       (default)
9923 +#  thumb2/  -mthumb -march=armv7 -mfix-cortex-m3-ldrd
9924 +#  armv6-m/ -mthumb -march=armv6-m
9925 +
9926 +MULTILIB_OPTIONS     = mthumb
9927 +MULTILIB_DIRNAMES    = thumb
9928 +MULTILIB_EXCEPTIONS  = 
9929 +MULTILIB_MATCHES     =
9930 +
9931 +MULTILIB_OPTIONS      += march=armv7/march=armv6-m
9932 +MULTILIB_DIRNAMES     += armv7 armv6-m
9933 +
9934 +MULTILIB_EXCEPTIONS   += mthumb
9935 +
9936 +MULTILIB_EXCEPTIONS   += march=armv7
9937 +MULTILIB_MATCHES      += march?armv7=march?armv7a
9938 +MULTILIB_MATCHES      += march?armv7=march?armv7r
9939 +MULTILIB_MATCHES      += march?armv7=march?armv7m
9940 +MULTILIB_MATCHES      += march?armv7=march?armv7-a
9941 +MULTILIB_MATCHES      += march?armv7=march?armv7-r
9942 +MULTILIB_MATCHES      += march?armv7=march?armv7-m
9943 +MULTILIB_MATCHES      += march?armv7=march?armv7e-m
9944 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a9
9945 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
9946 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a5
9947 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
9948 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4f
9949 +MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
9950 +
9951 +MULTILIB_EXCEPTIONS   += march=armv6-m
9952 +MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m1
9953 +MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m0
9954 +
9955 +MULTILIB_ALIASES       =
9956 +
9957 +# FIXME: We need a sane way of doing this.
9958 +# This isn't really a multilib, it's a hack to add an extra option
9959 +# to the v7-m multilib.
9960 +MULTILIB_OPTIONS      += mfix-cortex-m3-ldrd
9961 +MULTILIB_DIRNAMES     += broken_ldrd
9962 +
9963 +MULTILIB_EXCEPTIONS   += mfix-cortex-m3-ldrd
9964 +MULTILIB_EXCEPTIONS   += mthumb/mfix-cortex-m3-ldrd
9965 +MULTILIB_EXCEPTIONS   += march=armv7/mfix-cortex-m3-ldrd
9966 +MULTILIB_EXCEPTIONS   += *march=armv6-m*mfix-cortex-m3-ldrd
9967 +
9968 +MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7
9969 +
9970 +
9971 +MULTILIB_OSDIRNAMES    = mthumb/march.armv7/mfix-cortex-m3-ldrd=!thumb2
9972 +MULTILIB_OSDIRNAMES   += mthumb/march.armv6-m=!armv6-m
9973 +
9974 diff -Nur a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md
9975 --- a/gcc/config/arm/thumb2.md  2008-11-21 00:00:00.000000000 +0100
9976 +++ b/gcc/config/arm/thumb2.md  2010-01-25 09:50:28.995687913 +0100
9977 @@ -24,6 +24,8 @@
9978  ;; changes made in armv5t as "thumb2".  These are considered part
9979  ;; the 16-bit Thumb-1 instruction set.
9980  
9981 +(include "hwdiv.md")
9982 +
9983  (define_insn "*thumb2_incscc"
9984    [(set (match_operand:SI 0 "s_register_operand" "=r,r")
9985          (plus:SI (match_operator:SI 2 "arm_comparison_operator"
9986 @@ -172,34 +174,6 @@
9987     (set_attr "length" "8")]
9988  )
9989  
9990 -(define_insn "*thumb2_abssi2"
9991 -  [(set (match_operand:SI         0 "s_register_operand" "=r,&r")
9992 -       (abs:SI (match_operand:SI 1 "s_register_operand" "0,r")))
9993 -   (clobber (reg:CC CC_REGNUM))]
9994 -  "TARGET_THUMB2"
9995 -  "@
9996 -   cmp\\t%0, #0\;it\tlt\;rsblt\\t%0, %0, #0
9997 -   eor%?\\t%0, %1, %1, asr #31\;sub%?\\t%0, %0, %1, asr #31"
9998 -  [(set_attr "conds" "clob,*")
9999 -   (set_attr "shift" "1")
10000 -   ;; predicable can't be set based on the variant, so left as no
10001 -   (set_attr "length" "10,8")]
10002 -)
10003 -
10004 -(define_insn "*thumb2_neg_abssi2"
10005 -  [(set (match_operand:SI 0 "s_register_operand" "=r,&r")
10006 -       (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" "0,r"))))
10007 -   (clobber (reg:CC CC_REGNUM))]
10008 -  "TARGET_THUMB2"
10009 -  "@
10010 -   cmp\\t%0, #0\;it\\tgt\;rsbgt\\t%0, %0, #0
10011 -   eor%?\\t%0, %1, %1, asr #31\;rsb%?\\t%0, %0, %1, asr #31"
10012 -  [(set_attr "conds" "clob,*")
10013 -   (set_attr "shift" "1")
10014 -   ;; predicable can't be set based on the variant, so left as no
10015 -   (set_attr "length" "10,8")]
10016 -)
10017 -
10018  (define_insn "*thumb2_movdi"
10019    [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m")
10020         (match_operand:DI 1 "di_operand"              "rDa,Db,Dc,mi,r"))]
10021 @@ -223,9 +197,14 @@
10022     (set_attr "neg_pool_range" "*,*,*,0,*")]
10023  )
10024  
10025 +;; We have two alternatives here for memory loads (and similarly for stores)
10026 +;; to reflect the fact that the permissible constant pool ranges differ
10027 +;; between ldr instructions taking low regs and ldr instructions taking high
10028 +;; regs.  The high register alternatives are not taken into account when
10029 +;; choosing register preferences in order to reflect their expense.
10030  (define_insn "*thumb2_movsi_insn"
10031 -  [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m")
10032 -       (match_operand:SI 1 "general_operand"      "rk ,I,K,N,mi,rk"))]
10033 +  [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,l,*hk,m,*m")
10034 +        (match_operand:SI 1 "general_operand"      "rk ,I,K,j,mi,*mi,l,*hk"))]
10035    "TARGET_THUMB2 && ! TARGET_IWMMXT
10036     && !(TARGET_HARD_FLOAT && TARGET_VFP)
10037     && (   register_operand (operands[0], SImode)
10038 @@ -236,11 +215,13 @@
10039     mvn%?\\t%0, #%B1
10040     movw%?\\t%0, %1
10041     ldr%?\\t%0, %1
10042 +   ldr%?\\t%0, %1
10043 +   str%?\\t%1, %0
10044     str%?\\t%1, %0"
10045 -  [(set_attr "type" "*,*,*,*,load1,store1")
10046 +  [(set_attr "type" "*,*,*,*,load1,load1,store1,store1")
10047     (set_attr "predicable" "yes")
10048 -   (set_attr "pool_range" "*,*,*,*,4096,*")
10049 -   (set_attr "neg_pool_range" "*,*,*,*,0,*")]
10050 +   (set_attr "pool_range" "*,*,*,*,1020,4096,*,*")
10051 +   (set_attr "neg_pool_range" "*,*,*,*,0,0,*,*")]
10052  )
10053  
10054  ;; ??? We can probably do better with thumb2
10055 @@ -1128,27 +1109,7 @@
10056        return \"add%!\\t%0, %1, %2\";
10057    "
10058    [(set_attr "predicable" "yes")
10059 -   (set_attr "length" "2")]
10060 -)
10061 -
10062 -(define_insn "divsi3"
10063 -  [(set (match_operand:SI        0 "s_register_operand" "=r")
10064 -       (div:SI (match_operand:SI 1 "s_register_operand"  "r")
10065 -               (match_operand:SI 2 "s_register_operand"  "r")))]
10066 -  "TARGET_THUMB2 && arm_arch_hwdiv"
10067 -  "sdiv%?\t%0, %1, %2"
10068 -  [(set_attr "predicable" "yes")
10069 -   (set_attr "insn" "sdiv")]
10070 -)
10071 -
10072 -(define_insn "udivsi3"
10073 -  [(set (match_operand:SI         0 "s_register_operand" "=r")
10074 -       (udiv:SI (match_operand:SI 1 "s_register_operand"  "r")
10075 -                (match_operand:SI 2 "s_register_operand"  "r")))]
10076 -  "TARGET_THUMB2 && arm_arch_hwdiv"
10077 -  "udiv%?\t%0, %1, %2"
10078 -  [(set_attr "predicable" "yes")
10079 -   (set_attr "insn" "udiv")]
10080 +   (set_attr "length" "4")]
10081  )
10082  
10083  (define_insn "*thumb2_subsi_short"
10084 @@ -1162,6 +1123,71 @@
10085     (set_attr "length" "2")]
10086  )
10087  
10088 +;; 16-bit encodings of "muls" and "mul<c>".  We only use these when
10089 +;; optimizing for size since "muls" is slow on all known
10090 +;; implementations and since "mul<c>" will be generated by
10091 +;; "*arm_mulsi3_v6" anyhow.  The assembler will use a 16-bit encoding
10092 +;; for "mul<c>" whenever possible anyhow.
10093 +(define_peephole2
10094 +  [(set (match_operand:SI 0 "low_register_operand" "")
10095 +        (mult:SI (match_operand:SI 1 "low_register_operand" "")
10096 +                 (match_dup 0)))]
10097 +  "TARGET_THUMB2 && optimize_size && peep2_regno_dead_p (0, CC_REGNUM)"
10098 +  [(parallel
10099 +    [(set (match_dup 0)
10100 +           (mult:SI (match_dup 0) (match_dup 1)))
10101 +     (clobber (reg:CC CC_REGNUM))])]
10102 +  ""
10103 +)
10104 +
10105 +(define_peephole2
10106 +  [(set (match_operand:SI 0 "low_register_operand" "")
10107 +        (mult:SI (match_dup 0)
10108 +                (match_operand:SI 1 "low_register_operand" "")))]
10109 +  "TARGET_THUMB2 && optimize_size && peep2_regno_dead_p (0, CC_REGNUM)"
10110 +  [(parallel
10111 +    [(set (match_dup 0)
10112 +           (mult:SI (match_dup 0) (match_dup 1)))
10113 +     (clobber (reg:CC CC_REGNUM))])]
10114 +  ""
10115 +)
10116 +
10117 +(define_insn "*thumb2_mulsi_short"
10118 +  [(set (match_operand:SI 0 "low_register_operand" "=l")
10119 +        (mult:SI (match_operand:SI 1 "low_register_operand" "%0")
10120 +                 (match_operand:SI 2 "low_register_operand" "l")))
10121 +   (clobber (reg:CC CC_REGNUM))]
10122 +  "TARGET_THUMB2 && optimize_size && reload_completed"
10123 +  "mul%!\\t%0, %2, %0"
10124 +  [(set_attr "predicable" "yes")
10125 +   (set_attr "length" "2")
10126 +   (set_attr "insn" "muls")])
10127 +
10128 +(define_insn "*thumb2_mulsi_short_compare0"
10129 +  [(set (reg:CC_NOOV CC_REGNUM)
10130 +        (compare:CC_NOOV
10131 +         (mult:SI (match_operand:SI 1 "register_operand" "%0")
10132 +                 (match_operand:SI 2 "register_operand" "l"))
10133 +         (const_int 0)))
10134 +   (set (match_operand:SI 0 "register_operand" "=l")
10135 +       (mult:SI (match_dup 1) (match_dup 2)))]
10136 +  "TARGET_THUMB2 && optimize_size"
10137 +  "muls\\t%0, %2, %0"
10138 +  [(set_attr "length" "2")
10139 +   (set_attr "insn" "muls")])
10140 +
10141 +(define_insn "*thumb2_mulsi_short_compare0_scratch"
10142 +  [(set (reg:CC_NOOV CC_REGNUM)
10143 +        (compare:CC_NOOV
10144 +         (mult:SI (match_operand:SI 1 "register_operand" "%0")
10145 +                 (match_operand:SI 2 "register_operand" "l"))
10146 +         (const_int 0)))
10147 +   (clobber (match_scratch:SI 0 "=r"))]
10148 +  "TARGET_THUMB2 && optimize_size"
10149 +  "muls\\t%0, %2, %0"
10150 +  [(set_attr "length" "2")
10151 +   (set_attr "insn" "muls")])
10152 +
10153  (define_insn "*thumb2_cbz"
10154    [(set (pc) (if_then_else
10155               (eq (match_operand:SI 0 "s_register_operand" "l,?r")
10156 @@ -1171,7 +1197,7 @@
10157     (clobber (reg:CC CC_REGNUM))]
10158    "TARGET_THUMB2"
10159    "*
10160 -  if (get_attr_length (insn) == 2 && which_alternative == 0)
10161 +  if (get_attr_length (insn) == 2)
10162      return \"cbz\\t%0, %l1\";
10163    else
10164      return \"cmp\\t%0, #0\;beq\\t%l1\";
10165 @@ -1179,7 +1205,8 @@
10166    [(set (attr "length") 
10167          (if_then_else
10168             (and (ge (minus (match_dup 1) (pc)) (const_int 2))
10169 -                (le (minus (match_dup 1) (pc)) (const_int 128)))
10170 +                (le (minus (match_dup 1) (pc)) (const_int 128))
10171 +                (eq (symbol_ref ("which_alternative")) (const_int 0)))
10172             (const_int 2)
10173             (const_int 8)))]
10174  )
10175 @@ -1193,7 +1220,7 @@
10176     (clobber (reg:CC CC_REGNUM))]
10177    "TARGET_THUMB2"
10178    "*
10179 -  if (get_attr_length (insn) == 2 && which_alternative == 0)
10180 +  if (get_attr_length (insn) == 2)
10181      return \"cbnz\\t%0, %l1\";
10182    else
10183      return \"cmp\\t%0, #0\;bne\\t%l1\";
10184 @@ -1201,7 +1228,8 @@
10185    [(set (attr "length") 
10186          (if_then_else
10187             (and (ge (minus (match_dup 1) (pc)) (const_int 2))
10188 -                (le (minus (match_dup 1) (pc)) (const_int 128)))
10189 +                (le (minus (match_dup 1) (pc)) (const_int 128))
10190 +                (eq (symbol_ref ("which_alternative")) (const_int 0)))
10191             (const_int 2)
10192             (const_int 8)))]
10193  )
10194 diff -Nur a/gcc/config/arm/t-linux-eabi b/gcc/config/arm/t-linux-eabi
10195 --- a/gcc/config/arm/t-linux-eabi       2009-01-24 22:06:08.000000000 +0100
10196 +++ b/gcc/config/arm/t-linux-eabi       2010-01-25 09:50:28.995687913 +0100
10197 @@ -6,8 +6,8 @@
10198  MULTILIB_OPTIONS       =
10199  MULTILIB_DIRNAMES      =
10200  
10201 -# Use a version of div0 which raises SIGFPE.
10202 -LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx
10203 +# Use a version of div0 which raises SIGFPE, and a special __clear_cache.
10204 +LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx _clear_cache
10205  
10206  # Multilib the standard Linux files.  Don't include crti.o or crtn.o,
10207  # which are provided by glibc.
10208 diff -Nur a/gcc/config/arm/t-montavista-linux b/gcc/config/arm/t-montavista-linux
10209 --- a/gcc/config/arm/t-montavista-linux 1970-01-01 01:00:00.000000000 +0100
10210 +++ b/gcc/config/arm/t-montavista-linux 2010-01-25 09:50:28.995687913 +0100
10211 @@ -0,0 +1,33 @@
10212 +# MontaVista GNU/Linux Configuration.
10213 +# Copyright (C) 2009
10214 +# Free Software Foundation, Inc.
10215 +#
10216 +# This file is part of GCC.
10217 +#
10218 +# GCC is free software; you can redistribute it and/or modify
10219 +# it under the terms of the GNU General Public License as published by
10220 +# the Free Software Foundation; either version 3, or (at your option)
10221 +# any later version.
10222 +# 
10223 +# GCC is distributed in the hope that it will be useful,
10224 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
10225 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10226 +# GNU General Public License for more details.
10227 +#
10228 +# You should have received a copy of the GNU General Public License
10229 +# along with GCC; see the file COPYING3.  If not see
10230 +# <http://www.gnu.org/licenses/>.
10231 +
10232 +MULTILIB_OPTIONS = tarmv6/tthumb2
10233 +MULTILIB_DIRNAMES = armv6 thumb2
10234 +
10235 +MULTILIB_EXCEPTIONS =
10236 +
10237 +MULTILIB_OSDIRNAMES =
10238 +
10239 +MULTILIB_ALIASES =
10240 +
10241 +MULTILIB_MATCHES =
10242 +
10243 +# These files must be built for each multilib.
10244 +EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
10245 diff -Nur a/gcc/config/arm/t-symbian b/gcc/config/arm/t-symbian
10246 --- a/gcc/config/arm/t-symbian  2008-06-12 19:29:47.000000000 +0200
10247 +++ b/gcc/config/arm/t-symbian  2010-01-25 09:50:28.995687913 +0100
10248 @@ -17,6 +17,9 @@
10249  LIB2ADDEH = $(srcdir)/unwind-c.c $(srcdir)/config/arm/pr-support.c
10250  LIB2ADDEHDEP = $(UNWIND_H)
10251  
10252 +# Include half-float helpers.
10253 +LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/arm/fp16.c
10254 +
10255  # Create a multilib for processors with VFP floating-point, and a
10256  # multilib for those without -- using the soft-float ABI in both
10257  # cases.  Symbian OS object should be compiled with interworking
10258 diff -Nur a/gcc/config/arm/t-wrs-linux b/gcc/config/arm/t-wrs-linux
10259 --- a/gcc/config/arm/t-wrs-linux        1970-01-01 01:00:00.000000000 +0100
10260 +++ b/gcc/config/arm/t-wrs-linux        2010-01-25 09:50:28.995687913 +0100
10261 @@ -0,0 +1,43 @@
10262 +# Wind River GNU/Linux Configuration.
10263 +# Copyright (C) 2006, 2007, 2008
10264 +# Free Software Foundation, Inc.
10265 +#
10266 +# This file is part of GCC.
10267 +#
10268 +# GCC is free software; you can redistribute it and/or modify
10269 +# it under the terms of the GNU General Public License as published by
10270 +# the Free Software Foundation; either version 3, or (at your option)
10271 +# any later version.
10272 +# 
10273 +# GCC is distributed in the hope that it will be useful,
10274 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
10275 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10276 +# GNU General Public License for more details.
10277 +#
10278 +# You should have received a copy of the GNU General Public License
10279 +# along with GCC; see the file COPYING3.  If not see
10280 +# <http://www.gnu.org/licenses/>.
10281 +
10282 +MULTILIB_OPTIONS = muclibc
10283 +MULTILIB_OPTIONS += tarm926ej-s/tiwmmxt/txscale/tarm920t/tthumb2/tcortex-a8-be8
10284 +MULTILIB_OPTIONS += mfloat-abi=softfp
10285 +MULTILIB_DIRNAMES = uclibc
10286 +MULTILIB_DIRNAMES += tarm926ej-s tiwmmxt txscale tarm920t thumb2 cortex-a8-be8
10287 +MULTILIB_DIRNAMES += softfp
10288 +
10289 +MULTILIB_EXCEPTIONS = *muclibc*/*tarm920t*
10290 +MULTILIB_EXCEPTIONS += *muclibc*/*cortex-a8-be8*
10291 +
10292 +MULTILIB_EXCEPTIONS += *tiwmmxt*/*mfloat-abi=softfp*
10293 +MULTILIB_EXCEPTIONS += *txscale*/*mfloat-abi=softfp*
10294 +MULTILIB_EXCEPTIONS += *tarm920t*/*mfloat-abi=softfp*
10295 +MULTILIB_EXCEPTIONS += *thumb2*/*mfloat-abi=softfp*
10296 +
10297 +MULTILIB_MATCHES = tiwmmxt=tiwmmxt2
10298 +
10299 +MULTILIB_ALIASES = tcortex-a8-be8=tcortex-a8-be8/mfloat-abi?softfp
10300 +MULTILIB_OSDIRNAMES =
10301 +
10302 +# These files must be built for each multilib.
10303 +EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
10304 +
10305 diff -Nur a/gcc/config/arm/uclinux-eabi.h b/gcc/config/arm/uclinux-eabi.h
10306 --- a/gcc/config/arm/uclinux-eabi.h     2009-02-20 16:20:38.000000000 +0100
10307 +++ b/gcc/config/arm/uclinux-eabi.h     2010-01-25 09:50:28.995687913 +0100
10308 @@ -50,6 +50,10 @@
10309  #undef ARM_DEFAULT_ABI
10310  #define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
10311  
10312 +#undef LINK_GCC_C_SEQUENCE_SPEC
10313 +#define LINK_GCC_C_SEQUENCE_SPEC \
10314 +  "--start-group %G %L --end-group"
10315 +
10316  /* Clear the instruction cache from `beg' to `end'.  This makes an
10317     inline system call to SYS_cacheflush.  */
10318  #undef CLEAR_INSN_CACHE
10319 diff -Nur a/gcc/config/arm/unwind-arm.c b/gcc/config/arm/unwind-arm.c
10320 --- a/gcc/config/arm/unwind-arm.c       2009-04-10 01:23:07.000000000 +0200
10321 +++ b/gcc/config/arm/unwind-arm.c       2010-01-25 09:50:28.995687913 +0100
10322 @@ -1000,7 +1000,6 @@
10323    while (code != _URC_END_OF_STACK
10324          && code != _URC_FAILURE);
10325  
10326 - finish:
10327    restore_non_core_regs (&saved_vrs);
10328    return code;
10329  }
10330 @@ -1168,6 +1167,9 @@
10331                         {
10332                           matched = (void *)(ucbp + 1);
10333                           rtti = _Unwind_decode_target2 ((_uw) &data[i + 1]);
10334 +                         /* There is no way to encode an exception
10335 +                            specification for 'class X * &', so
10336 +                            always pass false for is_reference.  */
10337                           if (__cxa_type_match (ucbp, (type_info *) rtti, 0,
10338                                                 &matched))
10339                             break;
10340 @@ -1197,8 +1199,6 @@
10341                   ucbp->barrier_cache.bitpattern[4] = (_uw) &data[1];
10342  
10343                   if (data[0] & uint32_highbit)
10344 -                   phase2_call_unexpected_after_unwind = 1;
10345 -                 else
10346                     {
10347                       data += rtti_count + 1;
10348                       /* Setup for entry to the handler.  */
10349 @@ -1208,6 +1208,8 @@
10350                       _Unwind_SetGR (context, 0, (_uw) ucbp);
10351                       return _URC_INSTALL_CONTEXT;
10352                     }
10353 +                 else
10354 +                   phase2_call_unexpected_after_unwind = 1;
10355                 }
10356               if (data[0] & uint32_highbit)
10357                 data++;
10358 diff -Nur a/gcc/config/arm/unwind-arm.h b/gcc/config/arm/unwind-arm.h
10359 --- a/gcc/config/arm/unwind-arm.h       2009-04-10 01:23:07.000000000 +0200
10360 +++ b/gcc/config/arm/unwind-arm.h       2010-01-25 09:50:28.995687913 +0100
10361 @@ -229,9 +229,10 @@
10362         return 0;
10363  
10364  #if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__)
10365 -      /* Pc-relative indirect.  */
10366 +      /* Pc-relative indirect.  Propagate the bottom 2 bits, which can
10367 +        contain referenceness information in gnu unwinding tables.  */
10368        tmp += ptr;
10369 -      tmp = *(_Unwind_Word *) tmp;
10370 +      tmp = *(_Unwind_Word *) (tmp & ~(_Unwind_Word)3) | (tmp & 3);
10371  #elif defined(__symbian__) || defined(__uClinux__)
10372        /* Absolute pointer.  Nothing more to do.  */
10373  #else
10374 diff -Nur a/gcc/config/arm/vec-common.md b/gcc/config/arm/vec-common.md
10375 --- a/gcc/config/arm/vec-common.md      2007-08-22 22:32:18.000000000 +0200
10376 +++ b/gcc/config/arm/vec-common.md      2010-01-25 09:50:28.995687913 +0100
10377 @@ -38,6 +38,11 @@
10378    "TARGET_NEON
10379     || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
10380  {
10381 +  if (can_create_pseudo_p ())
10382 +    {
10383 +      if (GET_CODE (operands[0]) != REG)
10384 +       operands[1] = force_reg (<MODE>mode, operands[1]);
10385 +    }
10386  })
10387  
10388  ;; Vector arithmetic. Expanders are blank, then unnamed insns implement
10389 diff -Nur a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md
10390 --- a/gcc/config/arm/vfp.md     2008-09-01 15:40:49.000000000 +0200
10391 +++ b/gcc/config/arm/vfp.md     2010-01-25 09:50:28.995687913 +0100
10392 @@ -51,7 +51,7 @@
10393  ;; problems because small constants get converted into adds.
10394  (define_insn "*arm_movsi_vfp"
10395    [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m ,*t,r,*t,*t, *Uv")
10396 -      (match_operand:SI 1 "general_operand"       "rk, I,K,N,mi,rk,r,*t,*t,*Uvi,*t"))]
10397 +      (match_operand:SI 1 "general_operand"       "rk, I,K,j,mi,rk,r,*t,*t,*Uvi,*t"))]
10398    "TARGET_ARM && TARGET_VFP && TARGET_HARD_FLOAT
10399     && (   s_register_operand (operands[0], SImode)
10400         || s_register_operand (operands[1], SImode))"
10401 @@ -82,13 +82,17 @@
10402    "
10403    [(set_attr "predicable" "yes")
10404     (set_attr "type" "*,*,*,*,load1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores")
10405 +   (set_attr "neon_type" "*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*")
10406 +   (set_attr "insn" "mov,mov,mvn,mov,*,*,*,*,*,*,*")
10407     (set_attr "pool_range"     "*,*,*,*,4096,*,*,*,*,1020,*")
10408     (set_attr "neg_pool_range" "*,*,*,*,4084,*,*,*,*,1008,*")]
10409  )
10410  
10411 +;; See thumb2.md:thumb2_movsi_insn for an explanation of the split
10412 +;; high/low register alternatives for loads and stores here.
10413  (define_insn "*thumb2_movsi_vfp"
10414 -  [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m,*t,r, *t,*t, *Uv")
10415 -      (match_operand:SI 1 "general_operand"       "rk, I,K,N,mi,rk,r,*t,*t,*Uvi,*t"))]
10416 +  [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,l,*hk,m,*m,*t,r, *t,*t, *Uv")
10417 +      (match_operand:SI 1 "general_operand"       "rk, I,K,j,mi,*mi,l,*hk,r,*t,*t,*Uvi,*t"))]
10418    "TARGET_THUMB2 && TARGET_VFP && TARGET_HARD_FLOAT
10419     && (   s_register_operand (operands[0], SImode)
10420         || s_register_operand (operands[1], SImode))"
10421 @@ -102,25 +106,29 @@
10422      case 3:
10423        return \"movw%?\\t%0, %1\";
10424      case 4:
10425 -      return \"ldr%?\\t%0, %1\";
10426      case 5:
10427 -      return \"str%?\\t%1, %0\";
10428 +      return \"ldr%?\\t%0, %1\";
10429      case 6:
10430 -      return \"fmsr%?\\t%0, %1\\t%@ int\";
10431      case 7:
10432 -      return \"fmrs%?\\t%0, %1\\t%@ int\";
10433 +      return \"str%?\\t%1, %0\";
10434      case 8:
10435 +      return \"fmsr%?\\t%0, %1\\t%@ int\";
10436 +    case 9:
10437 +      return \"fmrs%?\\t%0, %1\\t%@ int\";
10438 +    case 10:
10439        return \"fcpys%?\\t%0, %1\\t%@ int\";
10440 -    case 9: case 10:
10441 +    case 11: case 12:
10442        return output_move_vfp (operands);
10443      default:
10444        gcc_unreachable ();
10445      }
10446    "
10447    [(set_attr "predicable" "yes")
10448 -   (set_attr "type" "*,*,*,*,load1,store1,r_2_f,f_2_r,fcpys,f_load,f_store")
10449 -   (set_attr "pool_range"     "*,*,*,*,4096,*,*,*,*,1020,*")
10450 -   (set_attr "neg_pool_range" "*,*,*,*,   0,*,*,*,*,1008,*")]
10451 +   (set_attr "type" "*,*,*,*,load1,load1,store1,store1,r_2_f,f_2_r,fcpys,f_load,f_store")
10452 +   (set_attr "neon_type" "*,*,*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*")
10453 +   (set_attr "insn" "mov,mov,mvn,mov,*,*,*,*,*,*,*,*,*")
10454 +   (set_attr "pool_range"     "*,*,*,*,1020,4096,*,*,*,*,*,1020,*")
10455 +   (set_attr "neg_pool_range" "*,*,*,*,   0,   0,*,*,*,*,*,1008,*")]
10456  )
10457  
10458  
10459 @@ -145,7 +153,10 @@
10460      case 4:
10461        return \"fmrrd%?\\t%Q0, %R0, %P1\\t%@ int\";
10462      case 5:
10463 -      return \"fcpyd%?\\t%P0, %P1\\t%@ int\";
10464 +      if (TARGET_VFP_SINGLE)
10465 +       return \"fcpys%?\\t%0, %1\\t%@ int\;fcpys%?\\t%p0, %p1\\t%@ int\";
10466 +      else
10467 +       return \"fcpyd%?\\t%P0, %P1\\t%@ int\";
10468      case 6: case 7:
10469        return output_move_vfp (operands);
10470      default:
10471 @@ -153,7 +164,14 @@
10472      }
10473    "
10474    [(set_attr "type" "*,load2,store2,r_2_f,f_2_r,ffarithd,f_loadd,f_stored")
10475 -   (set_attr "length" "8,8,8,4,4,4,4,4")
10476 +   (set_attr "neon_type" "*,*,*,neon_mcr_2_mcrr,neon_mrrc,neon_vmov,*,*")
10477 +   (set (attr "length") (cond [(eq_attr "alternative" "0,1,2") (const_int 8)
10478 +                              (eq_attr "alternative" "5")
10479 +                               (if_then_else
10480 +                                (eq (symbol_ref "TARGET_VFP_SINGLE") (const_int 1))
10481 +                                (const_int 8)
10482 +                                (const_int 4))]
10483 +                             (const_int 4)))
10484     (set_attr "pool_range"     "*,1020,*,*,*,*,1020,*")
10485     (set_attr "neg_pool_range" "*,1008,*,*,*,*,1008,*")]
10486  )
10487 @@ -172,7 +190,10 @@
10488      case 4:
10489        return \"fmrrd%?\\t%Q0, %R0, %P1\\t%@ int\";
10490      case 5:
10491 -      return \"fcpyd%?\\t%P0, %P1\\t%@ int\";
10492 +      if (TARGET_VFP_SINGLE)
10493 +       return \"fcpys%?\\t%0, %1\\t%@ int\;fcpys%?\\t%p0, %p1\\t%@ int\";
10494 +      else
10495 +       return \"fcpyd%?\\t%P0, %P1\\t%@ int\";
10496      case 6: case 7:
10497        return output_move_vfp (operands);
10498      default:
10499 @@ -180,11 +201,123 @@
10500      }
10501    "
10502    [(set_attr "type" "*,load2,store2,r_2_f,f_2_r,ffarithd,f_load,f_store")
10503 -   (set_attr "length" "8,8,8,4,4,4,4,4")
10504 +   (set_attr "neon_type" "*,*,*,neon_mcr_2_mcrr,neon_mrrc,neon_vmov,*,*")
10505 +   (set (attr "length") (cond [(eq_attr "alternative" "0,1,2") (const_int 8)
10506 +                              (eq_attr "alternative" "5")
10507 +                               (if_then_else
10508 +                                (eq (symbol_ref "TARGET_VFP_SINGLE") (const_int 1))
10509 +                                (const_int 8)
10510 +                                (const_int 4))]
10511 +                             (const_int 4)))
10512     (set_attr "pool_range"     "*,4096,*,*,*,*,1020,*")
10513     (set_attr "neg_pool_range" "*,   0,*,*,*,*,1008,*")]
10514  )
10515  
10516 +;; HFmode moves
10517 +(define_insn "*movhf_vfp_neon"
10518 +  [(set (match_operand:HF 0 "nonimmediate_operand" "= t,Um,r,m,t,r,t,r,r")
10519 +       (match_operand:HF 1 "general_operand"      " Um, t,m,r,t,r,r,t,F"))]
10520 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_NEON_FP16
10521 +   && (   s_register_operand (operands[0], HFmode)
10522 +       || s_register_operand (operands[1], HFmode))"
10523 +  "*
10524 +  switch (which_alternative)
10525 +    {
10526 +    case 0:     /* S register from memory */
10527 +      return \"vld1.16\\t{%z0}, %A1\";
10528 +    case 1:     /* memory from S register */
10529 +      return \"vst1.16\\t{%z1}, %A0\";
10530 +    case 2:     /* ARM register from memory */
10531 +      return \"ldrh\\t%0, %1\\t%@ __fp16\";
10532 +    case 3:     /* memory from ARM register */
10533 +      return \"strh\\t%1, %0\\t%@ __fp16\";
10534 +    case 4:    /* S register from S register */
10535 +      return \"fcpys\\t%0, %1\";
10536 +    case 5:    /* ARM register from ARM register */
10537 +      return \"mov\\t%0, %1\\t%@ __fp16\";
10538 +    case 6:    /* S register from ARM register */
10539 +      return \"fmsr\\t%0, %1\";
10540 +    case 7:    /* ARM register from S register */
10541 +      return \"fmrs\\t%0, %1\";
10542 +    case 8:    /* ARM register from constant */
10543 +      {
10544 +        REAL_VALUE_TYPE r;
10545 +       long bits;
10546 +       rtx ops[4];
10547 +
10548 +        REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
10549 +       bits = real_to_target (NULL, &r, HFmode);
10550 +       ops[0] = operands[0];
10551 +       ops[1] = GEN_INT (bits);
10552 +       ops[2] = GEN_INT (bits & 0xff00);
10553 +       ops[3] = GEN_INT (bits & 0x00ff);
10554 +
10555 +       if (arm_arch_thumb2)
10556 +         output_asm_insn (\"movw\\t%0, %1\", ops);
10557 +       else
10558 +         output_asm_insn (\"mov\\t%0, %2\;orr\\t%0, %0, %3\", ops);
10559 +       return \"\";
10560 +       }
10561 +    default:
10562 +      gcc_unreachable ();
10563 +    }
10564 +  "
10565 +  [(set_attr "conds" "unconditional")
10566 +   (set_attr "type" "*,*,load1,store1,fcpys,*,r_2_f,f_2_r,*")
10567 +   (set_attr "neon_type" "neon_vld1_1_2_regs,neon_vst1_1_2_regs_vst2_2_regs,*,*,*,*,*,*,*")
10568 +   (set_attr "length" "4,4,4,4,4,4,4,4,8")]
10569 +)
10570 +
10571 +;; FP16 without element load/store instructions.
10572 +(define_insn "*movhf_vfp"
10573 +  [(set (match_operand:HF 0 "nonimmediate_operand" "=r,m,t,r,t,r,r")
10574 +       (match_operand:HF 1 "general_operand"      " m,r,t,r,r,t,F"))]
10575 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FP16 && !TARGET_NEON_FP16
10576 +   && (   s_register_operand (operands[0], HFmode)
10577 +       || s_register_operand (operands[1], HFmode))"
10578 +  "*
10579 +  switch (which_alternative)
10580 +    {
10581 +    case 0:     /* ARM register from memory */
10582 +      return \"ldrh\\t%0, %1\\t%@ __fp16\";
10583 +    case 1:     /* memory from ARM register */
10584 +      return \"strh\\t%1, %0\\t%@ __fp16\";
10585 +    case 2:    /* S register from S register */
10586 +      return \"fcpys\\t%0, %1\";
10587 +    case 3:    /* ARM register from ARM register */
10588 +      return \"mov\\t%0, %1\\t%@ __fp16\";
10589 +    case 4:    /* S register from ARM register */
10590 +      return \"fmsr\\t%0, %1\";
10591 +    case 5:    /* ARM register from S register */
10592 +      return \"fmrs\\t%0, %1\";
10593 +    case 6:    /* ARM register from constant */
10594 +      {
10595 +        REAL_VALUE_TYPE r;
10596 +       long bits;
10597 +       rtx ops[4];
10598 +
10599 +        REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
10600 +       bits = real_to_target (NULL, &r, HFmode);
10601 +       ops[0] = operands[0];
10602 +       ops[1] = GEN_INT (bits);
10603 +       ops[2] = GEN_INT (bits & 0xff00);
10604 +       ops[3] = GEN_INT (bits & 0x00ff);
10605 +
10606 +       if (arm_arch_thumb2)
10607 +         output_asm_insn (\"movw\\t%0, %1\", ops);
10608 +       else
10609 +         output_asm_insn (\"mov\\t%0, %2\;orr\\t%0, %0, %3\", ops);
10610 +       return \"\";
10611 +       }
10612 +    default:
10613 +      gcc_unreachable ();
10614 +    }
10615 +  "
10616 +  [(set_attr "conds" "unconditional")
10617 +   (set_attr "type" "load1,store1,fcpys,*,r_2_f,f_2_r,*")
10618 +   (set_attr "length" "4,4,4,4,4,4,8")]
10619 +)
10620 +
10621  
10622  ;; SFmode moves
10623  ;; Disparage the w<->r cases because reloading an invalid address is
10624 @@ -222,6 +355,8 @@
10625    [(set_attr "predicable" "yes")
10626     (set_attr "type"
10627       "r_2_f,f_2_r,fconsts,f_loads,f_stores,load1,store1,fcpys,*")
10628 +   (set_attr "neon_type" "neon_mcr,neon_mrc,*,*,*,*,*,neon_vmov,*")
10629 +   (set_attr "insn" "*,*,*,*,*,*,*,*,mov")
10630     (set_attr "pool_range" "*,*,*,1020,*,4096,*,*,*")
10631     (set_attr "neg_pool_range" "*,*,*,1008,*,4080,*,*,*")]
10632  )
10633 @@ -258,6 +393,8 @@
10634    [(set_attr "predicable" "yes")
10635     (set_attr "type"
10636       "r_2_f,f_2_r,fconsts,f_load,f_store,load1,store1,fcpys,*")
10637 +   (set_attr "neon_type" "neon_mcr,neon_mrc,*,*,*,*,*,neon_vmov,*")
10638 +   (set_attr "insn" "*,*,*,*,*,*,*,*,mov")
10639     (set_attr "pool_range" "*,*,*,1020,*,4092,*,*,*")
10640     (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")]
10641  )
10642 @@ -267,7 +404,7 @@
10643  
10644  (define_insn "*movdf_vfp"
10645    [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,r, m,w  ,Uv,w,r")
10646 -       (match_operand:DF 1 "soft_df_operand"              " ?r,w,Dv,mF,r,UvF,w, w,r"))]
10647 +       (match_operand:DF 1 "soft_df_operand"              " ?r,w,Dy,mF,r,UvF,w, w,r"))]
10648    "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP
10649     && (   register_operand (operands[0], DFmode)
10650         || register_operand (operands[1], DFmode))"
10651 @@ -280,13 +417,17 @@
10652        case 1:
10653         return \"fmrrd%?\\t%Q0, %R0, %P1\";
10654        case 2:
10655 +       gcc_assert (TARGET_VFP_DOUBLE);
10656          return \"fconstd%?\\t%P0, #%G1\";
10657        case 3: case 4:
10658         return output_move_double (operands);
10659        case 5: case 6:
10660         return output_move_vfp (operands);
10661        case 7:
10662 -       return \"fcpyd%?\\t%P0, %P1\";
10663 +       if (TARGET_VFP_SINGLE)
10664 +         return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\";
10665 +       else
10666 +         return \"fcpyd%?\\t%P0, %P1\";
10667        case 8:
10668          return \"#\";
10669        default:
10670 @@ -296,14 +437,21 @@
10671    "
10672    [(set_attr "type"
10673       "r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*")
10674 -   (set_attr "length" "4,4,4,8,8,4,4,4,8")
10675 +   (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,*,*,*,*,neon_vmov,*")
10676 +   (set (attr "length") (cond [(eq_attr "alternative" "3,4,8") (const_int 8)
10677 +                              (eq_attr "alternative" "7")
10678 +                               (if_then_else
10679 +                                (eq (symbol_ref "TARGET_VFP_SINGLE") (const_int 1))
10680 +                                (const_int 8)
10681 +                                (const_int 4))]
10682 +                             (const_int 4)))
10683     (set_attr "pool_range" "*,*,*,1020,*,1020,*,*,*")
10684     (set_attr "neg_pool_range" "*,*,*,1008,*,1008,*,*,*")]
10685  )
10686  
10687  (define_insn "*thumb2_movdf_vfp"
10688    [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,r, m,w  ,Uv,w,r")
10689 -       (match_operand:DF 1 "soft_df_operand"              " ?r,w,Dv,mF,r,UvF,w, w,r"))]
10690 +       (match_operand:DF 1 "soft_df_operand"              " ?r,w,Dy,mF,r,UvF,w, w,r"))]
10691    "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP"
10692    "*
10693    {
10694 @@ -314,13 +462,17 @@
10695        case 1:
10696         return \"fmrrd%?\\t%Q0, %R0, %P1\";
10697        case 2:
10698 +       gcc_assert (TARGET_VFP_DOUBLE);
10699         return \"fconstd%?\\t%P0, #%G1\";
10700        case 3: case 4: case 8:
10701         return output_move_double (operands);
10702        case 5: case 6:
10703         return output_move_vfp (operands);
10704        case 7:
10705 -       return \"fcpyd%?\\t%P0, %P1\";
10706 +       if (TARGET_VFP_SINGLE)
10707 +         return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\";
10708 +       else
10709 +         return \"fcpyd%?\\t%P0, %P1\";
10710        default:
10711         abort ();
10712        }
10713 @@ -328,7 +480,14 @@
10714    "
10715    [(set_attr "type"
10716       "r_2_f,f_2_r,fconstd,load2,store2,f_load,f_store,ffarithd,*")
10717 -   (set_attr "length" "4,4,4,8,8,4,4,4,8")
10718 +   (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,*,*,*,*,neon_vmov,*")
10719 +   (set (attr "length") (cond [(eq_attr "alternative" "3,4,8") (const_int 8)
10720 +                              (eq_attr "alternative" "7")
10721 +                               (if_then_else
10722 +                                (eq (symbol_ref "TARGET_VFP_SINGLE") (const_int 1))
10723 +                                (const_int 8)
10724 +                                (const_int 4))]
10725 +                             (const_int 4)))
10726     (set_attr "pool_range" "*,*,*,4096,*,1020,*,*,*")
10727     (set_attr "neg_pool_range" "*,*,*,0,*,1008,*,*,*")]
10728  )
10729 @@ -356,7 +515,8 @@
10730     fmrs%D3\\t%0, %2\;fmrs%d3\\t%0, %1"
10731     [(set_attr "conds" "use")
10732      (set_attr "length" "4,4,8,4,4,8,4,4,8")
10733 -    (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")]
10734 +    (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
10735 +    (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr,neon_mcr,neon_mcr,neon_mrc,neon_mrc,neon_mrc")]
10736  )
10737  
10738  (define_insn "*thumb2_movsfcc_vfp"
10739 @@ -379,7 +539,8 @@
10740     ite\\t%D3\;fmrs%D3\\t%0, %2\;fmrs%d3\\t%0, %1"
10741     [(set_attr "conds" "use")
10742      (set_attr "length" "6,6,10,6,6,10,6,6,10")
10743 -    (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")]
10744 +    (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
10745 +    (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr,neon_mcr,neon_mcr,neon_mrc,neon_mrc,neon_mrc")]
10746  )
10747  
10748  (define_insn "*movdfcc_vfp"
10749 @@ -389,7 +550,7 @@
10750             [(match_operand 4 "cc_register" "") (const_int 0)])
10751           (match_operand:DF 1 "s_register_operand" "0,w,w,0,?r,?r,0,w,w")
10752           (match_operand:DF 2 "s_register_operand" "w,0,w,?r,0,?r,w,0,w")))]
10753 -  "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP"
10754 +  "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10755    "@
10756     fcpyd%D3\\t%P0, %P2
10757     fcpyd%d3\\t%P0, %P1
10758 @@ -402,7 +563,8 @@
10759     fmrrd%D3\\t%Q0, %R0, %P2\;fmrrd%d3\\t%Q0, %R0, %P1"
10760     [(set_attr "conds" "use")
10761      (set_attr "length" "4,4,8,4,4,8,4,4,8")
10762 -    (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")]
10763 +    (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
10764 +    (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mrrc,neon_mrrc,neon_mrrc")]
10765  )
10766  
10767  (define_insn "*thumb2_movdfcc_vfp"
10768 @@ -412,7 +574,7 @@
10769             [(match_operand 4 "cc_register" "") (const_int 0)])
10770           (match_operand:DF 1 "s_register_operand" "0,w,w,0,?r,?r,0,w,w")
10771           (match_operand:DF 2 "s_register_operand" "w,0,w,?r,0,?r,w,0,w")))]
10772 -  "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP"
10773 +  "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10774    "@
10775     it\\t%D3\;fcpyd%D3\\t%P0, %P2
10776     it\\t%d3\;fcpyd%d3\\t%P0, %P1
10777 @@ -425,7 +587,8 @@
10778     ite\\t%D3\;fmrrd%D3\\t%Q0, %R0, %P2\;fmrrd%d3\\t%Q0, %R0, %P1"
10779     [(set_attr "conds" "use")
10780      (set_attr "length" "6,6,10,6,6,10,6,6,10")
10781 -    (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")]
10782 +    (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
10783 +    (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mrrc,neon_mrrc,neon_mrrc")]
10784  )
10785  
10786  
10787 @@ -443,7 +606,7 @@
10788  (define_insn "*absdf2_vfp"
10789    [(set (match_operand:DF        0 "s_register_operand" "=w")
10790         (abs:DF (match_operand:DF 1 "s_register_operand" "w")))]
10791 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10792 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10793    "fabsd%?\\t%P0, %P1"
10794    [(set_attr "predicable" "yes")
10795     (set_attr "type" "ffarithd")]
10796 @@ -463,12 +626,12 @@
10797  (define_insn_and_split "*negdf2_vfp"
10798    [(set (match_operand:DF        0 "s_register_operand" "=w,?r,?r")
10799         (neg:DF (match_operand:DF 1 "s_register_operand" "w,0,r")))]
10800 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10801 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10802    "@
10803     fnegd%?\\t%P0, %P1
10804     #
10805     #"
10806 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP && reload_completed
10807 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE && reload_completed
10808     && arm_general_register_operand (operands[0], DFmode)"
10809    [(set (match_dup 0) (match_dup 1))]
10810    "
10811 @@ -523,7 +686,7 @@
10812    [(set (match_operand:DF         0 "s_register_operand" "=w")
10813         (plus:DF (match_operand:DF 1 "s_register_operand" "w")
10814                  (match_operand:DF 2 "s_register_operand" "w")))]
10815 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10816 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10817    "faddd%?\\t%P0, %P1, %P2"
10818    [(set_attr "predicable" "yes")
10819     (set_attr "type" "faddd")]
10820 @@ -544,7 +707,7 @@
10821    [(set (match_operand:DF          0 "s_register_operand" "=w")
10822         (minus:DF (match_operand:DF 1 "s_register_operand" "w")
10823                   (match_operand:DF 2 "s_register_operand" "w")))]
10824 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10825 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10826    "fsubd%?\\t%P0, %P1, %P2"
10827    [(set_attr "predicable" "yes")
10828     (set_attr "type" "faddd")]
10829 @@ -567,7 +730,7 @@
10830    [(set (match_operand:DF        0 "s_register_operand" "+w")
10831         (div:DF (match_operand:DF 1 "s_register_operand" "w")
10832                 (match_operand:DF 2 "s_register_operand" "w")))]
10833 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10834 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10835    "fdivd%?\\t%P0, %P1, %P2"
10836    [(set_attr "predicable" "yes")
10837     (set_attr "type" "fdivd")]
10838 @@ -590,7 +753,7 @@
10839    [(set (match_operand:DF         0 "s_register_operand" "+w")
10840         (mult:DF (match_operand:DF 1 "s_register_operand" "w")
10841                  (match_operand:DF 2 "s_register_operand" "w")))]
10842 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10843 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10844    "fmuld%?\\t%P0, %P1, %P2"
10845    [(set_attr "predicable" "yes")
10846     (set_attr "type" "fmuld")]
10847 @@ -611,7 +774,7 @@
10848    [(set (match_operand:DF                 0 "s_register_operand" "+w")
10849         (mult:DF (neg:DF (match_operand:DF 1 "s_register_operand" "w"))
10850                  (match_operand:DF         2 "s_register_operand" "w")))]
10851 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10852 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10853    "fnmuld%?\\t%P0, %P1, %P2"
10854    [(set_attr "predicable" "yes")
10855     (set_attr "type" "fmuld")]
10856 @@ -626,7 +789,8 @@
10857         (plus:SF (mult:SF (match_operand:SF 2 "s_register_operand" "t")
10858                           (match_operand:SF 3 "s_register_operand" "t"))
10859                  (match_operand:SF          1 "s_register_operand" "0")))]
10860 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10861 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP
10862 +   && (!arm_tune_marvell_f || optimize_size)"
10863    "fmacs%?\\t%0, %2, %3"
10864    [(set_attr "predicable" "yes")
10865     (set_attr "type" "fmacs")]
10866 @@ -637,7 +801,8 @@
10867         (plus:DF (mult:DF (match_operand:DF 2 "s_register_operand" "w")
10868                           (match_operand:DF 3 "s_register_operand" "w"))
10869                  (match_operand:DF          1 "s_register_operand" "0")))]
10870 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10871 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE
10872 +   && (!arm_tune_marvell_f || optimize_size)"
10873    "fmacd%?\\t%P0, %P2, %P3"
10874    [(set_attr "predicable" "yes")
10875     (set_attr "type" "fmacd")]
10876 @@ -649,7 +814,8 @@
10877         (minus:SF (mult:SF (match_operand:SF 2 "s_register_operand" "t")
10878                            (match_operand:SF 3 "s_register_operand" "t"))
10879                   (match_operand:SF          1 "s_register_operand" "0")))]
10880 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10881 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP
10882 +   && (!arm_tune_marvell_f || optimize_size)"
10883    "fmscs%?\\t%0, %2, %3"
10884    [(set_attr "predicable" "yes")
10885     (set_attr "type" "fmacs")]
10886 @@ -660,7 +826,8 @@
10887         (minus:DF (mult:DF (match_operand:DF 2 "s_register_operand" "w")
10888                            (match_operand:DF 3 "s_register_operand" "w"))
10889                   (match_operand:DF          1 "s_register_operand" "0")))]
10890 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10891 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE
10892 +   && (!arm_tune_marvell_f || optimize_size)"
10893    "fmscd%?\\t%P0, %P2, %P3"
10894    [(set_attr "predicable" "yes")
10895     (set_attr "type" "fmacd")]
10896 @@ -672,7 +839,8 @@
10897         (minus:SF (match_operand:SF          1 "s_register_operand" "0")
10898                   (mult:SF (match_operand:SF 2 "s_register_operand" "t")
10899                            (match_operand:SF 3 "s_register_operand" "t"))))]
10900 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10901 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP
10902 +   && (!arm_tune_marvell_f || optimize_size)"
10903    "fnmacs%?\\t%0, %2, %3"
10904    [(set_attr "predicable" "yes")
10905     (set_attr "type" "fmacs")]
10906 @@ -683,7 +851,8 @@
10907         (minus:DF (match_operand:DF          1 "s_register_operand" "0")
10908                   (mult:DF (match_operand:DF 2 "s_register_operand" "w")
10909                            (match_operand:DF 3 "s_register_operand" "w"))))]
10910 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10911 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE
10912 +   && (!arm_tune_marvell_f || optimize_size)"
10913    "fnmacd%?\\t%P0, %P2, %P3"
10914    [(set_attr "predicable" "yes")
10915     (set_attr "type" "fmacd")]
10916 @@ -697,7 +866,8 @@
10917                     (neg:SF (match_operand:SF 2 "s_register_operand" "t"))
10918                     (match_operand:SF         3 "s_register_operand" "t"))
10919                   (match_operand:SF           1 "s_register_operand" "0")))]
10920 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10921 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP
10922 +   && (!arm_tune_marvell_f || optimize_size)"
10923    "fnmscs%?\\t%0, %2, %3"
10924    [(set_attr "predicable" "yes")
10925     (set_attr "type" "fmacs")]
10926 @@ -709,7 +879,8 @@
10927                     (neg:DF (match_operand:DF 2 "s_register_operand" "w"))
10928                     (match_operand:DF         3 "s_register_operand" "w"))
10929                   (match_operand:DF           1 "s_register_operand" "0")))]
10930 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10931 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE
10932 +   && (!arm_tune_marvell_f || optimize_size)"
10933    "fnmscd%?\\t%P0, %P2, %P3"
10934    [(set_attr "predicable" "yes")
10935     (set_attr "type" "fmacd")]
10936 @@ -721,7 +892,7 @@
10937  (define_insn "*extendsfdf2_vfp"
10938    [(set (match_operand:DF                 0 "s_register_operand" "=w")
10939         (float_extend:DF (match_operand:SF 1 "s_register_operand" "t")))]
10940 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10941 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10942    "fcvtds%?\\t%P0, %1"
10943    [(set_attr "predicable" "yes")
10944     (set_attr "type" "f_cvt")]
10945 @@ -730,12 +901,30 @@
10946  (define_insn "*truncdfsf2_vfp"
10947    [(set (match_operand:SF                 0 "s_register_operand" "=t")
10948         (float_truncate:SF (match_operand:DF 1 "s_register_operand" "w")))]
10949 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10950 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10951    "fcvtsd%?\\t%0, %P1"
10952    [(set_attr "predicable" "yes")
10953     (set_attr "type" "f_cvt")]
10954  )
10955  
10956 +(define_insn "extendhfsf2"
10957 +  [(set (match_operand:SF                 0 "s_register_operand" "=t")
10958 +       (float_extend:SF (match_operand:HF 1 "s_register_operand" "t")))]
10959 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FP16"
10960 +  "vcvtb%?.f32.f16\\t%0, %1"
10961 +  [(set_attr "predicable" "yes")
10962 +   (set_attr "type" "f_cvt")]
10963 +)
10964 +
10965 +(define_insn "truncsfhf2"
10966 +  [(set (match_operand:HF                 0 "s_register_operand" "=t")
10967 +       (float_truncate:HF (match_operand:SF 1 "s_register_operand" "t")))]
10968 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FP16"
10969 +  "vcvtb%?.f16.f32\\t%0, %1"
10970 +  [(set_attr "predicable" "yes")
10971 +   (set_attr "type" "f_cvt")]
10972 +)
10973 +
10974  (define_insn "*truncsisf2_vfp"
10975    [(set (match_operand:SI                0 "s_register_operand" "=t")
10976         (fix:SI (fix:SF (match_operand:SF 1 "s_register_operand" "t"))))]
10977 @@ -748,7 +937,7 @@
10978  (define_insn "*truncsidf2_vfp"
10979    [(set (match_operand:SI                0 "s_register_operand" "=t")
10980         (fix:SI (fix:DF (match_operand:DF 1 "s_register_operand" "w"))))]
10981 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10982 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10983    "ftosizd%?\\t%0, %P1"
10984    [(set_attr "predicable" "yes")
10985     (set_attr "type" "f_cvt")]
10986 @@ -767,7 +956,7 @@
10987  (define_insn "fixuns_truncdfsi2"
10988    [(set (match_operand:SI                0 "s_register_operand" "=t")
10989         (unsigned_fix:SI (fix:DF (match_operand:DF 1 "s_register_operand" "t"))))]
10990 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
10991 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
10992    "ftouizd%?\\t%0, %P1"
10993    [(set_attr "predicable" "yes")
10994     (set_attr "type" "f_cvt")]
10995 @@ -786,7 +975,7 @@
10996  (define_insn "*floatsidf2_vfp"
10997    [(set (match_operand:DF          0 "s_register_operand" "=w")
10998         (float:DF (match_operand:SI 1 "s_register_operand" "t")))]
10999 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
11000 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
11001    "fsitod%?\\t%P0, %1"
11002    [(set_attr "predicable" "yes")
11003     (set_attr "type" "f_cvt")]
11004 @@ -805,7 +994,7 @@
11005  (define_insn "floatunssidf2"
11006    [(set (match_operand:DF          0 "s_register_operand" "=w")
11007         (unsigned_float:DF (match_operand:SI 1 "s_register_operand" "t")))]
11008 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
11009 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
11010    "fuitod%?\\t%P0, %1"
11011    [(set_attr "predicable" "yes")
11012     (set_attr "type" "f_cvt")]
11013 @@ -826,7 +1015,7 @@
11014  (define_insn "*sqrtdf2_vfp"
11015    [(set (match_operand:DF         0 "s_register_operand" "=w")
11016         (sqrt:DF (match_operand:DF 1 "s_register_operand" "w")))]
11017 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
11018 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
11019    "fsqrtd%?\\t%P0, %P1"
11020    [(set_attr "predicable" "yes")
11021     (set_attr "type" "fdivd")]
11022 @@ -878,9 +1067,9 @@
11023    [(set (reg:CCFP CC_REGNUM)
11024         (compare:CCFP (match_operand:DF 0 "s_register_operand"  "w")
11025                       (match_operand:DF 1 "vfp_compare_operand" "wG")))]
11026 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
11027 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
11028    "#"
11029 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
11030 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
11031    [(set (reg:CCFP VFPCC_REGNUM)
11032         (compare:CCFP (match_dup 0)
11033                        (match_dup 1)))
11034 @@ -893,9 +1082,9 @@
11035    [(set (reg:CCFPE CC_REGNUM)
11036         (compare:CCFPE (match_operand:DF 0 "s_register_operand"  "w")
11037                        (match_operand:DF 1 "vfp_compare_operand" "wG")))]
11038 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
11039 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
11040    "#"
11041 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
11042 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
11043    [(set (reg:CCFPE VFPCC_REGNUM)
11044         (compare:CCFPE (match_dup 0)
11045                        (match_dup 1)))
11046 @@ -935,7 +1124,7 @@
11047    [(set (reg:CCFP VFPCC_REGNUM)
11048         (compare:CCFP (match_operand:DF 0 "s_register_operand"  "w,w")
11049                       (match_operand:DF 1 "vfp_compare_operand" "w,G")))]
11050 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
11051 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
11052    "@
11053     fcmpd%?\\t%P0, %P1
11054     fcmpzd%?\\t%P0"
11055 @@ -947,7 +1136,7 @@
11056    [(set (reg:CCFPE VFPCC_REGNUM)
11057         (compare:CCFPE (match_operand:DF 0 "s_register_operand"  "w,w")
11058                        (match_operand:DF 1 "vfp_compare_operand" "w,G")))]
11059 -  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
11060 +  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
11061    "@
11062     fcmped%?\\t%P0, %P1
11063     fcmpezd%?\\t%P0"
11064 diff -Nur a/gcc/config/arm/vxworks.h b/gcc/config/arm/vxworks.h
11065 --- a/gcc/config/arm/vxworks.h  2009-02-20 16:20:38.000000000 +0100
11066 +++ b/gcc/config/arm/vxworks.h  2010-01-25 09:50:28.995687913 +0100
11067 @@ -97,7 +97,7 @@
11068  /* There is no default multilib.  */
11069  #undef MULTILIB_DEFAULTS
11070  
11071 -#define FPUTYPE_DEFAULT FPUTYPE_VFP
11072 +#define FPUTYPE_DEFAULT "vfp"
11073  
11074  #undef FUNCTION_PROFILER
11075  #define FUNCTION_PROFILER VXWORKS_FUNCTION_PROFILER
11076 diff -Nur a/gcc/config/arm/wrs-linux.h b/gcc/config/arm/wrs-linux.h
11077 --- a/gcc/config/arm/wrs-linux.h        1970-01-01 01:00:00.000000000 +0100
11078 +++ b/gcc/config/arm/wrs-linux.h        2010-01-25 09:50:28.995687913 +0100
11079 @@ -0,0 +1,76 @@
11080 +/* Wind River GNU/Linux Configuration.
11081 +   Copyright (C) 2006, 2007, 2008
11082 +   Free Software Foundation, Inc.
11083 +
11084 +This file is part of GCC.
11085 +
11086 +GCC is free software; you can redistribute it and/or modify
11087 +it under the terms of the GNU General Public License as published by
11088 +the Free Software Foundation; either version 3, or (at your option)
11089 +any later version.
11090 +
11091 +GCC is distributed in the hope that it will be useful,
11092 +but WITHOUT ANY WARRANTY; without even the implied warranty of
11093 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11094 +GNU General Public License for more details.
11095 +
11096 +You should have received a copy of the GNU General Public License
11097 +along with GCC; see the file COPYING3.  If not see
11098 +<http://www.gnu.org/licenses/>.  */
11099 +
11100 +/* Use the ARM926EJ-S by default.  */
11101 +#undef SUBTARGET_CPU_DEFAULT
11102 +#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm926ejs
11103 +
11104 +/* Add a -tiwmmxt option for convenience in generating multilibs.
11105 +   This option generates big-endian IWMMXT code.  */
11106 +#undef CC1_SPEC
11107 +#define CC1_SPEC "                                                     \
11108 + %{tarm926ej-s:        -mcpu=arm926ej-s ;                                      \
11109 +   tiwmmxt:     -mcpu=iwmmxt ;                                         \
11110 +   tiwmmxt2:    -mcpu=iwmmxt ;                                         \
11111 +   txscale:     -mcpu=xscale -mbig-endian ;                            \
11112 +   tarm920t:    -mcpu=arm920t ;                                                \
11113 +   tthumb2:     %{!mcpu=*:%{!march=*:-march=armv6t2}} -mthumb ;                \
11114 +   tcortex-a8-be8: -mcpu=cortex-a8 -mbig-endian -mfloat-abi=softfp     \
11115 +                   -mfpu=neon }                                                \
11116 + %{txscale:%{mfloat-abi=softfp:%eXScale VFP multilib not provided}}    \
11117 + %{tarm920t:%{mfloat-abi=softfp:%eARM920T VFP multilib not provided}}  \
11118 + %{profile:-p}"
11119 +
11120 +/* Since the ARM926EJ-S is the default processor, we do not need to
11121 +   provide an explicit multilib for that processor.  */
11122 +#undef MULTILIB_DEFAULTS
11123 +#define MULTILIB_DEFAULTS \
11124 +  { "tarm926ej-s" }
11125 +
11126 +/* The GLIBC headers are in /usr/include, relative to the sysroot; the
11127 +   uClibc headers are in /uclibc/usr/include.  */
11128 +#undef SYSROOT_HEADERS_SUFFIX_SPEC
11129 +#define SYSROOT_HEADERS_SUFFIX_SPEC            \
11130 +  "%{muclibc:/uclibc}" 
11131 +
11132 +/* Translate -tiwmmxt appropriately for the assembler.  The -meabi=5
11133 +   option is the relevant part of SUBTARGET_EXTRA_ASM_SPEC in bpabi.h.  */
11134 +#undef SUBTARGET_EXTRA_ASM_SPEC
11135 +#define SUBTARGET_EXTRA_ASM_SPEC \
11136 +  "%{tiwmmxt2:-mcpu=iwmmxt2} %{tiwmmxt:-mcpu=iwmmxt} %{txscale:-mcpu=xscale -EB} %{tcortex-a8-be8:-mcpu=cortex-a8 -EB} -meabi=5" 
11137 +
11138 +/* Translate -tiwmmxt for the linker.  */
11139 +#undef SUBTARGET_EXTRA_LINK_SPEC
11140 +#define SUBTARGET_EXTRA_LINK_SPEC                      \
11141 +  " %{tiwmmxt:-m armelf_linux_eabi ;                   \
11142 +     txscale:-m armelfb_linux_eabi ;                   \
11143 +     tcortex-a8-be8:-m armelfb_linux_eabi %{!r:--be8} ;        \
11144 +     : -m armelf_linux_eabi}"
11145 +
11146 +/* The various C libraries each have their own subdirectory.  */
11147 +#undef SYSROOT_SUFFIX_SPEC
11148 +#define SYSROOT_SUFFIX_SPEC                                    \
11149 +  "%{muclibc:/uclibc}%{tiwmmxt:/tiwmmxt ;                      \
11150 +     tiwmmxt2:/tiwmmxt ;                                       \
11151 +     txscale:/txscale ;                                                \
11152 +     tarm920t:/tarm920t ;                                      \
11153 +     tthumb2:/thumb2 ;                                         \
11154 +     tcortex-a8-be8:/cortex-a8-be8}%{!tthumb2:%{!tcortex-a8-be8:%{mfloat-abi=softfp:/softfp}}}"
11155 +
11156 diff -Nur a/gcc/config/i386/atom.md b/gcc/config/i386/atom.md
11157 --- a/gcc/config/i386/atom.md   1970-01-01 01:00:00.000000000 +0100
11158 +++ b/gcc/config/i386/atom.md   2010-01-25 09:50:28.995687913 +0100
11159 @@ -0,0 +1,795 @@
11160 +;; Atom Scheduling
11161 +;; Copyright (C) 2009 Free Software Foundation, Inc.
11162 +;;
11163 +;; This file is part of GCC.
11164 +;;
11165 +;; GCC is free software; you can redistribute it and/or modify
11166 +;; it under the terms of the GNU General Public License as published by
11167 +;; the Free Software Foundation; either version 3, or (at your option)
11168 +;; any later version.
11169 +;;
11170 +;; GCC is distributed in the hope that it will be useful,
11171 +;; but WITHOUT ANY WARRANTY; without even the implied warranty of
11172 +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11173 +;; GNU General Public License for more details.
11174 +;;
11175 +;; You should have received a copy of the GNU General Public License
11176 +;; along with GCC; see the file COPYING3.  If not see
11177 +;; <http://www.gnu.org/licenses/>.
11178 +;;
11179 +;; Atom is an in-order core with two integer pipelines.
11180 +
11181 +
11182 +(define_attr "atom_unit" "sishuf,simul,jeu,complex,other" 
11183 +  (const_string "other"))
11184 +
11185 +(define_attr "atom_sse_attr" "rcp,movdup,lfence,fence,prefetch,sqrt,mxcsr,other"
11186 +  (const_string "other"))
11187 +
11188 +(define_automaton "atom")
11189 +
11190 +;;  Atom has two ports: port 0 and port 1 connecting to all execution units
11191 +(define_cpu_unit "atom-port-0,atom-port-1" "atom")
11192 +
11193 +;;  EU: Execution Unit
11194 +;;  Atom EUs are connected by port 0 or port 1. 
11195 +
11196 +(define_cpu_unit "atom-eu-0, atom-eu-1,
11197 +                  atom-imul-1, atom-imul-2, atom-imul-3, atom-imul-4"
11198 +                  "atom")
11199 +
11200 +;; Some EUs have duplicated copied and can be accessed via either
11201 +;; port 0 or port 1
11202 +;; (define_reservation "atom-port-either" "(atom-port-0 | atom-port-1)")
11203 +
11204 +;;; Some instructions is dual-pipe execution, need both ports
11205 +;;; Complex multi-op macro-instructoins need both ports and all EUs
11206 +(define_reservation "atom-port-dual" "(atom-port-0 + atom-port-1)")
11207 +(define_reservation "atom-all-eu" "(atom-eu-0 + atom-eu-1 + 
11208 +                                    atom-imul-1 + atom-imul-2 + atom-imul-3 +
11209 +                                    atom-imul-4)")
11210 +
11211 +;;; Most of simple instructions have 1 cycle latency. Some of them
11212 +;;; issue in port 0, some in port 0 and some in either port.
11213 +(define_reservation "atom-simple-0" "(atom-port-0 + atom-eu-0)")
11214 +(define_reservation "atom-simple-1" "(atom-port-1 + atom-eu-1)")
11215 +(define_reservation "atom-simple-either" "(atom-simple-0 | atom-simple-1)")
11216 +
11217 +;;; Some insn issues in port 0 with 3 cycle latency and 1 cycle tput
11218 +(define_reservation "atom-eu-0-3-1" "(atom-port-0 + atom-eu-0, nothing*2)")
11219 +
11220 +;;; fmul insn can have 4 or 5 cycles latency
11221 +(define_reservation "atom-fmul-5c" "(atom-port-0 + atom-eu-0), nothing*4")
11222 +(define_reservation "atom-fmul-4c" "(atom-port-0 + atom-eu-0), nothing*3")
11223 +
11224 +;;; fadd can has 5 cycles latency depends on instruction forms
11225 +(define_reservation "atom-fadd-5c" "(atom-port-1 + atom-eu-1), nothing*5")
11226 +
11227 +;;; imul insn has 5 cycles latency
11228 +(define_reservation "atom-imul-32" 
11229 +                    "atom-imul-1, atom-imul-2, atom-imul-3, atom-imul-4, 
11230 +                     atom-port-0")
11231 +;;; imul instruction excludes other non-FP instructions.
11232 +(exclusion_set "atom-eu-0, atom-eu-1" 
11233 +               "atom-imul-1, atom-imul-2, atom-imul-3, atom-imul-4")
11234 +
11235 +;;; dual-execution instructions can have 1,2,4,5 cycles latency depends on 
11236 +;;; instruction forms
11237 +(define_reservation "atom-dual-1c" "(atom-port-dual + atom-eu-0 + atom-eu-1)")
11238 +(define_reservation "atom-dual-2c"
11239 +                    "(atom-port-dual + atom-eu-0 + atom-eu-1, nothing)")
11240 +(define_reservation "atom-dual-5c"
11241 +                    "(atom-port-dual + atom-eu-0 + atom-eu-1, nothing*4)")
11242 +
11243 +;;; Complex macro-instruction has variants of latency, and uses both ports.
11244 +(define_reservation "atom-complex" "(atom-port-dual + atom-all-eu)")
11245 +
11246 +(define_insn_reservation  "atom_other" 9
11247 +  (and (eq_attr "cpu" "atom")
11248 +       (and (eq_attr "type" "other")
11249 +            (eq_attr "atom_unit" "!jeu")))
11250 +  "atom-complex, atom-all-eu*8")
11251 +
11252 +;; return has type "other" with atom_unit "jeu"
11253 +(define_insn_reservation  "atom_other_2" 1
11254 +  (and (eq_attr "cpu" "atom")
11255 +       (and (eq_attr "type" "other")
11256 +            (eq_attr "atom_unit" "jeu")))
11257 +  "atom-dual-1c")
11258 +
11259 +(define_insn_reservation  "atom_multi" 9
11260 +  (and (eq_attr "cpu" "atom")
11261 +       (eq_attr "type" "multi"))
11262 +  "atom-complex, atom-all-eu*8")
11263 +
11264 +;; Normal alu insns without carry
11265 +(define_insn_reservation  "atom_alu" 1
11266 +  (and (eq_attr "cpu" "atom")
11267 +       (and (eq_attr "type" "alu")
11268 +            (and (eq_attr "memory" "none")
11269 +                 (eq_attr "use_carry" "0"))))
11270 +  "atom-simple-either")
11271 +
11272 +;; Normal alu insns without carry
11273 +(define_insn_reservation  "atom_alu_mem" 1
11274 +  (and (eq_attr "cpu" "atom")
11275 +       (and (eq_attr "type" "alu")
11276 +            (and (eq_attr "memory" "!none")
11277 +                 (eq_attr "use_carry" "0"))))
11278 +  "atom-simple-either")
11279 +
11280 +;; Alu insn consuming CF, such as add/sbb
11281 +(define_insn_reservation  "atom_alu_carry" 1
11282 +  (and (eq_attr "cpu" "atom")
11283 +       (and (eq_attr "type" "alu")
11284 +            (and (eq_attr "memory" "none")
11285 +                 (eq_attr "use_carry" "1"))))
11286 +  "atom-simple-either")
11287 +
11288 +;; Alu insn consuming CF, such as add/sbb
11289 +(define_insn_reservation  "atom_alu_carry_mem" 1
11290 +  (and (eq_attr "cpu" "atom")
11291 +       (and (eq_attr "type" "alu")
11292 +            (and (eq_attr "memory" "!none")
11293 +                (eq_attr "use_carry" "1"))))
11294 +  "atom-simple-either")
11295 +
11296 +(define_insn_reservation  "atom_alu1" 1
11297 +  (and (eq_attr "cpu" "atom")
11298 +       (and (eq_attr "type" "alu1")
11299 +            (eq_attr "memory" "none")))
11300 +  "atom-simple-either")
11301 +
11302 +(define_insn_reservation  "atom_alu1_mem" 1
11303 +  (and (eq_attr "cpu" "atom")
11304 +       (and (eq_attr "type" "alu1")
11305 +            (eq_attr "memory" "!none")))
11306 +  "atom-simple-either")
11307 +
11308 +(define_insn_reservation  "atom_negnot" 1
11309 +  (and (eq_attr "cpu" "atom")
11310 +       (and (eq_attr "type" "negnot")
11311 +            (eq_attr "memory" "none")))
11312 +  "atom-simple-either")
11313 +
11314 +(define_insn_reservation  "atom_negnot_mem" 1
11315 +  (and (eq_attr "cpu" "atom")
11316 +       (and (eq_attr "type" "negnot")
11317 +            (eq_attr "memory" "!none")))
11318 +  "atom-simple-either")
11319 +
11320 +(define_insn_reservation  "atom_imov" 1
11321 +  (and (eq_attr "cpu" "atom")
11322 +       (and (eq_attr "type" "imov")
11323 +            (eq_attr "memory" "none")))
11324 +  "atom-simple-either")
11325 +
11326 +(define_insn_reservation  "atom_imov_mem" 1
11327 +  (and (eq_attr "cpu" "atom")
11328 +       (and (eq_attr "type" "imov")
11329 +            (eq_attr "memory" "!none")))
11330 +  "atom-simple-either")
11331 +
11332 +;; 16<-16, 32<-32
11333 +(define_insn_reservation  "atom_imovx" 1
11334 +  (and (eq_attr "cpu" "atom")
11335 +       (and (eq_attr "type" "imovx")
11336 +            (and (eq_attr "memory" "none")
11337 +                 (ior (and (match_operand:HI 0 "register_operand")
11338 +                           (match_operand:HI 1 "general_operand"))
11339 +                      (and (match_operand:SI 0 "register_operand")
11340 +                           (match_operand:SI 1 "general_operand"))))))
11341 +  "atom-simple-either")
11342 +
11343 +;; 16<-16, 32<-32, mem
11344 +(define_insn_reservation  "atom_imovx_mem" 1
11345 +  (and (eq_attr "cpu" "atom")
11346 +       (and (eq_attr "type" "imovx")
11347 +            (and (eq_attr "memory" "!none")
11348 +                 (ior (and (match_operand:HI 0 "register_operand")
11349 +                           (match_operand:HI 1 "general_operand"))
11350 +                      (and (match_operand:SI 0 "register_operand")
11351 +                           (match_operand:SI 1 "general_operand"))))))
11352 +  "atom-simple-either")
11353 +
11354 +;; 32<-16, 32<-8, 64<-16, 64<-8, 64<-32, 8<-8
11355 +(define_insn_reservation  "atom_imovx_2" 1
11356 +  (and (eq_attr "cpu" "atom")
11357 +       (and (eq_attr "type" "imovx")
11358 +            (and (eq_attr "memory" "none")
11359 +                 (ior (match_operand:QI 0 "register_operand")
11360 +                      (ior (and (match_operand:SI 0 "register_operand")
11361 +                                (not (match_operand:SI 1 "general_operand")))
11362 +                           (match_operand:DI 0 "register_operand"))))))
11363 +  "atom-simple-0")
11364 +
11365 +;; 32<-16, 32<-8, 64<-16, 64<-8, 64<-32, 8<-8, mem
11366 +(define_insn_reservation  "atom_imovx_2_mem" 1
11367 +  (and (eq_attr "cpu" "atom")
11368 +       (and (eq_attr "type" "imovx")
11369 +            (and (eq_attr "memory" "!none")
11370 +                 (ior (match_operand:QI 0 "register_operand")
11371 +                      (ior (and (match_operand:SI 0 "register_operand")
11372 +                                (not (match_operand:SI 1 "general_operand")))
11373 +                           (match_operand:DI 0 "register_operand"))))))
11374 +  "atom-simple-0")
11375 +
11376 +;; 16<-8
11377 +(define_insn_reservation  "atom_imovx_3" 3
11378 +  (and (eq_attr "cpu" "atom")
11379 +       (and (eq_attr "type" "imovx")
11380 +            (and (match_operand:HI 0 "register_operand")
11381 +                 (match_operand:QI 1 "general_operand"))))
11382 +  "atom-complex, atom-all-eu*2")
11383 +
11384 +(define_insn_reservation  "atom_lea" 1
11385 +  (and (eq_attr "cpu" "atom")
11386 +       (and (eq_attr "type" "lea")
11387 +            (eq_attr "mode" "!HI")))
11388 +  "atom-simple-either")
11389 +
11390 +;; lea 16bit address is complex insn
11391 +(define_insn_reservation  "atom_lea_2" 2
11392 +  (and (eq_attr "cpu" "atom")
11393 +       (and (eq_attr "type" "lea")
11394 +            (eq_attr "mode" "HI")))
11395 +  "atom-complex, atom-all-eu")
11396 +
11397 +(define_insn_reservation  "atom_incdec" 1
11398 +  (and (eq_attr "cpu" "atom")
11399 +       (and (eq_attr "type" "incdec")
11400 +            (eq_attr "memory" "none")))
11401 +  "atom-simple-either")
11402 +
11403 +(define_insn_reservation  "atom_incdec_mem" 1
11404 +  (and (eq_attr "cpu" "atom")
11405 +       (and (eq_attr "type" "incdec")
11406 +            (eq_attr "memory" "!none")))
11407 +  "atom-simple-either")
11408 +
11409 +;; simple shift instruction use SHIFT eu, none memory
11410 +(define_insn_reservation  "atom_ishift" 1
11411 +  (and (eq_attr "cpu" "atom")
11412 +       (and (eq_attr "type" "ishift")
11413 +            (and (eq_attr "memory" "none") (eq_attr "prefix_0f" "0"))))
11414 +  "atom-simple-0")
11415 +
11416 +;; simple shift instruction use SHIFT eu, memory
11417 +(define_insn_reservation  "atom_ishift_mem" 1
11418 +  (and (eq_attr "cpu" "atom")
11419 +       (and (eq_attr "type" "ishift")
11420 +            (and (eq_attr "memory" "!none") (eq_attr "prefix_0f" "0"))))
11421 +  "atom-simple-0")
11422 +
11423 +;; DF shift (prefixed with 0f) is complex insn with latency of 7 cycles
11424 +(define_insn_reservation  "atom_ishift_3" 7
11425 +  (and (eq_attr "cpu" "atom")
11426 +       (and (eq_attr "type" "ishift")
11427 +            (eq_attr "prefix_0f" "1")))
11428 +  "atom-complex, atom-all-eu*6")
11429 +
11430 +(define_insn_reservation  "atom_ishift1" 1
11431 +  (and (eq_attr "cpu" "atom")
11432 +       (and (eq_attr "type" "ishift1")
11433 +            (eq_attr "memory" "none")))
11434 +  "atom-simple-0")
11435 +
11436 +(define_insn_reservation  "atom_ishift1_mem" 1
11437 +  (and (eq_attr "cpu" "atom")
11438 +       (and (eq_attr "type" "ishift1")
11439 +            (eq_attr "memory" "!none")))
11440 +  "atom-simple-0")
11441 +
11442 +(define_insn_reservation  "atom_rotate" 1
11443 +  (and (eq_attr "cpu" "atom")
11444 +       (and (eq_attr "type" "rotate")
11445 +            (eq_attr "memory" "none")))
11446 +  "atom-simple-0")
11447 +
11448 +(define_insn_reservation  "atom_rotate_mem" 1
11449 +  (and (eq_attr "cpu" "atom")
11450 +       (and (eq_attr "type" "rotate")
11451 +            (eq_attr "memory" "!none")))
11452 +  "atom-simple-0")
11453 +
11454 +(define_insn_reservation  "atom_rotate1" 1
11455 +  (and (eq_attr "cpu" "atom")
11456 +       (and (eq_attr "type" "rotate1")
11457 +            (eq_attr "memory" "none")))
11458 +  "atom-simple-0")
11459 +
11460 +(define_insn_reservation  "atom_rotate1_mem" 1
11461 +  (and (eq_attr "cpu" "atom")
11462 +       (and (eq_attr "type" "rotate1")
11463 +            (eq_attr "memory" "!none")))
11464 +  "atom-simple-0")
11465 +
11466 +(define_insn_reservation  "atom_imul" 5
11467 +  (and (eq_attr "cpu" "atom")
11468 +       (and (eq_attr "type" "imul")
11469 +            (and (eq_attr "memory" "none") (eq_attr "mode" "SI"))))
11470 +  "atom-imul-32")
11471 +
11472 +(define_insn_reservation  "atom_imul_mem" 5
11473 +  (and (eq_attr "cpu" "atom")
11474 +       (and (eq_attr "type" "imul")
11475 +            (and (eq_attr "memory" "!none") (eq_attr "mode" "SI"))))
11476 +  "atom-imul-32")
11477 +
11478 +;; latency set to 10 as common 64x64 imul
11479 +(define_insn_reservation  "atom_imul_3" 10
11480 +  (and (eq_attr "cpu" "atom")
11481 +       (and (eq_attr "type" "imul")
11482 +            (eq_attr "mode" "!SI")))
11483 +  "atom-complex, atom-all-eu*9")
11484 +
11485 +(define_insn_reservation  "atom_idiv" 65
11486 +  (and (eq_attr "cpu" "atom")
11487 +       (eq_attr "type" "idiv"))
11488 +  "atom-complex, atom-all-eu*32, nothing*32")
11489 +
11490 +(define_insn_reservation  "atom_icmp" 1
11491 +  (and (eq_attr "cpu" "atom")
11492 +       (and (eq_attr "type" "icmp")
11493 +            (eq_attr "memory" "none")))
11494 +  "atom-simple-either")
11495 +
11496 +(define_insn_reservation  "atom_icmp_mem" 1
11497 +  (and (eq_attr "cpu" "atom")
11498 +       (and (eq_attr "type" "icmp")
11499 +            (eq_attr "memory" "!none")))
11500 +  "atom-simple-either")
11501 +
11502 +(define_insn_reservation  "atom_test" 1
11503 +  (and (eq_attr "cpu" "atom")
11504 +       (and (eq_attr "type" "test")
11505 +            (eq_attr "memory" "none")))
11506 +  "atom-simple-either")
11507 +
11508 +(define_insn_reservation  "atom_test_mem" 1
11509 +  (and (eq_attr "cpu" "atom")
11510 +       (and (eq_attr "type" "test")
11511 +            (eq_attr "memory" "!none")))
11512 +  "atom-simple-either")
11513 +
11514 +(define_insn_reservation  "atom_ibr" 1
11515 +  (and (eq_attr "cpu" "atom")
11516 +       (and (eq_attr "type" "ibr")
11517 +            (eq_attr "memory" "!load")))
11518 +  "atom-simple-1")
11519 +
11520 +;; complex if jump target is from address
11521 +(define_insn_reservation  "atom_ibr_2" 2
11522 +  (and (eq_attr "cpu" "atom")
11523 +       (and (eq_attr "type" "ibr")
11524 +            (eq_attr "memory" "load")))
11525 +  "atom-complex, atom-all-eu")
11526 +
11527 +(define_insn_reservation  "atom_setcc" 1
11528 +  (and (eq_attr "cpu" "atom")
11529 +       (and (eq_attr "type" "setcc")
11530 +            (eq_attr "memory" "!store")))
11531 +  "atom-simple-either")
11532 +
11533 +;; 2 cycles complex if target is in memory
11534 +(define_insn_reservation  "atom_setcc_2" 2
11535 +  (and (eq_attr "cpu" "atom")
11536 +       (and (eq_attr "type" "setcc")
11537 +            (eq_attr "memory" "store")))
11538 +  "atom-complex, atom-all-eu")
11539 +
11540 +(define_insn_reservation  "atom_icmov" 1
11541 +  (and (eq_attr "cpu" "atom")
11542 +       (and (eq_attr "type" "icmov")
11543 +            (eq_attr "memory" "none")))
11544 +  "atom-simple-either")
11545 +
11546 +(define_insn_reservation  "atom_icmov_mem" 1
11547 +  (and (eq_attr "cpu" "atom")
11548 +       (and (eq_attr "type" "icmov")
11549 +            (eq_attr "memory" "!none")))
11550 +  "atom-simple-either")
11551 +
11552 +;; UCODE if segreg, ignored
11553 +(define_insn_reservation  "atom_push" 2
11554 +  (and (eq_attr "cpu" "atom")
11555 +       (eq_attr "type" "push"))
11556 +  "atom-dual-2c")
11557 +
11558 +;; pop r64 is 1 cycle. UCODE if segreg, ignored
11559 +(define_insn_reservation  "atom_pop" 1
11560 +  (and (eq_attr "cpu" "atom")
11561 +       (and (eq_attr "type" "pop")
11562 +            (eq_attr "mode" "DI")))
11563 +  "atom-dual-1c")
11564 +
11565 +;; pop non-r64 is 2 cycles. UCODE if segreg, ignored
11566 +(define_insn_reservation  "atom_pop_2" 2
11567 +  (and (eq_attr "cpu" "atom")
11568 +       (and (eq_attr "type" "pop")
11569 +            (eq_attr "mode" "!DI")))
11570 +  "atom-dual-2c")
11571 +
11572 +;; UCODE if segreg, ignored
11573 +(define_insn_reservation  "atom_call" 1
11574 +  (and (eq_attr "cpu" "atom")
11575 +       (eq_attr "type" "call"))
11576 +  "atom-dual-1c")
11577 +
11578 +(define_insn_reservation  "atom_callv" 1
11579 +  (and (eq_attr "cpu" "atom")
11580 +       (eq_attr "type" "callv"))
11581 +  "atom-dual-1c")
11582 +
11583 +(define_insn_reservation  "atom_leave" 3
11584 +  (and (eq_attr "cpu" "atom")
11585 +       (eq_attr "type" "leave"))
11586 +  "atom-complex, atom-all-eu*2")
11587 +
11588 +(define_insn_reservation  "atom_str" 3
11589 +  (and (eq_attr "cpu" "atom")
11590 +       (eq_attr "type" "str"))
11591 +  "atom-complex, atom-all-eu*2")
11592 +
11593 +(define_insn_reservation  "atom_sselog" 1
11594 +  (and (eq_attr "cpu" "atom")
11595 +       (and (eq_attr "type" "sselog")
11596 +            (eq_attr "memory" "none")))
11597 +  "atom-simple-either")
11598 +
11599 +(define_insn_reservation  "atom_sselog_mem" 1
11600 +  (and (eq_attr "cpu" "atom")
11601 +       (and (eq_attr "type" "sselog")
11602 +            (eq_attr "memory" "!none")))
11603 +  "atom-simple-either")
11604 +
11605 +(define_insn_reservation  "atom_sselog1" 1
11606 +  (and (eq_attr "cpu" "atom")
11607 +       (and (eq_attr "type" "sselog1")
11608 +            (eq_attr "memory" "none")))
11609 +  "atom-simple-0")
11610 +
11611 +(define_insn_reservation  "atom_sselog1_mem" 1
11612 +  (and (eq_attr "cpu" "atom")
11613 +       (and (eq_attr "type" "sselog1")
11614 +            (eq_attr "memory" "!none")))
11615 +  "atom-simple-0")
11616 +
11617 +;; not pmad, not psad
11618 +(define_insn_reservation  "atom_sseiadd" 1
11619 +  (and (eq_attr "cpu" "atom")
11620 +       (and (eq_attr "type" "sseiadd")
11621 +            (and (not (match_operand:V2DI 0 "register_operand"))
11622 +                 (and (eq_attr "atom_unit" "!simul")
11623 +                      (eq_attr "atom_unit" "!complex")))))
11624 +  "atom-simple-either")
11625 +
11626 +;; pmad, psad and 64
11627 +(define_insn_reservation  "atom_sseiadd_2" 4
11628 +  (and (eq_attr "cpu" "atom")
11629 +       (and (eq_attr "type" "sseiadd")
11630 +            (and (not (match_operand:V2DI 0 "register_operand"))
11631 +                 (and (eq_attr "atom_unit" "simul" )
11632 +                      (eq_attr "mode" "DI")))))
11633 +  "atom-fmul-4c")
11634 +
11635 +;; pmad, psad and 128
11636 +(define_insn_reservation  "atom_sseiadd_3" 5
11637 +  (and (eq_attr "cpu" "atom")
11638 +       (and (eq_attr "type" "sseiadd")
11639 +            (and (not (match_operand:V2DI 0 "register_operand"))
11640 +                 (and (eq_attr "atom_unit" "simul" )
11641 +                      (eq_attr "mode" "TI")))))
11642 +  "atom-fmul-5c")
11643 +
11644 +;; if paddq(64 bit op), phadd/phsub
11645 +(define_insn_reservation  "atom_sseiadd_4" 6
11646 +  (and (eq_attr "cpu" "atom")
11647 +       (and (eq_attr "type" "sseiadd")
11648 +            (ior (match_operand:V2DI 0 "register_operand")
11649 +                 (eq_attr "atom_unit" "complex"))))
11650 +  "atom-complex, atom-all-eu*5")
11651 +
11652 +;; if immediate op. 
11653 +(define_insn_reservation  "atom_sseishft" 1
11654 +  (and (eq_attr "cpu" "atom")
11655 +       (and (eq_attr "type" "sseishft")
11656 +            (and (eq_attr "atom_unit" "!sishuf")
11657 +                 (match_operand 2 "immediate_operand"))))
11658 +  "atom-simple-either")
11659 +
11660 +;; if palignr or psrldq
11661 +(define_insn_reservation  "atom_sseishft_2" 1
11662 +  (and (eq_attr "cpu" "atom")
11663 +       (and (eq_attr "type" "sseishft")
11664 +            (and (eq_attr "atom_unit" "sishuf")
11665 +                 (match_operand 2 "immediate_operand"))))
11666 +  "atom-simple-0")
11667 +
11668 +;; if reg/mem op
11669 +(define_insn_reservation  "atom_sseishft_3" 2
11670 +  (and (eq_attr "cpu" "atom")
11671 +       (and (eq_attr "type" "sseishft")
11672 +            (not (match_operand 2 "immediate_operand"))))
11673 +  "atom-complex, atom-all-eu")
11674 +
11675 +(define_insn_reservation  "atom_sseimul" 1
11676 +  (and (eq_attr "cpu" "atom")
11677 +       (eq_attr "type" "sseimul"))
11678 +  "atom-simple-0")
11679 +
11680 +;; rcpss or rsqrtss
11681 +(define_insn_reservation  "atom_sse" 4
11682 +  (and (eq_attr "cpu" "atom")
11683 +       (and (eq_attr "type" "sse")
11684 +            (and (eq_attr "atom_sse_attr" "rcp") (eq_attr "mode" "SF"))))
11685 +  "atom-fmul-4c")
11686 +
11687 +;; movshdup, movsldup. Suggest to type sseishft
11688 +(define_insn_reservation  "atom_sse_2" 1
11689 +  (and (eq_attr "cpu" "atom")
11690 +       (and (eq_attr "type" "sse")
11691 +            (eq_attr "atom_sse_attr" "movdup")))
11692 +  "atom-simple-0")
11693 +
11694 +;; lfence
11695 +(define_insn_reservation  "atom_sse_3" 1
11696 +  (and (eq_attr "cpu" "atom")
11697 +       (and (eq_attr "type" "sse")
11698 +            (eq_attr "atom_sse_attr" "lfence")))
11699 +  "atom-simple-either")
11700 +
11701 +;; sfence,clflush,mfence, prefetch
11702 +(define_insn_reservation  "atom_sse_4" 1
11703 +  (and (eq_attr "cpu" "atom")
11704 +       (and (eq_attr "type" "sse")
11705 +            (ior (eq_attr "atom_sse_attr" "fence")
11706 +                 (eq_attr "atom_sse_attr" "prefetch"))))
11707 +  "atom-simple-0")
11708 +
11709 +;; rcpps, rsqrtss, sqrt, ldmxcsr
11710 +(define_insn_reservation  "atom_sse_5" 7
11711 +  (and (eq_attr "cpu" "atom")
11712 +       (and (eq_attr "type" "sse")
11713 +            (ior (ior (eq_attr "atom_sse_attr" "sqrt")
11714 +                      (eq_attr "atom_sse_attr" "mxcsr"))
11715 +                 (and (eq_attr "atom_sse_attr" "rcp")
11716 +                      (eq_attr "mode" "V4SF")))))
11717 +  "atom-complex, atom-all-eu*6")
11718 +
11719 +;; xmm->xmm
11720 +(define_insn_reservation  "atom_ssemov" 1
11721 +  (and (eq_attr "cpu" "atom")
11722 +       (and (eq_attr "type" "ssemov")
11723 +            (and (match_operand 0 "register_operand" "xy") (match_operand 1 "register_operand" "xy"))))
11724 +  "atom-simple-either")
11725 +
11726 +;; reg->xmm
11727 +(define_insn_reservation  "atom_ssemov_2" 1
11728 +  (and (eq_attr "cpu" "atom")
11729 +       (and (eq_attr "type" "ssemov")
11730 +            (and (match_operand 0 "register_operand" "xy") (match_operand 1 "register_operand" "r"))))
11731 +  "atom-simple-0")
11732 +
11733 +;; xmm->reg
11734 +(define_insn_reservation  "atom_ssemov_3" 3
11735 +  (and (eq_attr "cpu" "atom")
11736 +       (and (eq_attr "type" "ssemov")
11737 +            (and (match_operand 0 "register_operand" "r") (match_operand 1 "register_operand" "xy"))))
11738 +  "atom-eu-0-3-1")
11739 +
11740 +;; mov mem
11741 +(define_insn_reservation  "atom_ssemov_4" 1
11742 +  (and (eq_attr "cpu" "atom")
11743 +       (and (eq_attr "type" "ssemov")
11744 +            (and (eq_attr "movu" "0") (eq_attr "memory" "!none"))))
11745 +  "atom-simple-0")
11746 +
11747 +;; movu mem
11748 +(define_insn_reservation  "atom_ssemov_5" 2
11749 +  (and (eq_attr "cpu" "atom")
11750 +       (and (eq_attr "type" "ssemov")
11751 +            (ior (eq_attr "movu" "1") (eq_attr "memory" "!none"))))
11752 +  "atom-complex, atom-all-eu")
11753 +
11754 +;; no memory simple
11755 +(define_insn_reservation  "atom_sseadd" 5
11756 +  (and (eq_attr "cpu" "atom")
11757 +       (and (eq_attr "type" "sseadd")
11758 +            (and (eq_attr "memory" "none")
11759 +                 (and (eq_attr "mode" "!V2DF")
11760 +                      (eq_attr "atom_unit" "!complex")))))
11761 +  "atom-fadd-5c")
11762 +
11763 +;; memory simple
11764 +(define_insn_reservation  "atom_sseadd_mem" 5
11765 +  (and (eq_attr "cpu" "atom")
11766 +       (and (eq_attr "type" "sseadd")
11767 +            (and (eq_attr "memory" "!none")
11768 +                 (and (eq_attr "mode" "!V2DF")
11769 +                      (eq_attr "atom_unit" "!complex")))))
11770 +  "atom-dual-5c")
11771 +
11772 +;; maxps, minps, *pd, hadd, hsub
11773 +(define_insn_reservation  "atom_sseadd_3" 8
11774 +  (and (eq_attr "cpu" "atom")
11775 +       (and (eq_attr "type" "sseadd")
11776 +            (ior (eq_attr "mode" "V2DF") (eq_attr "atom_unit" "complex"))))
11777 +  "atom-complex, atom-all-eu*7")
11778 +
11779 +;; Except dppd/dpps
11780 +(define_insn_reservation  "atom_ssemul" 5
11781 +  (and (eq_attr "cpu" "atom")
11782 +       (and (eq_attr "type" "ssemul")
11783 +            (eq_attr "mode" "!SF")))
11784 +  "atom-fmul-5c")
11785 +
11786 +;; Except dppd/dpps, 4 cycle if mulss
11787 +(define_insn_reservation  "atom_ssemul_2" 4
11788 +  (and (eq_attr "cpu" "atom")
11789 +       (and (eq_attr "type" "ssemul")
11790 +            (eq_attr "mode" "SF")))
11791 +  "atom-fmul-4c")
11792 +
11793 +(define_insn_reservation  "atom_ssecmp" 1
11794 +  (and (eq_attr "cpu" "atom")
11795 +       (eq_attr "type" "ssecmp"))
11796 +  "atom-simple-either")
11797 +
11798 +(define_insn_reservation  "atom_ssecomi" 10
11799 +  (and (eq_attr "cpu" "atom")
11800 +       (eq_attr "type" "ssecomi"))
11801 +  "atom-complex, atom-all-eu*9")
11802 +
11803 +;; no memory and cvtpi2ps, cvtps2pi, cvttps2pi
11804 +(define_insn_reservation  "atom_ssecvt" 5
11805 +  (and (eq_attr "cpu" "atom")
11806 +       (and (eq_attr "type" "ssecvt")
11807 +            (ior (and (match_operand:V2SI 0 "register_operand")
11808 +                      (match_operand:V4SF 1 "register_operand"))
11809 +                 (and (match_operand:V4SF 0 "register_operand")
11810 +                      (match_operand:V2SI 1 "register_operand")))))
11811 +  "atom-fadd-5c")
11812 +
11813 +;; memory and cvtpi2ps, cvtps2pi, cvttps2pi
11814 +(define_insn_reservation  "atom_ssecvt_2" 5
11815 +  (and (eq_attr "cpu" "atom")
11816 +       (and (eq_attr "type" "ssecvt")
11817 +            (ior (and (match_operand:V2SI 0 "register_operand")
11818 +                      (match_operand:V4SF 1 "memory_operand"))
11819 +                 (and (match_operand:V4SF 0 "register_operand")
11820 +                      (match_operand:V2SI 1 "memory_operand")))))
11821 +  "atom-dual-5c")
11822 +
11823 +;; otherwise. 7 cycles average for cvtss2sd
11824 +(define_insn_reservation  "atom_ssecvt_3" 7
11825 +  (and (eq_attr "cpu" "atom")
11826 +       (and (eq_attr "type" "ssecvt")
11827 +            (not (ior (and (match_operand:V2SI 0 "register_operand")
11828 +                           (match_operand:V4SF 1 "nonimmediate_operand"))
11829 +                      (and (match_operand:V4SF 0 "register_operand")
11830 +                           (match_operand:V2SI 1 "nonimmediate_operand"))))))
11831 +  "atom-complex, atom-all-eu*6")
11832 +
11833 +;; memory and cvtsi2sd
11834 +(define_insn_reservation  "atom_sseicvt" 5
11835 +  (and (eq_attr "cpu" "atom")
11836 +       (and (eq_attr "type" "sseicvt")
11837 +            (and (match_operand:V2DF 0 "register_operand")
11838 +                 (match_operand:SI 1 "memory_operand"))))
11839 +  "atom-dual-5c")
11840 +
11841 +;; otherwise. 8 cycles average for cvtsd2si
11842 +(define_insn_reservation  "atom_sseicvt_2" 8
11843 +  (and (eq_attr "cpu" "atom")
11844 +       (and (eq_attr "type" "sseicvt")
11845 +            (not (and (match_operand:V2DF 0 "register_operand")
11846 +                      (match_operand:SI 1 "memory_operand")))))
11847 +  "atom-complex, atom-all-eu*7")
11848 +
11849 +(define_insn_reservation  "atom_ssediv" 62
11850 +  (and (eq_attr "cpu" "atom")
11851 +       (eq_attr "type" "ssediv"))
11852 +  "atom-complex, atom-all-eu*12, nothing*49")
11853 +
11854 +;; simple for fmov
11855 +(define_insn_reservation  "atom_fmov" 1
11856 +  (and (eq_attr "cpu" "atom")
11857 +       (and (eq_attr "type" "fmov")
11858 +            (eq_attr "memory" "none")))
11859 +  "atom-simple-either")
11860 +
11861 +;; simple for fmov
11862 +(define_insn_reservation  "atom_fmov_mem" 1
11863 +  (and (eq_attr "cpu" "atom")
11864 +       (and (eq_attr "type" "fmov")
11865 +            (eq_attr "memory" "!none")))
11866 +  "atom-simple-either")
11867 +
11868 +;; Define bypass here
11869 +
11870 +;; There will be no stall from lea to non-mem EX insns
11871 +(define_bypass 0 "atom_lea"
11872 +                 "atom_alu_carry,
11873 +                  atom_alu,atom_alu1,atom_negnot,atom_imov,atom_imovx,
11874 +                  atom_incdec, atom_setcc, atom_icmov, atom_pop")
11875 +
11876 +(define_bypass 0 "atom_lea"
11877 +                 "atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem,
11878 +                  atom_imovx_mem, atom_imovx_2_mem,
11879 +                  atom_imov_mem, atom_icmov_mem, atom_fmov_mem"
11880 +                 "!ix86_agi_dependent")
11881 +
11882 +;; There will be 3 cycles stall from EX insns to AGAN insns LEA
11883 +(define_bypass 4 "atom_alu_carry,
11884 +                  atom_alu,atom_alu1,atom_negnot,atom_imov,atom_imovx,
11885 +                  atom_incdec,atom_ishift,atom_ishift1,atom_rotate,
11886 +                  atom_rotate1, atom_setcc, atom_icmov, atom_pop,
11887 +                  atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem,
11888 +                  atom_imovx_mem, atom_imovx_2_mem,
11889 +                  atom_imov_mem, atom_icmov_mem, atom_fmov_mem"
11890 +                 "atom_lea")
11891 +
11892 +;; There will be 3 cycles stall from EX insns to insns need addr calculation
11893 +(define_bypass 4 "atom_alu_carry,
11894 +                  atom_alu,atom_alu1,atom_negnot,atom_imov,atom_imovx,
11895 +                  atom_incdec,atom_ishift,atom_ishift1,atom_rotate,
11896 +                  atom_rotate1, atom_setcc, atom_icmov, atom_pop,
11897 +                  atom_imovx_mem, atom_imovx_2_mem,
11898 +                  atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem,
11899 +                  atom_imov_mem, atom_icmov_mem, atom_fmov_mem"
11900 +                 "atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem,
11901 +                  atom_negnot_mem, atom_imov_mem, atom_incdec_mem,
11902 +                  atom_imovx_mem, atom_imovx_2_mem,
11903 +                  atom_imul_mem, atom_icmp_mem,
11904 +                  atom_test_mem, atom_icmov_mem, atom_sselog_mem,
11905 +                  atom_sselog1_mem, atom_fmov_mem, atom_sseadd_mem,
11906 +                  atom_ishift_mem, atom_ishift1_mem, 
11907 +                  atom_rotate_mem, atom_rotate1_mem"
11908 +                  "ix86_agi_dependent")
11909 +
11910 +;; Stall from imul to lea is 8 cycles.
11911 +(define_bypass 9 "atom_imul, atom_imul_mem" "atom_lea")
11912 +
11913 +;; Stall from imul to memory address is 8 cycles.
11914 +(define_bypass 9 "atom_imul, atom_imul_mem" 
11915 +                 "atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem,
11916 +                  atom_negnot_mem, atom_imov_mem, atom_incdec_mem,
11917 +                  atom_ishift_mem, atom_ishift1_mem, atom_rotate_mem,
11918 +                  atom_rotate1_mem, atom_imul_mem, atom_icmp_mem,
11919 +                  atom_test_mem, atom_icmov_mem, atom_sselog_mem,
11920 +                  atom_sselog1_mem, atom_fmov_mem, atom_sseadd_mem"
11921 +                  "ix86_agi_dependent")
11922 +
11923 +;; There will be 0 cycle stall from cmp/test to jcc
11924 +
11925 +;; There will be 1 cycle stall from flag producer to cmov and adc/sbb
11926 +(define_bypass 2 "atom_icmp, atom_test, atom_alu, atom_alu_carry,
11927 +                  atom_alu1, atom_negnot, atom_incdec, atom_ishift,
11928 +                  atom_ishift1, atom_rotate, atom_rotate1"
11929 +                 "atom_icmov, atom_alu_carry")
11930 +
11931 +;; lea to shift count stall is 2 cycles
11932 +(define_bypass 3 "atom_lea"
11933 +                 "atom_ishift, atom_ishift1, atom_rotate, atom_rotate1,
11934 +                  atom_ishift_mem, atom_ishift1_mem, 
11935 +                  atom_rotate_mem, atom_rotate1_mem"
11936 +                 "ix86_dep_by_shift_count")
11937 +
11938 +;; lea to shift source stall is 1 cycle
11939 +(define_bypass 2 "atom_lea"
11940 +                 "atom_ishift, atom_ishift1, atom_rotate, atom_rotate1"
11941 +                 "!ix86_dep_by_shift_count")
11942 +
11943 +;; non-lea to shift count stall is 1 cycle
11944 +(define_bypass 2 "atom_alu_carry,
11945 +                  atom_alu,atom_alu1,atom_negnot,atom_imov,atom_imovx,
11946 +                  atom_incdec,atom_ishift,atom_ishift1,atom_rotate,
11947 +                  atom_rotate1, atom_setcc, atom_icmov, atom_pop,
11948 +                  atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem,
11949 +                  atom_imovx_mem, atom_imovx_2_mem,
11950 +                  atom_imov_mem, atom_icmov_mem, atom_fmov_mem"
11951 +                 "atom_ishift, atom_ishift1, atom_rotate, atom_rotate1,
11952 +                  atom_ishift_mem, atom_ishift1_mem, 
11953 +                  atom_rotate_mem, atom_rotate1_mem"
11954 +                 "ix86_dep_by_shift_count")
11955 diff -Nur a/gcc/config/i386/cpuid.h b/gcc/config/i386/cpuid.h
11956 --- a/gcc/config/i386/cpuid.h   2009-04-10 01:23:07.000000000 +0200
11957 +++ b/gcc/config/i386/cpuid.h   2010-01-25 09:50:28.995687913 +0100
11958 @@ -29,6 +29,7 @@
11959  #define bit_CMPXCHG16B (1 << 13)
11960  #define bit_SSE4_1     (1 << 19)
11961  #define bit_SSE4_2     (1 << 20)
11962 +#define bit_MOVBE      (1 << 22)
11963  #define bit_POPCNT     (1 << 23)
11964  #define bit_AES                (1 << 25)
11965  #define bit_XSAVE      (1 << 26)
11966 diff -Nur a/gcc/config/i386/cs-linux.h b/gcc/config/i386/cs-linux.h
11967 --- a/gcc/config/i386/cs-linux.h        1970-01-01 01:00:00.000000000 +0100
11968 +++ b/gcc/config/i386/cs-linux.h        2010-01-25 09:50:28.995687913 +0100
11969 @@ -0,0 +1,41 @@
11970 +/* Sourcery G++ IA32 GNU/Linux Configuration.
11971 +   Copyright (C) 2007
11972 +   Free Software Foundation, Inc.
11973 +
11974 +This file is part of GCC.
11975 +
11976 +GCC is free software; you can redistribute it and/or modify
11977 +it under the terms of the GNU General Public License as published by
11978 +the Free Software Foundation; either version 3, or (at your option)
11979 +any later version.
11980 +
11981 +GCC is distributed in the hope that it will be useful,
11982 +but WITHOUT ANY WARRANTY; without even the implied warranty of
11983 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11984 +GNU General Public License for more details.
11985 +
11986 +You should have received a copy of the GNU General Public License
11987 +along with GCC; see the file COPYING3.  If not see
11988 +<http://www.gnu.org/licenses/>.  */
11989 +
11990 +/* This configuration may be used either with the system glibc (in
11991 +   system32 and system64 subdirectories) or with the included glibc
11992 +   (in the sgxx-glibc subdirectory).  */
11993 +
11994 +#undef SYSROOT_SUFFIX_SPEC
11995 +#define SYSROOT_SUFFIX_SPEC                    \
11996 +  "%{msgxx-glibc:/sgxx-glibc ;                 \
11997 +     m64:/system64 ;                           \
11998 +     mrhel3:/system64 ;                                \
11999 +     mrh73:/system32-old ;                     \
12000 +     :/system32}"
12001 +
12002 +#undef SYSROOT_HEADERS_SUFFIX_SPEC
12003 +#define SYSROOT_HEADERS_SUFFIX_SPEC SYSROOT_SUFFIX_SPEC
12004 +
12005 +/* See mips/wrs-linux.h for details on this use of
12006 +   STARTFILE_PREFIX_SPEC.  */
12007 +#undef STARTFILE_PREFIX_SPEC
12008 +#define STARTFILE_PREFIX_SPEC                          \
12009 +  "%{m64: /usr/local/lib64/ /lib64/ /usr/lib64/}       \
12010 +   %{!m64: /usr/local/lib/ /lib/ /usr/lib/}"
12011 diff -Nur a/gcc/config/i386/cs-linux-lite.h b/gcc/config/i386/cs-linux-lite.h
12012 --- a/gcc/config/i386/cs-linux-lite.h   1970-01-01 01:00:00.000000000 +0100
12013 +++ b/gcc/config/i386/cs-linux-lite.h   2010-01-25 09:50:28.995687913 +0100
12014 @@ -0,0 +1,31 @@
12015 +/* Sourcery G++ Lite IA32 GNU/Linux Configuration.
12016 +   Copyright (C) 2009
12017 +   Free Software Foundation, Inc.
12018 +
12019 +This file is part of GCC.
12020 +
12021 +GCC is free software; you can redistribute it and/or modify
12022 +it under the terms of the GNU General Public License as published by
12023 +the Free Software Foundation; either version 3, or (at your option)
12024 +any later version.
12025 +
12026 +GCC is distributed in the hope that it will be useful,
12027 +but WITHOUT ANY WARRANTY; without even the implied warranty of
12028 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12029 +GNU General Public License for more details.
12030 +
12031 +You should have received a copy of the GNU General Public License
12032 +along with GCC; see the file COPYING3.  If not see
12033 +<http://www.gnu.org/licenses/>.  */
12034 +
12035 +#undef SYSROOT_SUFFIX_SPEC
12036 +#define SYSROOT_SUFFIX_SPEC                    \
12037 +  "%{march=atom:%{!m64:/atom} ;                        \
12038 +     march=core2:%{m64:/core2}}"
12039 +
12040 +/* See mips/wrs-linux.h for details on this use of
12041 +   STARTFILE_PREFIX_SPEC.  */
12042 +#undef STARTFILE_PREFIX_SPEC
12043 +#define STARTFILE_PREFIX_SPEC                          \
12044 +  "%{m64: /usr/local/lib64/ /lib64/ /usr/lib64/}       \
12045 +   %{!m64: /usr/local/lib/ /lib/ /usr/lib/}"
12046 diff -Nur a/gcc/config/i386/cs-linux.opt b/gcc/config/i386/cs-linux.opt
12047 --- a/gcc/config/i386/cs-linux.opt      1970-01-01 01:00:00.000000000 +0100
12048 +++ b/gcc/config/i386/cs-linux.opt      2010-01-25 09:50:28.995687913 +0100
12049 @@ -0,0 +1,11 @@
12050 +; Additional options for Sourcery G++.
12051 +
12052 +mrh73
12053 +Target Undocumented
12054 +
12055 +mrhel3
12056 +Target Undocumented
12057 +
12058 +msgxx-glibc
12059 +Target
12060 +Use included version of GLIBC
12061 diff -Nur a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h
12062 --- a/gcc/config/i386/cygming.h 2009-07-12 17:56:41.000000000 +0200
12063 +++ b/gcc/config/i386/cygming.h 2010-01-25 09:50:28.995687913 +0100
12064 @@ -34,7 +34,7 @@
12065  #endif
12066  
12067  #undef TARGET_64BIT_MS_ABI
12068 -#define TARGET_64BIT_MS_ABI (!cfun ? DEFAULT_ABI == MS_ABI : TARGET_64BIT && cfun->machine->call_abi == MS_ABI)
12069 +#define TARGET_64BIT_MS_ABI (!cfun ? ix86_abi == MS_ABI : TARGET_64BIT && cfun->machine->call_abi == MS_ABI)
12070  
12071  #undef DEFAULT_ABI
12072  #define DEFAULT_ABI (TARGET_64BIT ? MS_ABI : SYSV_ABI)
12073 @@ -203,7 +203,7 @@
12074  #define CHECK_STACK_LIMIT 4000
12075  
12076  #undef STACK_BOUNDARY
12077 -#define STACK_BOUNDARY (DEFAULT_ABI == MS_ABI ? 128 : BITS_PER_WORD)
12078 +#define STACK_BOUNDARY (ix86_abi == MS_ABI ? 128 : BITS_PER_WORD)
12079  
12080  /* By default, target has a 80387, uses IEEE compatible arithmetic,
12081     returns float values in the 387 and needs stack probes.
12082 diff -Nur a/gcc/config/i386/cygming.opt b/gcc/config/i386/cygming.opt
12083 --- a/gcc/config/i386/cygming.opt       2007-08-02 12:49:31.000000000 +0200
12084 +++ b/gcc/config/i386/cygming.opt       2010-01-25 09:50:28.995687913 +0100
12085 @@ -45,3 +45,7 @@
12086  mwindows
12087  Target
12088  Create GUI application
12089 +
12090 +mpe-aligned-commons
12091 +Target Var(use_pe_aligned_common) Init(HAVE_GAS_ALIGNED_COMM)
12092 +Use the GNU extension to the PE format for aligned common data
12093 diff -Nur a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c
12094 --- a/gcc/config/i386/driver-i386.c     2009-05-27 16:54:00.000000000 +0200
12095 +++ b/gcc/config/i386/driver-i386.c     2010-01-25 09:50:29.005686600 +0100
12096 @@ -378,7 +378,7 @@
12097    /* Extended features */
12098    unsigned int has_lahf_lm = 0, has_sse4a = 0;
12099    unsigned int has_longmode = 0, has_3dnowp = 0, has_3dnow = 0;
12100 -  unsigned int has_sse4_1 = 0, has_sse4_2 = 0;
12101 +  unsigned int has_movbe = 0, has_sse4_1 = 0, has_sse4_2 = 0;
12102    unsigned int has_popcnt = 0, has_aes = 0, has_avx = 0;
12103    unsigned int has_pclmul = 0;
12104  
12105 @@ -398,9 +398,22 @@
12106  
12107    __cpuid (1, eax, ebx, ecx, edx);
12108  
12109 -  /* We don't care for extended family.  */
12110    model = (eax >> 4) & 0x0f;
12111    family = (eax >> 8) & 0x0f;
12112 +  if (vendor == SIG_INTEL)
12113 +    {
12114 +      unsigned int extended_model, extended_family;
12115 +
12116 +      extended_model = (eax >> 12) & 0xf0;
12117 +      extended_family = (eax >> 20) & 0xff;
12118 +      if (family == 0x0f)
12119 +       {
12120 +         family += extended_family;
12121 +         model += extended_model;
12122 +       }
12123 +      else if (family == 0x06)
12124 +       model += extended_model;
12125 +    }
12126  
12127    has_sse3 = ecx & bit_SSE3;
12128    has_ssse3 = ecx & bit_SSSE3;
12129 @@ -408,6 +421,7 @@
12130    has_sse4_2 = ecx & bit_SSE4_2;
12131    has_avx = ecx & bit_AVX;
12132    has_cmpxchg16b = ecx & bit_CMPXCHG16B;
12133 +  has_movbe = ecx & bit_MOVBE;
12134    has_popcnt = ecx & bit_POPCNT;
12135    has_aes = ecx & bit_AES;
12136    has_pclmul = ecx & bit_PCLMUL;
12137 @@ -505,8 +519,8 @@
12138        break;
12139      case PROCESSOR_PENTIUMPRO:
12140        if (has_longmode)
12141 -       /* It is Core 2 Duo.  */
12142 -       cpu = "core2";
12143 +       /* It is Core 2 or Atom.  */
12144 +       cpu = (model == 28) ? "atom" : "core2";
12145        else if (arch)
12146         {
12147           if (has_sse3)
12148 @@ -597,6 +611,8 @@
12149         options = concat (options, "-mcx16 ", NULL);
12150        if (has_lahf_lm)
12151         options = concat (options, "-msahf ", NULL);
12152 +      if (has_movbe)
12153 +       options = concat (options, "-mmovbe ", NULL);
12154        if (has_aes)
12155         options = concat (options, "-maes ", NULL);
12156        if (has_pclmul)
12157 diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
12158 --- a/gcc/config/i386/i386.c    2009-07-21 09:22:51.000000000 +0200
12159 +++ b/gcc/config/i386/i386.c    2010-01-25 09:50:29.005686600 +0100
12160 @@ -1036,6 +1036,79 @@
12161    1,                                    /* cond_not_taken_branch_cost.  */
12162  };
12163  
12164 +static const
12165 +struct processor_costs atom_cost = {
12166 +  COSTS_N_INSNS (1),                   /* cost of an add instruction */
12167 +  COSTS_N_INSNS (1) + 1,               /* cost of a lea instruction */
12168 +  COSTS_N_INSNS (1),                   /* variable shift costs */
12169 +  COSTS_N_INSNS (1),                   /* constant shift costs */
12170 +  {COSTS_N_INSNS (3),                  /* cost of starting multiply for QI */
12171 +   COSTS_N_INSNS (4),                  /*                               HI */
12172 +   COSTS_N_INSNS (3),                  /*                               SI */
12173 +   COSTS_N_INSNS (4),                  /*                               DI */
12174 +   COSTS_N_INSNS (2)},                 /*                               other */
12175 +  0,                                   /* cost of multiply per each bit set */
12176 +  {COSTS_N_INSNS (18),                 /* cost of a divide/mod for QI */
12177 +   COSTS_N_INSNS (26),                 /*                          HI */
12178 +   COSTS_N_INSNS (42),                 /*                          SI */
12179 +   COSTS_N_INSNS (74),                 /*                          DI */
12180 +   COSTS_N_INSNS (74)},                        /*                          other */
12181 +  COSTS_N_INSNS (1),                   /* cost of movsx */
12182 +  COSTS_N_INSNS (1),                   /* cost of movzx */
12183 +  8,                                   /* "large" insn */
12184 +  17,                                  /* MOVE_RATIO */
12185 +  2,                                   /* cost for loading QImode using movzbl */
12186 +  {4, 4, 4},                           /* cost of loading integer registers
12187 +                                          in QImode, HImode and SImode.
12188 +                                          Relative to reg-reg move (2).  */
12189 +  {4, 4, 4},                           /* cost of storing integer registers */
12190 +  4,                                   /* cost of reg,reg fld/fst */
12191 +  {12, 12, 12},                                /* cost of loading fp registers
12192 +                                          in SFmode, DFmode and XFmode */
12193 +  {6, 6, 8},                           /* cost of storing fp registers
12194 +                                          in SFmode, DFmode and XFmode */
12195 +  2,                                   /* cost of moving MMX register */
12196 +  {8, 8},                              /* cost of loading MMX registers
12197 +                                          in SImode and DImode */
12198 +  {8, 8},                              /* cost of storing MMX registers
12199 +                                          in SImode and DImode */
12200 +  2,                                   /* cost of moving SSE register */
12201 +  {8, 8, 8},                           /* cost of loading SSE registers
12202 +                                          in SImode, DImode and TImode */
12203 +  {8, 8, 8},                           /* cost of storing SSE registers
12204 +                                          in SImode, DImode and TImode */
12205 +  5,                                   /* MMX or SSE register to integer */
12206 +  32,                                  /* size of l1 cache.  */
12207 +  256,                                 /* size of l2 cache.  */
12208 +  64,                                  /* size of prefetch block */
12209 +  6,                                   /* number of parallel prefetches */
12210 +  3,                                   /* Branch cost */
12211 +  COSTS_N_INSNS (8),                   /* cost of FADD and FSUB insns.  */
12212 +  COSTS_N_INSNS (8),                   /* cost of FMUL instruction.  */
12213 +  COSTS_N_INSNS (20),                  /* cost of FDIV instruction.  */
12214 +  COSTS_N_INSNS (8),                   /* cost of FABS instruction.  */
12215 +  COSTS_N_INSNS (8),                   /* cost of FCHS instruction.  */
12216 +  COSTS_N_INSNS (40),                  /* cost of FSQRT instruction.  */
12217 +  {{libcall, {{11, loop}, {-1, rep_prefix_4_byte}}},
12218 +   {libcall, {{32, loop}, {64, rep_prefix_4_byte},
12219 +          {8192, rep_prefix_8_byte}, {-1, libcall}}}},
12220 +  {{libcall, {{8, loop}, {15, unrolled_loop},
12221 +          {2048, rep_prefix_4_byte}, {-1, libcall}}},
12222 +   {libcall, {{24, loop}, {32, unrolled_loop},
12223 +          {8192, rep_prefix_8_byte}, {-1, libcall}}}},
12224 +  1,                                    /* scalar_stmt_cost.  */
12225 +  1,                                    /* scalar load_cost.  */
12226 +  1,                                    /* scalar_store_cost.  */
12227 +  1,                                    /* vec_stmt_cost.  */
12228 +  1,                                    /* vec_to_scalar_cost.  */
12229 +  1,                                    /* scalar_to_vec_cost.  */
12230 +  1,                                    /* vec_align_load_cost.  */
12231 +  2,                                    /* vec_unalign_load_cost.  */
12232 +  1,                                    /* vec_store_cost.  */
12233 +  3,                                    /* cond_taken_branch_cost.  */
12234 +  1,                                    /* cond_not_taken_branch_cost.  */
12235 +};
12236 +
12237  /* Generic64 should produce code tuned for Nocona and K8.  */
12238  static const
12239  struct processor_costs generic64_cost = {
12240 @@ -1194,6 +1267,7 @@
12241  #define m_PENT4  (1<<PROCESSOR_PENTIUM4)
12242  #define m_NOCONA  (1<<PROCESSOR_NOCONA)
12243  #define m_CORE2  (1<<PROCESSOR_CORE2)
12244 +#define m_ATOM  (1<<PROCESSOR_ATOM)
12245  
12246  #define m_GEODE  (1<<PROCESSOR_GEODE)
12247  #define m_K6  (1<<PROCESSOR_K6)
12248 @@ -1231,10 +1305,11 @@
12249    m_486 | m_PENT,
12250  
12251    /* X86_TUNE_UNROLL_STRLEN */
12252 -  m_486 | m_PENT | m_PPRO | m_AMD_MULTIPLE | m_K6 | m_CORE2 | m_GENERIC,
12253 +  m_486 | m_PENT | m_ATOM | m_PPRO | m_AMD_MULTIPLE | m_K6
12254 +  | m_CORE2 | m_GENERIC,
12255  
12256    /* X86_TUNE_DEEP_BRANCH_PREDICTION */
12257 -  m_PPRO | m_K6_GEODE | m_AMD_MULTIPLE | m_PENT4 | m_GENERIC,
12258 +  m_ATOM | m_PPRO | m_K6_GEODE | m_AMD_MULTIPLE | m_PENT4 | m_GENERIC,
12259  
12260    /* X86_TUNE_BRANCH_PREDICTION_HINTS: Branch hints were put in P4 based
12261       on simulation result. But after P4 was made, no performance benefit
12262 @@ -1246,12 +1321,12 @@
12263    ~m_386,
12264  
12265    /* X86_TUNE_USE_SAHF */
12266 -  m_PPRO | m_K6_GEODE | m_K8 | m_AMDFAM10 | m_PENT4
12267 +  m_ATOM | m_PPRO | m_K6_GEODE | m_K8 | m_AMDFAM10 | m_PENT4
12268    | m_NOCONA | m_CORE2 | m_GENERIC,
12269  
12270    /* X86_TUNE_MOVX: Enable to zero extend integer registers to avoid
12271       partial dependencies.  */
12272 -  m_AMD_MULTIPLE | m_PPRO | m_PENT4 | m_NOCONA
12273 +  m_AMD_MULTIPLE | m_ATOM | m_PPRO | m_PENT4 | m_NOCONA
12274    | m_CORE2 | m_GENERIC | m_GEODE /* m_386 | m_K6 */,
12275  
12276    /* X86_TUNE_PARTIAL_REG_STALL: We probably ought to watch for partial
12277 @@ -1271,13 +1346,13 @@
12278    m_386 | m_486 | m_K6_GEODE,
12279  
12280    /* X86_TUNE_USE_SIMODE_FIOP */
12281 -  ~(m_PPRO | m_AMD_MULTIPLE | m_PENT | m_CORE2 | m_GENERIC),
12282 +  ~(m_PPRO | m_AMD_MULTIPLE | m_PENT | m_ATOM | m_CORE2 | m_GENERIC),
12283  
12284    /* X86_TUNE_USE_MOV0 */
12285    m_K6,
12286  
12287    /* X86_TUNE_USE_CLTD */
12288 -  ~(m_PENT | m_K6 | m_CORE2 | m_GENERIC),
12289 +  ~(m_PENT | m_ATOM | m_K6 | m_CORE2 | m_GENERIC),
12290  
12291    /* X86_TUNE_USE_XCHGB: Use xchgb %rh,%rl instead of rolw/rorw $8,rx.  */
12292    m_PENT4,
12293 @@ -1292,8 +1367,8 @@
12294    ~(m_PENT | m_PPRO),
12295  
12296    /* X86_TUNE_PROMOTE_QIMODE */
12297 -  m_K6_GEODE | m_PENT | m_386 | m_486 | m_AMD_MULTIPLE | m_CORE2
12298 -  | m_GENERIC /* | m_PENT4 ? */,
12299 +  m_K6_GEODE | m_PENT | m_ATOM | m_386 | m_486 | m_AMD_MULTIPLE
12300 +  | m_CORE2 | m_GENERIC /* | m_PENT4 ? */,
12301  
12302    /* X86_TUNE_FAST_PREFIX */
12303    ~(m_PENT | m_486 | m_386),
12304 @@ -1317,26 +1392,28 @@
12305    m_PPRO,
12306  
12307    /* X86_TUNE_ADD_ESP_4: Enable if add/sub is preferred over 1/2 push/pop.  */
12308 -  m_AMD_MULTIPLE | m_K6_GEODE | m_PENT4 | m_NOCONA | m_CORE2 | m_GENERIC,
12309 +  m_ATOM | m_AMD_MULTIPLE | m_K6_GEODE | m_PENT4 | m_NOCONA
12310 +  | m_CORE2 | m_GENERIC,
12311  
12312    /* X86_TUNE_ADD_ESP_8 */
12313 -  m_AMD_MULTIPLE | m_PPRO | m_K6_GEODE | m_386
12314 +  m_AMD_MULTIPLE | m_ATOM | m_PPRO | m_K6_GEODE | m_386
12315    | m_486 | m_PENT4 | m_NOCONA | m_CORE2 | m_GENERIC,
12316  
12317    /* X86_TUNE_SUB_ESP_4 */
12318 -  m_AMD_MULTIPLE | m_PPRO | m_PENT4 | m_NOCONA | m_CORE2 | m_GENERIC,
12319 +  m_AMD_MULTIPLE | m_ATOM | m_PPRO | m_PENT4 | m_NOCONA | m_CORE2
12320 +  | m_GENERIC,
12321  
12322    /* X86_TUNE_SUB_ESP_8 */
12323 -  m_AMD_MULTIPLE | m_PPRO | m_386 | m_486
12324 +  m_AMD_MULTIPLE | m_ATOM | m_PPRO | m_386 | m_486
12325    | m_PENT4 | m_NOCONA | m_CORE2 | m_GENERIC,
12326  
12327    /* X86_TUNE_INTEGER_DFMODE_MOVES: Enable if integer moves are preferred
12328       for DFmode copies */
12329 -  ~(m_AMD_MULTIPLE | m_PENT4 | m_NOCONA | m_PPRO | m_CORE2
12330 +  ~(m_AMD_MULTIPLE | m_ATOM | m_PENT4 | m_NOCONA | m_PPRO | m_CORE2
12331      | m_GENERIC | m_GEODE),
12332  
12333    /* X86_TUNE_PARTIAL_REG_DEPENDENCY */
12334 -  m_AMD_MULTIPLE | m_PENT4 | m_NOCONA | m_CORE2 | m_GENERIC,
12335 +  m_AMD_MULTIPLE | m_ATOM | m_PENT4 | m_NOCONA | m_CORE2 | m_GENERIC,
12336  
12337    /* X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY: In the Generic model we have a
12338       conflict here in between PPro/Pentium4 based chips that thread 128bit
12339 @@ -1347,7 +1424,8 @@
12340       shows that disabling this option on P4 brings over 20% SPECfp regression,
12341       while enabling it on K8 brings roughly 2.4% regression that can be partly
12342       masked by careful scheduling of moves.  */
12343 -  m_PENT4 | m_NOCONA | m_PPRO | m_CORE2 | m_GENERIC | m_AMDFAM10,
12344 +  m_ATOM | m_PENT4 | m_NOCONA | m_PPRO | m_CORE2 | m_GENERIC
12345 +  | m_AMDFAM10,
12346  
12347    /* X86_TUNE_SSE_UNALIGNED_MOVE_OPTIMAL */
12348    m_AMDFAM10,
12349 @@ -1365,13 +1443,13 @@
12350    m_PPRO | m_PENT4 | m_NOCONA,
12351  
12352    /* X86_TUNE_MEMORY_MISMATCH_STALL */
12353 -  m_AMD_MULTIPLE | m_PENT4 | m_NOCONA | m_CORE2 | m_GENERIC,
12354 +  m_AMD_MULTIPLE | m_ATOM | m_PENT4 | m_NOCONA | m_CORE2 | m_GENERIC,
12355  
12356    /* X86_TUNE_PROLOGUE_USING_MOVE */
12357 -  m_ATHLON_K8 | m_PPRO | m_CORE2 | m_GENERIC,
12358 +  m_ATHLON_K8 | m_ATOM | m_PPRO | m_CORE2 | m_GENERIC,
12359  
12360    /* X86_TUNE_EPILOGUE_USING_MOVE */
12361 -  m_ATHLON_K8 | m_PPRO | m_CORE2 | m_GENERIC,
12362 +  m_ATHLON_K8 | m_ATOM | m_PPRO | m_CORE2 | m_GENERIC,
12363  
12364    /* X86_TUNE_SHIFT1 */
12365    ~m_486,
12366 @@ -1380,29 +1458,32 @@
12367    m_AMD_MULTIPLE,
12368  
12369    /* X86_TUNE_INTER_UNIT_MOVES */
12370 -  ~(m_AMD_MULTIPLE | m_GENERIC),
12371 +  ~(m_AMD_MULTIPLE | m_ATOM | m_GENERIC),
12372  
12373    /* X86_TUNE_INTER_UNIT_CONVERSIONS */
12374    ~(m_AMDFAM10),
12375  
12376    /* X86_TUNE_FOUR_JUMP_LIMIT: Some CPU cores are not able to predict more
12377       than 4 branch instructions in the 16 byte window.  */
12378 -  m_PPRO | m_AMD_MULTIPLE | m_PENT4 | m_NOCONA | m_CORE2 | m_GENERIC,
12379 +  m_ATOM | m_PPRO | m_AMD_MULTIPLE | m_PENT4 | m_NOCONA | m_CORE2
12380 +  | m_GENERIC,
12381  
12382    /* X86_TUNE_SCHEDULE */
12383 -  m_PPRO | m_AMD_MULTIPLE | m_K6_GEODE | m_PENT | m_CORE2 | m_GENERIC,
12384 +  m_PPRO | m_AMD_MULTIPLE | m_K6_GEODE | m_PENT | m_ATOM | m_CORE2
12385 +  | m_GENERIC,
12386  
12387    /* X86_TUNE_USE_BT */
12388 -  m_AMD_MULTIPLE | m_CORE2 | m_GENERIC,
12389 +  m_AMD_MULTIPLE | m_ATOM | m_CORE2 | m_GENERIC,
12390  
12391    /* X86_TUNE_USE_INCDEC */
12392 -  ~(m_PENT4 | m_NOCONA | m_GENERIC),
12393 +  ~(m_PENT4 | m_NOCONA | m_GENERIC | m_ATOM),
12394  
12395    /* X86_TUNE_PAD_RETURNS */
12396    m_AMD_MULTIPLE | m_CORE2 | m_GENERIC,
12397  
12398    /* X86_TUNE_EXT_80387_CONSTANTS */
12399 -  m_K6_GEODE | m_ATHLON_K8 | m_PENT4 | m_NOCONA | m_PPRO | m_CORE2 | m_GENERIC,
12400 +  m_K6_GEODE | m_ATHLON_K8 | m_ATOM | m_PENT4 | m_NOCONA | m_PPRO
12401 +  | m_CORE2 | m_GENERIC,
12402  
12403    /* X86_TUNE_SHORTEN_X87_SSE */
12404    ~m_K8,
12405 @@ -1447,6 +1528,10 @@
12406       with a subsequent conditional jump instruction into a single
12407       compare-and-branch uop.  */
12408    m_CORE2,
12409 +
12410 +  /* X86_TUNE_OPT_AGU: Optimize for Address Generation Unit. This flag
12411 +     will impact LEA instruction selection. */
12412 +  m_ATOM,
12413  };
12414  
12415  /* Feature tests against the various architecture variations.  */
12416 @@ -1472,10 +1557,11 @@
12417  };
12418  
12419  static const unsigned int x86_accumulate_outgoing_args
12420 -  = m_AMD_MULTIPLE | m_PENT4 | m_NOCONA | m_PPRO | m_CORE2 | m_GENERIC;
12421 +  = m_AMD_MULTIPLE | m_ATOM | m_PENT4 | m_NOCONA | m_PPRO | m_CORE2
12422 +    | m_GENERIC;
12423  
12424  static const unsigned int x86_arch_always_fancy_math_387
12425 -  = m_PENT | m_PPRO | m_AMD_MULTIPLE | m_PENT4
12426 +  = m_PENT | m_ATOM | m_PPRO | m_AMD_MULTIPLE | m_PENT4
12427      | m_NOCONA | m_CORE2 | m_GENERIC;
12428  
12429  static enum stringop_alg stringop_alg = no_stringop;
12430 @@ -1743,6 +1829,9 @@
12431  /* Alignment for incoming stack boundary in bits.  */
12432  unsigned int ix86_incoming_stack_boundary;
12433  
12434 +/* The abi used by target.  */
12435 +enum calling_abi ix86_abi;
12436 +
12437  /* Values 1-5: see jump.c */
12438  int ix86_branch_cost;
12439  
12440 @@ -1819,6 +1908,8 @@
12441  static bool ix86_can_inline_p (tree, tree);
12442  static void ix86_set_current_function (tree);
12443  
12444 +static enum calling_abi ix86_function_abi (const_tree);
12445 +
12446  \f
12447  /* The svr4 ABI for the i386 says that records and unions are returned
12448     in memory.  */
12449 @@ -1880,6 +1971,7 @@
12450  #define OPTION_MASK_ISA_POPCNT_SET OPTION_MASK_ISA_POPCNT
12451  #define OPTION_MASK_ISA_CX16_SET OPTION_MASK_ISA_CX16
12452  #define OPTION_MASK_ISA_SAHF_SET OPTION_MASK_ISA_SAHF
12453 +#define OPTION_MASK_ISA_MOVBE_SET OPTION_MASK_ISA_MOVBE
12454  
12455  /* Define a set of ISAs which aren't available when a given ISA is
12456     disabled.  MMX and SSE ISAs are handled separately.  */
12457 @@ -1921,6 +2013,7 @@
12458  #define OPTION_MASK_ISA_POPCNT_UNSET OPTION_MASK_ISA_POPCNT
12459  #define OPTION_MASK_ISA_CX16_UNSET OPTION_MASK_ISA_CX16
12460  #define OPTION_MASK_ISA_SAHF_UNSET OPTION_MASK_ISA_SAHF
12461 +#define OPTION_MASK_ISA_MOVBE_UNSET OPTION_MASK_ISA_MOVBE
12462  
12463  /* Vectorization library interface and handlers.  */
12464  tree (*ix86_veclib_handler)(enum built_in_function, tree, tree) = NULL;
12465 @@ -1953,7 +2046,8 @@
12466    {&core2_cost, 16, 10, 16, 10, 16},
12467    {&generic32_cost, 16, 7, 16, 7, 16},
12468    {&generic64_cost, 16, 10, 16, 10, 16},
12469 -  {&amdfam10_cost, 32, 24, 32, 7, 32}
12470 +  {&amdfam10_cost, 32, 24, 32, 7, 32},
12471 +  {&atom_cost, 16, 7, 16, 7, 16}
12472  };
12473  
12474  static const char *const cpu_names[TARGET_CPU_DEFAULT_max] =
12475 @@ -1971,6 +2065,7 @@
12476    "prescott",
12477    "nocona",
12478    "core2",
12479 +  "atom",
12480    "geode",
12481    "k6",
12482    "k6-2",
12483 @@ -2209,6 +2304,19 @@
12484         }
12485        return true;
12486  
12487 +    case OPT_mmovbe:
12488 +      if (value)
12489 +       {
12490 +         ix86_isa_flags |= OPTION_MASK_ISA_MOVBE_SET;
12491 +         ix86_isa_flags_explicit |= OPTION_MASK_ISA_MOVBE_SET;
12492 +       }
12493 +      else
12494 +       {
12495 +         ix86_isa_flags &= ~OPTION_MASK_ISA_MOVBE_UNSET;
12496 +         ix86_isa_flags_explicit |= OPTION_MASK_ISA_MOVBE_UNSET;
12497 +       }
12498 +      return true;
12499 +
12500      case OPT_maes:
12501        if (value)
12502         {
12503 @@ -2271,6 +2379,7 @@
12504      { "-mmmx",         OPTION_MASK_ISA_MMX },
12505      { "-mabm",         OPTION_MASK_ISA_ABM },
12506      { "-mpopcnt",      OPTION_MASK_ISA_POPCNT },
12507 +    { "-mmovbe",       OPTION_MASK_ISA_MOVBE },
12508      { "-maes",         OPTION_MASK_ISA_AES },
12509      { "-mpclmul",      OPTION_MASK_ISA_PCLMUL },
12510    };
12511 @@ -2487,7 +2596,8 @@
12512        PTA_AES = 1 << 17,
12513        PTA_PCLMUL = 1 << 18,
12514        PTA_AVX = 1 << 19,
12515 -      PTA_FMA = 1 << 20 
12516 +      PTA_FMA = 1 << 20,
12517 +      PTA_MOVBE = 1 << 21
12518      };
12519  
12520    static struct pta
12521 @@ -2529,6 +2639,9 @@
12522        {"core2", PROCESSOR_CORE2, CPU_CORE2,
12523         PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
12524         | PTA_SSSE3 | PTA_CX16},
12525 +      {"atom", PROCESSOR_ATOM, CPU_ATOM,
12526 +       PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
12527 +       | PTA_SSSE3 | PTA_CX16 | PTA_MOVBE},
12528        {"geode", PROCESSOR_GEODE, CPU_GEODE,
12529         PTA_MMX | PTA_3DNOW | PTA_3DNOW_A |PTA_PREFETCH_SSE},
12530        {"k6", PROCESSOR_K6, CPU_K6, PTA_MMX},
12531 @@ -2716,6 +2829,20 @@
12532      error ("bad value (%s) for %sarch=%s %s",
12533            ix86_arch_string, prefix, suffix, sw);
12534  
12535 +  /* Validate -mabi= value.  */
12536 +  if (ix86_abi_string)
12537 +    {
12538 +      if (strcmp (ix86_abi_string, "sysv") == 0)
12539 +       ix86_abi = SYSV_ABI;
12540 +      else if (strcmp (ix86_abi_string, "ms") == 0)
12541 +       ix86_abi = MS_ABI;
12542 +      else
12543 +       error ("unknown ABI (%s) for %sabi=%s %s",
12544 +              ix86_abi_string, prefix, suffix, sw);
12545 +    }
12546 +  else
12547 +    ix86_abi = DEFAULT_ABI;
12548 +
12549    if (ix86_cmodel_string != 0)
12550      {
12551        if (!strcmp (ix86_cmodel_string, "small"))
12552 @@ -2828,6 +2955,9 @@
12553         if (!(TARGET_64BIT && (processor_alias_table[i].flags & PTA_NO_SAHF))
12554             && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_SAHF))
12555           ix86_isa_flags |= OPTION_MASK_ISA_SAHF;
12556 +       if (processor_alias_table[i].flags & PTA_MOVBE
12557 +           && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_MOVBE))
12558 +         ix86_isa_flags |= OPTION_MASK_ISA_MOVBE;
12559         if (processor_alias_table[i].flags & PTA_AES
12560             && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_AES))
12561           ix86_isa_flags |= OPTION_MASK_ISA_AES;
12562 @@ -4592,14 +4722,14 @@
12563       default ABI.  */
12564  
12565    /* RAX is used as hidden argument to va_arg functions.  */
12566 -  if (DEFAULT_ABI == SYSV_ABI && regno == AX_REG)
12567 +  if (ix86_abi == SYSV_ABI && regno == AX_REG)
12568      return true;
12569  
12570 -  if (DEFAULT_ABI == MS_ABI)
12571 +  if (ix86_abi == MS_ABI)
12572      parm_regs = x86_64_ms_abi_int_parameter_registers;
12573    else
12574      parm_regs = x86_64_int_parameter_registers;
12575 -  for (i = 0; i < (DEFAULT_ABI == MS_ABI ? X64_REGPARM_MAX
12576 +  for (i = 0; i < (ix86_abi == MS_ABI ? X64_REGPARM_MAX
12577                                          : X86_64_REGPARM_MAX); i++)
12578      if (regno == parm_regs[i])
12579        return true;
12580 @@ -4627,7 +4757,7 @@
12581  int
12582  ix86_reg_parm_stack_space (const_tree fndecl)
12583  {
12584 -  int call_abi = SYSV_ABI;
12585 +  enum calling_abi call_abi = SYSV_ABI;
12586    if (fndecl != NULL_TREE && TREE_CODE (fndecl) == FUNCTION_DECL)
12587      call_abi = ix86_function_abi (fndecl);
12588    else
12589 @@ -4639,37 +4769,39 @@
12590  
12591  /* Returns value SYSV_ABI, MS_ABI dependent on fntype, specifying the
12592     call abi used.  */
12593 -int
12594 +enum calling_abi
12595  ix86_function_type_abi (const_tree fntype)
12596  {
12597    if (TARGET_64BIT && fntype != NULL)
12598      {
12599 -      int abi;
12600 -      if (DEFAULT_ABI == SYSV_ABI)
12601 -        abi = lookup_attribute ("ms_abi", TYPE_ATTRIBUTES (fntype)) ? MS_ABI : SYSV_ABI;
12602 -      else
12603 -        abi = lookup_attribute ("sysv_abi", TYPE_ATTRIBUTES (fntype)) ? SYSV_ABI : MS_ABI;
12604 -
12605 +      enum calling_abi abi = ix86_abi;
12606 +      if (abi == SYSV_ABI)
12607 +       {
12608 +         if (lookup_attribute ("ms_abi", TYPE_ATTRIBUTES (fntype)))
12609 +           abi = MS_ABI;
12610 +       }
12611 +      else if (lookup_attribute ("sysv_abi", TYPE_ATTRIBUTES (fntype)))
12612 +       abi = SYSV_ABI;
12613        return abi;
12614      }
12615 -  return DEFAULT_ABI;
12616 +  return ix86_abi;
12617  }
12618  
12619 -int
12620 +static enum calling_abi
12621  ix86_function_abi (const_tree fndecl)
12622  {
12623    if (! fndecl)
12624 -    return DEFAULT_ABI;
12625 +    return ix86_abi;
12626    return ix86_function_type_abi (TREE_TYPE (fndecl));
12627  }
12628  
12629  /* Returns value SYSV_ABI, MS_ABI dependent on cfun, specifying the
12630     call abi used.  */
12631 -int
12632 +enum calling_abi
12633  ix86_cfun_abi (void)
12634  {
12635    if (! cfun || ! TARGET_64BIT)
12636 -    return DEFAULT_ABI;
12637 +    return ix86_abi;
12638    return cfun->machine->call_abi;
12639  }
12640  
12641 @@ -4683,7 +4815,7 @@
12642  ix86_call_abi_override (const_tree fndecl)
12643  {
12644    if (fndecl == NULL_TREE)
12645 -    cfun->machine->call_abi = DEFAULT_ABI;
12646 +    cfun->machine->call_abi = ix86_abi;
12647    else
12648      cfun->machine->call_abi = ix86_function_type_abi (TREE_TYPE (fndecl));
12649  }
12650 @@ -4724,8 +4856,8 @@
12651    cum->nregs = ix86_regparm;
12652    if (TARGET_64BIT)
12653      {
12654 -      if (cum->call_abi != DEFAULT_ABI)
12655 -        cum->nregs = DEFAULT_ABI != SYSV_ABI ? X86_64_REGPARM_MAX
12656 +      if (cum->call_abi != ix86_abi)
12657 +        cum->nregs = ix86_abi != SYSV_ABI ? X86_64_REGPARM_MAX
12658                                              : X64_REGPARM_MAX;
12659      }
12660    if (TARGET_SSE)
12661 @@ -4733,8 +4865,8 @@
12662        cum->sse_nregs = SSE_REGPARM_MAX;
12663        if (TARGET_64BIT)
12664          {
12665 -          if (cum->call_abi != DEFAULT_ABI)
12666 -            cum->sse_nregs = DEFAULT_ABI != SYSV_ABI ? X86_64_SSE_REGPARM_MAX
12667 +          if (cum->call_abi != ix86_abi)
12668 +            cum->sse_nregs = ix86_abi != SYSV_ABI ? X86_64_SSE_REGPARM_MAX
12669                                                      : X64_SSE_REGPARM_MAX;
12670          }
12671      }
12672 @@ -5700,7 +5832,7 @@
12673    if (type)
12674      mode = type_natural_mode (type, NULL);
12675  
12676 -  if (TARGET_64BIT && (cum ? cum->call_abi : DEFAULT_ABI) == MS_ABI)
12677 +  if (TARGET_64BIT && (cum ? cum->call_abi : ix86_abi) == MS_ABI)
12678      function_arg_advance_ms_64 (cum, bytes, words);
12679    else if (TARGET_64BIT)
12680      function_arg_advance_64 (cum, mode, type, words, named);
12681 @@ -5846,9 +5978,9 @@
12682    if (mode == VOIDmode)
12683      return GEN_INT (cum->maybe_vaarg
12684                     ? (cum->sse_nregs < 0
12685 -                      ? (cum->call_abi == DEFAULT_ABI
12686 +                      ? (cum->call_abi == ix86_abi
12687                           ? SSE_REGPARM_MAX
12688 -                         : (DEFAULT_ABI != SYSV_ABI ? X86_64_SSE_REGPARM_MAX
12689 +                         : (ix86_abi != SYSV_ABI ? X86_64_SSE_REGPARM_MAX
12690                                                      : X64_SSE_REGPARM_MAX))
12691                : cum->sse_regno)
12692                     : -1);
12693 @@ -5942,7 +6074,7 @@
12694    if (type && TREE_CODE (type) == VECTOR_TYPE)
12695      mode = type_natural_mode (type, cum);
12696  
12697 -  if (TARGET_64BIT && (cum ? cum->call_abi : DEFAULT_ABI) == MS_ABI)
12698 +  if (TARGET_64BIT && (cum ? cum->call_abi : ix86_abi) == MS_ABI)
12699      return function_arg_ms_64 (cum, mode, omode, named, bytes);
12700    else if (TARGET_64BIT)
12701      return function_arg_64 (cum, mode, omode, type, named);
12702 @@ -5962,7 +6094,7 @@
12703                         const_tree type, bool named ATTRIBUTE_UNUSED)
12704  {
12705    /* See Windows x64 Software Convention.  */
12706 -  if (TARGET_64BIT && (cum ? cum->call_abi : DEFAULT_ABI) == MS_ABI)
12707 +  if (TARGET_64BIT && (cum ? cum->call_abi : ix86_abi) == MS_ABI)
12708      {
12709        int msize = (int) GET_MODE_SIZE (mode);
12710        if (type)
12711 @@ -6102,7 +6234,7 @@
12712        /* TODO: The function should depend on current function ABI but
12713         builtins.c would need updating then. Therefore we use the
12714         default ABI.  */
12715 -      if (TARGET_64BIT && DEFAULT_ABI == MS_ABI)
12716 +      if (TARGET_64BIT && ix86_abi == MS_ABI)
12717         return false;
12718        return TARGET_FLOAT_RETURNS_IN_80387;
12719  
12720 @@ -6498,13 +6630,13 @@
12721  static tree
12722  ix86_build_builtin_va_list (void)
12723  {
12724 -  tree ret = ix86_build_builtin_va_list_abi (DEFAULT_ABI);
12725 +  tree ret = ix86_build_builtin_va_list_abi (ix86_abi);
12726  
12727    /* Initialize abi specific va_list builtin types.  */
12728    if (TARGET_64BIT)
12729      {
12730        tree t;
12731 -      if (DEFAULT_ABI == MS_ABI)
12732 +      if (ix86_abi == MS_ABI)
12733          {
12734            t = ix86_build_builtin_va_list_abi (SYSV_ABI);
12735            if (TREE_CODE (t) != RECORD_TYPE)
12736 @@ -6518,7 +6650,7 @@
12737              t = build_variant_type_copy (t);
12738            sysv_va_list_type_node = t;
12739          }
12740 -      if (DEFAULT_ABI != MS_ABI)
12741 +      if (ix86_abi != MS_ABI)
12742          {
12743            t = ix86_build_builtin_va_list_abi (MS_ABI);
12744            if (TREE_CODE (t) != RECORD_TYPE)
12745 @@ -6551,8 +6683,8 @@
12746    int i;
12747    int regparm = ix86_regparm;
12748  
12749 -  if (cum->call_abi != DEFAULT_ABI)
12750 -    regparm = DEFAULT_ABI != SYSV_ABI ? X86_64_REGPARM_MAX : X64_REGPARM_MAX;
12751 +  if (cum->call_abi != ix86_abi)
12752 +    regparm = ix86_abi != SYSV_ABI ? X86_64_REGPARM_MAX : X64_REGPARM_MAX;
12753  
12754    /* GPR size of varargs save area.  */
12755    if (cfun->va_list_gpr_size)
12756 @@ -6705,7 +6837,7 @@
12757      return true;
12758    canonic = ix86_canonical_va_list_type (type);
12759    return (canonic == ms_va_list_type_node
12760 -          || (DEFAULT_ABI == MS_ABI && canonic == va_list_type_node));
12761 +          || (ix86_abi == MS_ABI && canonic == va_list_type_node));
12762  }
12763  
12764  /* Implement va_start.  */
12765 @@ -12987,6 +13119,316 @@
12766      emit_move_insn (operands[0], dst);
12767  }
12768  
12769 +#define LEA_SEARCH_THRESHOLD 12
12770 +
12771 +/* Search backward for non-agu definition of register number REGNO1
12772 +   or register number REGNO2 in INSN's basic block until 
12773 +   1. Pass LEA_SEARCH_THRESHOLD instructions, or
12774 +   2. Reach BB boundary, or
12775 +   3. Reach agu definition.
12776 +   Returns the distance between the non-agu definition point and INSN.
12777 +   If no definition point, returns -1.  */
12778 +
12779 +static int
12780 +distance_non_agu_define (unsigned int regno1, unsigned int regno2,
12781 +                        rtx insn)
12782 +{
12783 +  basic_block bb = BLOCK_FOR_INSN (insn);
12784 +  int distance = 0;
12785 +  df_ref *def_rec;
12786 +  enum attr_type insn_type;
12787 +
12788 +  if (insn != BB_HEAD (bb))
12789 +    {
12790 +      rtx prev = PREV_INSN (insn);
12791 +      while (prev && distance < LEA_SEARCH_THRESHOLD)
12792 +       {
12793 +         if (INSN_P (prev))
12794 +           {
12795 +             distance++;
12796 +              for (def_rec = DF_INSN_DEFS (prev); *def_rec; def_rec++)
12797 +                if (DF_REF_TYPE (*def_rec) == DF_REF_REG_DEF
12798 +                    && !DF_REF_IS_ARTIFICIAL (*def_rec)
12799 +                    && (regno1 == DF_REF_REGNO (*def_rec)
12800 +                       || regno2 == DF_REF_REGNO (*def_rec)))
12801 +                 {
12802 +                   insn_type = get_attr_type (prev);
12803 +                   if (insn_type != TYPE_LEA)
12804 +                     goto done;
12805 +                 }
12806 +           }
12807 +         if (prev == BB_HEAD (bb))
12808 +           break;
12809 +         prev = PREV_INSN (prev);
12810 +       }
12811 +    }
12812 +  
12813 +  if (distance < LEA_SEARCH_THRESHOLD)
12814 +    {
12815 +      edge e;
12816 +      edge_iterator ei;
12817 +      bool simple_loop = false;
12818 +  
12819 +      FOR_EACH_EDGE (e, ei, bb->preds)
12820 +       if (e->src == bb)
12821 +         {
12822 +           simple_loop = true;
12823 +           break;
12824 +         }
12825 +  
12826 +      if (simple_loop)
12827 +       {
12828 +         rtx prev = BB_END (bb);
12829 +         while (prev
12830 +                && prev != insn
12831 +                && distance < LEA_SEARCH_THRESHOLD)
12832 +           {
12833 +             if (INSN_P (prev))
12834 +               {
12835 +                 distance++;
12836 +                 for (def_rec = DF_INSN_DEFS (prev); *def_rec; def_rec++)
12837 +                   if (DF_REF_TYPE (*def_rec) == DF_REF_REG_DEF
12838 +                       && !DF_REF_IS_ARTIFICIAL (*def_rec)
12839 +                       && (regno1 == DF_REF_REGNO (*def_rec)
12840 +                           || regno2 == DF_REF_REGNO (*def_rec)))
12841 +                     {
12842 +                       insn_type = get_attr_type (prev);
12843 +                       if (insn_type != TYPE_LEA)
12844 +                         goto done;
12845 +                     }
12846 +               }
12847 +             prev = PREV_INSN (prev);
12848 +           }
12849 +       }
12850 +    }
12851 +
12852 +  distance = -1;
12853 +
12854 +done:
12855 +  /* get_attr_type may modify recog data.  We want to make sure
12856 +     that recog data is valid for instruction INSN, on which
12857 +     distance_non_agu_define is called.  INSN is unchanged here.  */
12858 +  extract_insn_cached (insn);
12859 +  return distance;
12860 +}
12861 +
12862 +/* Return the distance between INSN and the next insn that uses 
12863 +   register number REGNO0 in memory address.  Return -1 if no such
12864 +   a use is found within LEA_SEARCH_THRESHOLD or REGNO0 is set.  */
12865 +
12866 +static int
12867 +distance_agu_use (unsigned int regno0, rtx insn)
12868 +{
12869 +  basic_block bb = BLOCK_FOR_INSN (insn);
12870 +  int distance = 0;
12871 +  df_ref *def_rec;
12872 +  df_ref *use_rec;
12873 +
12874 +  if (insn != BB_END (bb))
12875 +    {
12876 +      rtx next = NEXT_INSN (insn);
12877 +      while (next && distance < LEA_SEARCH_THRESHOLD)
12878 +       {
12879 +         if (INSN_P (next))
12880 +           {
12881 +             distance++;
12882 +
12883 +             for (use_rec = DF_INSN_USES (next); *use_rec; use_rec++)
12884 +               if ((DF_REF_TYPE (*use_rec) == DF_REF_REG_MEM_LOAD
12885 +                    || DF_REF_TYPE (*use_rec) == DF_REF_REG_MEM_STORE)
12886 +                   && regno0 == DF_REF_REGNO (*use_rec))
12887 +                 {
12888 +                   /* Return DISTANCE if OP0 is used in memory
12889 +                      address in NEXT.  */
12890 +                   return distance;
12891 +                 }
12892 +
12893 +             for (def_rec = DF_INSN_DEFS (next); *def_rec; def_rec++)
12894 +               if (DF_REF_TYPE (*def_rec) == DF_REF_REG_DEF
12895 +                   && !DF_REF_IS_ARTIFICIAL (*def_rec)
12896 +                   && regno0 == DF_REF_REGNO (*def_rec))
12897 +                 {
12898 +                   /* Return -1 if OP0 is set in NEXT.  */
12899 +                   return -1;
12900 +                 }
12901 +           }
12902 +         if (next == BB_END (bb))
12903 +           break;
12904 +         next = NEXT_INSN (next);
12905 +       }
12906 +    }
12907 +
12908 +  if (distance < LEA_SEARCH_THRESHOLD)
12909 +    {
12910 +      edge e;
12911 +      edge_iterator ei;
12912 +      bool simple_loop = false;
12913 +  
12914 +      FOR_EACH_EDGE (e, ei, bb->succs)
12915 +        if (e->dest == bb)
12916 +         {
12917 +           simple_loop = true;
12918 +           break;
12919 +         }
12920 +  
12921 +      if (simple_loop)
12922 +       {
12923 +         rtx next = BB_HEAD (bb);
12924 +         while (next
12925 +                && next != insn
12926 +                && distance < LEA_SEARCH_THRESHOLD)
12927 +           {
12928 +             if (INSN_P (next))
12929 +               {
12930 +                 distance++;
12931 +
12932 +                 for (use_rec = DF_INSN_USES (next); *use_rec; use_rec++)
12933 +                   if ((DF_REF_TYPE (*use_rec) == DF_REF_REG_MEM_LOAD
12934 +                        || DF_REF_TYPE (*use_rec) == DF_REF_REG_MEM_STORE)
12935 +                       && regno0 == DF_REF_REGNO (*use_rec))
12936 +                     {
12937 +                       /* Return DISTANCE if OP0 is used in memory
12938 +                          address in NEXT.  */
12939 +                       return distance;
12940 +                     }
12941 +
12942 +                 for (def_rec = DF_INSN_DEFS (next); *def_rec; def_rec++)
12943 +                   if (DF_REF_TYPE (*def_rec) == DF_REF_REG_DEF
12944 +                       && !DF_REF_IS_ARTIFICIAL (*def_rec)
12945 +                       && regno0 == DF_REF_REGNO (*def_rec))
12946 +                     {
12947 +                       /* Return -1 if OP0 is set in NEXT.  */
12948 +                       return -1;
12949 +                     }
12950 +
12951 +               }
12952 +             next = NEXT_INSN (next);
12953 +           }
12954 +       }
12955 +    }  
12956 +
12957 +  return -1;
12958 +}
12959 +
12960 +/* Define this macro to tune LEA priority vs ADD, it take effect when
12961 +   there is a dilemma of choicing LEA or ADD
12962 +   Negative value: ADD is more preferred than LEA
12963 +   Zero: Netrual
12964 +   Positive value: LEA is more preferred than ADD*/
12965 +#define IX86_LEA_PRIORITY 2
12966 +
12967 +/* Return true if it is ok to optimize an ADD operation to LEA
12968 +   operation to avoid flag register consumation.  For the processors
12969 +   like ATOM, if the destination register of LEA holds an actual
12970 +   address which will be used soon, LEA is better and otherwise ADD
12971 +   is better.  */
12972 +
12973 +bool
12974 +ix86_lea_for_add_ok (enum rtx_code code ATTRIBUTE_UNUSED,
12975 +                     rtx insn, rtx operands[])
12976 +{
12977 +  unsigned int regno0 = true_regnum (operands[0]);
12978 +  unsigned int regno1 = true_regnum (operands[1]);
12979 +  unsigned int regno2;
12980 +
12981 +  if (!TARGET_OPT_AGU || optimize_function_for_size_p (cfun))
12982 +    return regno0 != regno1;
12983 +
12984 +  regno2 = true_regnum (operands[2]);
12985 +
12986 +  /* If a = b + c, (a!=b && a!=c), must use lea form. */
12987 +  if (regno0 != regno1 && regno0 != regno2)
12988 +    return true;
12989 +  else    
12990 +    {
12991 +      int dist_define, dist_use;
12992 +      dist_define = distance_non_agu_define (regno1, regno2, insn);
12993 +      if (dist_define <= 0)
12994 +        return true;
12995 +
12996 +      /* If this insn has both backward non-agu dependence and forward
12997 +         agu dependence, the one with short distance take effect. */
12998 +      dist_use = distance_agu_use (regno0, insn);
12999 +      if (dist_use <= 0
13000 +         || (dist_define + IX86_LEA_PRIORITY) < dist_use)
13001 +        return false;
13002 +
13003 +      return true;
13004 +    }
13005 +}
13006 +
13007 +/* Return true if destination reg of SET_BODY is shift count of
13008 +   USE_BODY.  */
13009 +
13010 +static bool
13011 +ix86_dep_by_shift_count_body (const_rtx set_body, const_rtx use_body)
13012 +{
13013 +  rtx set_dest;
13014 +  rtx shift_rtx;
13015 +  int i;
13016 +
13017 +  /* Retrieve destination of SET_BODY.  */
13018 +  switch (GET_CODE (set_body))
13019 +    {
13020 +    case SET:
13021 +      set_dest = SET_DEST (set_body);
13022 +      if (!set_dest || !REG_P (set_dest))
13023 +       return false;
13024 +      break;
13025 +    case PARALLEL:
13026 +      for (i = XVECLEN (set_body, 0) - 1; i >= 0; i--)
13027 +       if (ix86_dep_by_shift_count_body (XVECEXP (set_body, 0, i),
13028 +                                         use_body))
13029 +         return true;
13030 +    default:
13031 +      return false;
13032 +      break;
13033 +    }
13034 +
13035 +  /* Retrieve shift count of USE_BODY.  */
13036 +  switch (GET_CODE (use_body))
13037 +    {
13038 +    case SET:
13039 +      shift_rtx = XEXP (use_body, 1);
13040 +      break;
13041 +    case PARALLEL:
13042 +      for (i = XVECLEN (use_body, 0) - 1; i >= 0; i--)
13043 +       if (ix86_dep_by_shift_count_body (set_body,
13044 +                                         XVECEXP (use_body, 0, i)))
13045 +         return true;
13046 +    default:
13047 +      return false;
13048 +      break;
13049 +    }
13050 +
13051 +  if (shift_rtx 
13052 +      && (GET_CODE (shift_rtx) == ASHIFT
13053 +         || GET_CODE (shift_rtx) == LSHIFTRT
13054 +         || GET_CODE (shift_rtx) == ASHIFTRT
13055 +         || GET_CODE (shift_rtx) == ROTATE
13056 +         || GET_CODE (shift_rtx) == ROTATERT))
13057 +    {
13058 +      rtx shift_count = XEXP (shift_rtx, 1);
13059 +
13060 +      /* Return true if shift count is dest of SET_BODY.  */
13061 +      if (REG_P (shift_count)
13062 +         && true_regnum (set_dest) == true_regnum (shift_count))
13063 +       return true;
13064 +    }
13065 +
13066 +  return false;
13067 +}
13068 +
13069 +/* Return true if destination reg of SET_INSN is shift count of
13070 +   USE_INSN.  */
13071 +
13072 +bool
13073 +ix86_dep_by_shift_count (const_rtx set_insn, const_rtx use_insn)
13074 +{
13075 +  return ix86_dep_by_shift_count_body (PATTERN (set_insn),
13076 +                                      PATTERN (use_insn));
13077 +}
13078 +
13079  /* Return TRUE or FALSE depending on whether the unary operator meets the
13080     appropriate constraints.  */
13081  
13082 @@ -18838,7 +19280,7 @@
13083    f = GGC_CNEW (struct machine_function);
13084    f->use_fast_prologue_epilogue_nregs = -1;
13085    f->tls_descriptor_call_expanded_p = 0;
13086 -  f->call_abi = DEFAULT_ABI;
13087 +  f->call_abi = ix86_abi;
13088  
13089    return f;
13090  }
13091 @@ -19099,6 +19541,7 @@
13092    switch (ix86_tune)
13093      {
13094      case PROCESSOR_PENTIUM:
13095 +    case PROCESSOR_ATOM:
13096      case PROCESSOR_K6:
13097        return 2;
13098  
13099 @@ -19165,41 +19608,21 @@
13100    return 1;
13101  }
13102  
13103 -/* A subroutine of ix86_adjust_cost -- return true iff INSN has a memory
13104 -   address with operands set by DEP_INSN.  */
13105 +/* Return true iff USE_INSN has a memory address with operands set by
13106 +   SET_INSN.  */
13107  
13108 -static int
13109 -ix86_agi_dependent (rtx insn, rtx dep_insn, enum attr_type insn_type)
13110 +bool
13111 +ix86_agi_dependent (rtx set_insn, rtx use_insn)
13112  {
13113 -  rtx addr;
13114 -
13115 -  if (insn_type == TYPE_LEA
13116 -      && TARGET_PENTIUM)
13117 -    {
13118 -      addr = PATTERN (insn);
13119 -
13120 -      if (GET_CODE (addr) == PARALLEL)
13121 -       addr = XVECEXP (addr, 0, 0);
13122 -
13123 -      gcc_assert (GET_CODE (addr) == SET);
13124 -
13125 -      addr = SET_SRC (addr);
13126 -    }
13127 -  else
13128 -    {
13129 -      int i;
13130 -      extract_insn_cached (insn);
13131 -      for (i = recog_data.n_operands - 1; i >= 0; --i)
13132 -       if (MEM_P (recog_data.operand[i]))
13133 -         {
13134 -           addr = XEXP (recog_data.operand[i], 0);
13135 -           goto found;
13136 -         }
13137 -      return 0;
13138 -    found:;
13139 -    }
13140 -
13141 -  return modified_in_p (addr, dep_insn);
13142 +  int i;
13143 +  extract_insn_cached (use_insn);
13144 +  for (i = recog_data.n_operands - 1; i >= 0; --i)
13145 +    if (MEM_P (recog_data.operand[i]))
13146 +      {
13147 +       rtx addr = XEXP (recog_data.operand[i], 0);
13148 +       return modified_in_p (addr, set_insn) != 0;
13149 +      }
13150 +  return false;
13151  }
13152  
13153  static int
13154 @@ -19227,7 +19650,20 @@
13155      {
13156      case PROCESSOR_PENTIUM:
13157        /* Address Generation Interlock adds a cycle of latency.  */
13158 -      if (ix86_agi_dependent (insn, dep_insn, insn_type))
13159 +      if (insn_type == TYPE_LEA)
13160 +       {
13161 +         rtx addr = PATTERN (insn);
13162 +
13163 +         if (GET_CODE (addr) == PARALLEL)
13164 +           addr = XVECEXP (addr, 0, 0);
13165 +
13166 +         gcc_assert (GET_CODE (addr) == SET);
13167 +
13168 +         addr = SET_SRC (addr);
13169 +         if (modified_in_p (addr, dep_insn))
13170 +           cost += 1;
13171 +       }
13172 +      else if (ix86_agi_dependent (dep_insn, insn))
13173         cost += 1;
13174  
13175        /* ??? Compares pair with jump/setcc.  */
13176 @@ -19237,7 +19673,7 @@
13177        /* Floating point stores require value to be ready one cycle earlier.  */
13178        if (insn_type == TYPE_FMOV
13179           && get_attr_memory (insn) == MEMORY_STORE
13180 -         && !ix86_agi_dependent (insn, dep_insn, insn_type))
13181 +         && !ix86_agi_dependent (dep_insn, insn))
13182         cost += 1;
13183        break;
13184  
13185 @@ -19260,7 +19696,7 @@
13186          in parallel with previous instruction in case
13187          previous instruction is not needed to compute the address.  */
13188        if ((memory == MEMORY_LOAD || memory == MEMORY_BOTH)
13189 -         && !ix86_agi_dependent (insn, dep_insn, insn_type))
13190 +         && !ix86_agi_dependent (dep_insn, insn))
13191         {
13192           /* Claim moves to take one cycle, as core can issue one load
13193              at time and the next load can start cycle later.  */
13194 @@ -19289,7 +19725,7 @@
13195          in parallel with previous instruction in case
13196          previous instruction is not needed to compute the address.  */
13197        if ((memory == MEMORY_LOAD || memory == MEMORY_BOTH)
13198 -         && !ix86_agi_dependent (insn, dep_insn, insn_type))
13199 +         && !ix86_agi_dependent (dep_insn, insn))
13200         {
13201           /* Claim moves to take one cycle, as core can issue one load
13202              at time and the next load can start cycle later.  */
13203 @@ -19306,6 +19742,7 @@
13204      case PROCESSOR_ATHLON:
13205      case PROCESSOR_K8:
13206      case PROCESSOR_AMDFAM10:
13207 +    case PROCESSOR_ATOM:
13208      case PROCESSOR_GENERIC32:
13209      case PROCESSOR_GENERIC64:
13210        memory = get_attr_memory (insn);
13211 @@ -19314,7 +19751,7 @@
13212          in parallel with previous instruction in case
13213          previous instruction is not needed to compute the address.  */
13214        if ((memory == MEMORY_LOAD || memory == MEMORY_BOTH)
13215 -         && !ix86_agi_dependent (insn, dep_insn, insn_type))
13216 +         && !ix86_agi_dependent (dep_insn, insn))
13217         {
13218           enum attr_unit unit = get_attr_unit (insn);
13219           int loadcost = 3;
13220 @@ -29594,14 +30031,11 @@
13221  tree
13222  ix86_fn_abi_va_list (tree fndecl)
13223  {
13224 -  int abi;
13225 -
13226    if (!TARGET_64BIT)
13227      return va_list_type_node;
13228    gcc_assert (fndecl != NULL_TREE);
13229 -  abi = ix86_function_abi ((const_tree) fndecl);
13230  
13231 -  if (abi == MS_ABI)
13232 +  if (ix86_function_abi ((const_tree) fndecl) == MS_ABI)
13233      return ms_va_list_type_node;
13234    else
13235      return sysv_va_list_type_node;
13236 diff -Nur a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c
13237 --- a/gcc/config/i386/i386-c.c  2008-08-31 01:50:40.000000000 +0200
13238 +++ b/gcc/config/i386/i386-c.c  2010-01-25 09:50:29.005686600 +0100
13239 @@ -119,6 +119,10 @@
13240        def_or_undef (parse_in, "__core2");
13241        def_or_undef (parse_in, "__core2__");
13242        break;
13243 +    case PROCESSOR_ATOM:
13244 +      def_or_undef (parse_in, "__atom");
13245 +      def_or_undef (parse_in, "__atom__");
13246 +      break;
13247      /* use PROCESSOR_max to not set/unset the arch macro.  */
13248      case PROCESSOR_max:
13249        break;
13250 @@ -187,6 +191,9 @@
13251      case PROCESSOR_CORE2:
13252        def_or_undef (parse_in, "__tune_core2__");
13253        break;
13254 +    case PROCESSOR_ATOM:
13255 +      def_or_undef (parse_in, "__tune_atom__");
13256 +      break;
13257      case PROCESSOR_GENERIC32:
13258      case PROCESSOR_GENERIC64:
13259        break;
13260 diff -Nur a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
13261 --- a/gcc/config/i386/i386.h    2009-07-11 21:06:26.000000000 +0200
13262 +++ b/gcc/config/i386/i386.h    2010-01-25 09:50:29.005686600 +0100
13263 @@ -59,6 +59,7 @@
13264  #define TARGET_ABM     OPTION_ISA_ABM
13265  #define TARGET_POPCNT  OPTION_ISA_POPCNT
13266  #define TARGET_SAHF    OPTION_ISA_SAHF
13267 +#define TARGET_MOVBE   OPTION_ISA_MOVBE
13268  #define TARGET_AES     OPTION_ISA_AES
13269  #define TARGET_PCLMUL  OPTION_ISA_PCLMUL
13270  #define TARGET_CMPXCHG16B OPTION_ISA_CX16
13271 @@ -236,6 +237,7 @@
13272  #define TARGET_GENERIC64 (ix86_tune == PROCESSOR_GENERIC64)
13273  #define TARGET_GENERIC (TARGET_GENERIC32 || TARGET_GENERIC64)
13274  #define TARGET_AMDFAM10 (ix86_tune == PROCESSOR_AMDFAM10)
13275 +#define TARGET_ATOM (ix86_tune == PROCESSOR_ATOM)
13276  
13277  /* Feature tests against the various tunings.  */
13278  enum ix86_tune_indices {
13279 @@ -300,6 +302,7 @@
13280    X86_TUNE_USE_VECTOR_FP_CONVERTS,
13281    X86_TUNE_USE_VECTOR_CONVERTS,
13282    X86_TUNE_FUSE_CMP_AND_BRANCH,
13283 +  X86_TUNE_OPT_AGU,
13284  
13285    X86_TUNE_LAST
13286  };
13287 @@ -387,6 +390,7 @@
13288         ix86_tune_features[X86_TUNE_USE_VECTOR_CONVERTS]
13289  #define TARGET_FUSE_CMP_AND_BRANCH \
13290         ix86_tune_features[X86_TUNE_FUSE_CMP_AND_BRANCH]
13291 +#define TARGET_OPT_AGU ix86_tune_features[X86_TUNE_OPT_AGU]
13292  
13293  /* Feature tests against the various architecture variations.  */
13294  enum ix86_arch_indices {
13295 @@ -470,7 +474,10 @@
13296    MS_ABI = 1
13297  };
13298  
13299 -/* The default abi form used by target.  */
13300 +/* The abi used by target.  */
13301 +extern enum calling_abi ix86_abi;
13302 +
13303 +/* The default abi used by target.  */
13304  #define DEFAULT_ABI SYSV_ABI
13305  
13306  /* Subtargets may reset this to 1 in order to enable 96-bit long double
13307 @@ -569,6 +576,7 @@
13308    TARGET_CPU_DEFAULT_prescott,
13309    TARGET_CPU_DEFAULT_nocona,
13310    TARGET_CPU_DEFAULT_core2,
13311 +  TARGET_CPU_DEFAULT_atom,
13312  
13313    TARGET_CPU_DEFAULT_geode,
13314    TARGET_CPU_DEFAULT_k6,
13315 @@ -658,7 +666,7 @@
13316  
13317  /* Boundary (in *bits*) on which stack pointer should be aligned.  */
13318  #define STACK_BOUNDARY \
13319 - (TARGET_64BIT && DEFAULT_ABI == MS_ABI ? 128 : BITS_PER_WORD)
13320 + (TARGET_64BIT && ix86_abi == MS_ABI ? 128 : BITS_PER_WORD)
13321  
13322  /* Stack boundary of the main function guaranteed by OS.  */
13323  #define MAIN_STACK_BOUNDARY (TARGET_64BIT ? 128 : 32)
13324 @@ -1584,7 +1592,7 @@
13325    int maybe_vaarg;             /* true for calls to possibly vardic fncts.  */
13326    int float_in_sse;            /* 1 if in 32-bit mode SFmode (2 for DFmode) should
13327                                    be passed in SSE registers.  Otherwise 0.  */
13328 -  int call_abi;                        /* Set to SYSV_ABI for sysv abi. Otherwise
13329 +  enum calling_abi call_abi;   /* Set to SYSV_ABI for sysv abi. Otherwise
13330                                    MS_ABI for ms abi.  */
13331  } CUMULATIVE_ARGS;
13332  
13333 @@ -2230,6 +2238,7 @@
13334    PROCESSOR_GENERIC32,
13335    PROCESSOR_GENERIC64,
13336    PROCESSOR_AMDFAM10,
13337 +  PROCESSOR_ATOM,
13338    PROCESSOR_max
13339  };
13340  
13341 @@ -2403,7 +2412,7 @@
13342    int tls_descriptor_call_expanded_p;
13343    /* This value is used for amd64 targets and specifies the current abi
13344       to be used. MS_ABI means ms abi. Otherwise SYSV_ABI means sysv abi.  */
13345 -  int call_abi;
13346 +   enum calling_abi call_abi;
13347  };
13348  
13349  #define ix86_stack_locals (cfun->machine->stack_locals)
13350 diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
13351 --- a/gcc/config/i386/i386.md   2009-07-08 18:59:15.000000000 +0200
13352 +++ b/gcc/config/i386/i386.md   2010-01-25 09:50:29.015687523 +0100
13353 @@ -316,7 +316,7 @@
13354  
13355  \f
13356  ;; Processor type.
13357 -(define_attr "cpu" "none,pentium,pentiumpro,geode,k6,athlon,k8,core2,
13358 +(define_attr "cpu" "none,pentium,pentiumpro,geode,k6,athlon,k8,core2,atom,
13359                     generic64,amdfam10"
13360    (const (symbol_ref "ix86_schedule")))
13361  
13362 @@ -612,6 +612,12 @@
13363  (define_attr "i387_cw" "trunc,floor,ceil,mask_pm,uninitialized,any"
13364    (const_string "any"))
13365  
13366 +;; Define attribute to classify add/sub insns that consumes carry flag (CF)
13367 +(define_attr "use_carry" "0,1" (const_string "0"))
13368 +
13369 +;; Define attribute to indicate unaligned ssemov insns
13370 +(define_attr "movu" "0,1" (const_string "0"))
13371 +
13372  ;; Describe a user's asm statement.
13373  (define_asm_attributes
13374    [(set_attr "length" "128")
13375 @@ -727,6 +733,7 @@
13376  (include "k6.md")
13377  (include "athlon.md")
13378  (include "geode.md")
13379 +(include "atom.md")
13380  
13381  \f
13382  ;; Operand and operator predicates and constraints
13383 @@ -5790,6 +5797,7 @@
13384    "TARGET_64BIT && ix86_binary_operator_ok (PLUS, DImode, operands)"
13385    "adc{q}\t{%2, %0|%0, %2}"
13386    [(set_attr "type" "alu")
13387 +   (set_attr "use_carry" "1")
13388     (set_attr "pent_pair" "pu")
13389     (set_attr "mode" "DI")])
13390  
13391 @@ -5864,6 +5872,7 @@
13392    "ix86_binary_operator_ok (PLUS, QImode, operands)"
13393    "adc{b}\t{%2, %0|%0, %2}"
13394    [(set_attr "type" "alu")
13395 +   (set_attr "use_carry" "1")
13396     (set_attr "pent_pair" "pu")
13397     (set_attr "mode" "QI")])
13398  
13399 @@ -5876,6 +5885,7 @@
13400    "ix86_binary_operator_ok (PLUS, HImode, operands)"
13401    "adc{w}\t{%2, %0|%0, %2}"
13402    [(set_attr "type" "alu")
13403 +   (set_attr "use_carry" "1")
13404     (set_attr "pent_pair" "pu")
13405     (set_attr "mode" "HI")])
13406  
13407 @@ -5888,6 +5898,7 @@
13408    "ix86_binary_operator_ok (PLUS, SImode, operands)"
13409    "adc{l}\t{%2, %0|%0, %2}"
13410    [(set_attr "type" "alu")
13411 +   (set_attr "use_carry" "1")
13412     (set_attr "pent_pair" "pu")
13413     (set_attr "mode" "SI")])
13414  
13415 @@ -5901,6 +5912,7 @@
13416    "TARGET_64BIT && ix86_binary_operator_ok (PLUS, SImode, operands)"
13417    "adc{l}\t{%2, %k0|%k0, %2}"
13418    [(set_attr "type" "alu")
13419 +   (set_attr "use_carry" "1")
13420     (set_attr "pent_pair" "pu")
13421     (set_attr "mode" "SI")])
13422  
13423 @@ -6130,9 +6142,9 @@
13424     (set_attr "mode" "SI")])
13425  
13426  (define_insn "*adddi_1_rex64"
13427 -  [(set (match_operand:DI 0 "nonimmediate_operand" "=r,rm,r")
13428 -       (plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0,r")
13429 -                (match_operand:DI 2 "x86_64_general_operand" "rme,re,le")))
13430 +  [(set (match_operand:DI 0 "nonimmediate_operand" "=r,rm,r,r")
13431 +       (plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0,r,r")
13432 +                (match_operand:DI 2 "x86_64_general_operand" "rme,re,0,le")))
13433     (clobber (reg:CC FLAGS_REG))]
13434    "TARGET_64BIT && ix86_binary_operator_ok (PLUS, DImode, operands)"
13435  {
13436 @@ -6153,6 +6165,10 @@
13437         }
13438  
13439      default:
13440 +      /* Use add as much as possible to replace lea for AGU optimization. */
13441 +      if (which_alternative == 2 && TARGET_OPT_AGU)
13442 +        return "add{q}\t{%1, %0|%0, %1}";
13443 +        
13444        gcc_assert (rtx_equal_p (operands[0], operands[1]));
13445  
13446        /* Make things pretty and `subl $4,%eax' rather than `addl $-4, %eax'.
13447 @@ -6171,8 +6187,11 @@
13448      }
13449  }
13450    [(set (attr "type")
13451 -     (cond [(eq_attr "alternative" "2")
13452 +     (cond [(and (eq_attr "alternative" "2") 
13453 +                 (eq (symbol_ref "TARGET_OPT_AGU") (const_int 0)))
13454               (const_string "lea")
13455 +            (eq_attr "alternative" "3")
13456 +              (const_string "lea")
13457             ; Current assemblers are broken and do not allow @GOTOFF in
13458             ; ought but a memory context.
13459             (match_operand:DI 2 "pic_symbolic_operand" "")
13460 @@ -6189,8 +6208,8 @@
13461         (plus:DI (match_operand:DI 1 "register_operand" "")
13462                  (match_operand:DI 2 "x86_64_nonmemory_operand" "")))
13463     (clobber (reg:CC FLAGS_REG))]
13464 -  "TARGET_64BIT && reload_completed
13465 -   && true_regnum (operands[0]) != true_regnum (operands[1])"
13466 +  "TARGET_64BIT && reload_completed 
13467 +   && ix86_lea_for_add_ok (PLUS, insn, operands)"
13468    [(set (match_dup 0)
13469         (plus:DI (match_dup 1)
13470                  (match_dup 2)))]
13471 @@ -6394,9 +6413,9 @@
13472  
13473  
13474  (define_insn "*addsi_1"
13475 -  [(set (match_operand:SI 0 "nonimmediate_operand" "=r,rm,r")
13476 -       (plus:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0,r")
13477 -                (match_operand:SI 2 "general_operand" "g,ri,li")))
13478 +  [(set (match_operand:SI 0 "nonimmediate_operand" "=r,rm,r,r")
13479 +       (plus:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0,r,r")
13480 +                (match_operand:SI 2 "general_operand" "g,ri,0,li")))
13481     (clobber (reg:CC FLAGS_REG))]
13482    "ix86_binary_operator_ok (PLUS, SImode, operands)"
13483  {
13484 @@ -6417,6 +6436,10 @@
13485         }
13486  
13487      default:
13488 +      /* Use add as much as possible to replace lea for AGU optimization. */
13489 +      if (which_alternative == 2 && TARGET_OPT_AGU)
13490 +        return "add{l}\t{%1, %0|%0, %1}";
13491 +
13492        gcc_assert (rtx_equal_p (operands[0], operands[1]));
13493  
13494        /* Make things pretty and `subl $4,%eax' rather than `addl $-4, %eax'.
13495 @@ -6433,7 +6456,10 @@
13496      }
13497  }
13498    [(set (attr "type")
13499 -     (cond [(eq_attr "alternative" "2")
13500 +     (cond [(and (eq_attr "alternative" "2") 
13501 +                 (eq (symbol_ref "TARGET_OPT_AGU") (const_int 0)))
13502 +               (const_string "lea")
13503 +            (eq_attr "alternative" "3")
13504               (const_string "lea")
13505             ; Current assemblers are broken and do not allow @GOTOFF in
13506             ; ought but a memory context.
13507 @@ -6451,8 +6477,7 @@
13508         (plus (match_operand 1 "register_operand" "")
13509                (match_operand 2 "nonmemory_operand" "")))
13510     (clobber (reg:CC FLAGS_REG))]
13511 -  "reload_completed
13512 -   && true_regnum (operands[0]) != true_regnum (operands[1])"
13513 +  "reload_completed && ix86_lea_for_add_ok (PLUS, insn, operands)" 
13514    [(const_int 0)]
13515  {
13516    rtx pat;
13517 @@ -7553,6 +7578,7 @@
13518    "TARGET_64BIT && ix86_binary_operator_ok (MINUS, DImode, operands)"
13519    "sbb{q}\t{%2, %0|%0, %2}"
13520    [(set_attr "type" "alu")
13521 +   (set_attr "use_carry" "1")
13522     (set_attr "pent_pair" "pu")
13523     (set_attr "mode" "DI")])
13524  
13525 @@ -7601,6 +7627,7 @@
13526    "ix86_binary_operator_ok (MINUS, QImode, operands)"
13527    "sbb{b}\t{%2, %0|%0, %2}"
13528    [(set_attr "type" "alu")
13529 +   (set_attr "use_carry" "1")
13530     (set_attr "pent_pair" "pu")
13531     (set_attr "mode" "QI")])
13532  
13533 @@ -7613,6 +7640,7 @@
13534    "ix86_binary_operator_ok (MINUS, HImode, operands)"
13535    "sbb{w}\t{%2, %0|%0, %2}"
13536    [(set_attr "type" "alu")
13537 +   (set_attr "use_carry" "1")
13538     (set_attr "pent_pair" "pu")
13539     (set_attr "mode" "HI")])
13540  
13541 @@ -7625,6 +7653,7 @@
13542    "ix86_binary_operator_ok (MINUS, SImode, operands)"
13543    "sbb{l}\t{%2, %0|%0, %2}"
13544    [(set_attr "type" "alu")
13545 +   (set_attr "use_carry" "1")
13546     (set_attr "pent_pair" "pu")
13547     (set_attr "mode" "SI")])
13548  
13549 @@ -15155,7 +15184,7 @@
13550                      ? gen_rtx_REG (XCmode, FIRST_FLOAT_REG) : NULL),
13551                     operands[0], const0_rtx,
13552                     GEN_INT ((TARGET_64BIT
13553 -                             ? (DEFAULT_ABI == SYSV_ABI
13554 +                             ? (ix86_abi == SYSV_ABI
13555                                  ? X86_64_SSE_REGPARM_MAX
13556                                  : X64_SSE_REGPARM_MAX)
13557                               : X86_32_SSE_REGPARM_MAX)
13558 @@ -15235,6 +15264,7 @@
13559    "reload_completed"
13560    "ret"
13561    [(set_attr "length" "1")
13562 +   (set_attr "atom_unit" "jeu")
13563     (set_attr "length_immediate" "0")
13564     (set_attr "modrm" "0")])
13565  
13566 @@ -15247,6 +15277,7 @@
13567    "reload_completed"
13568    "rep\;ret"
13569    [(set_attr "length" "1")
13570 +   (set_attr "atom_unit" "jeu")
13571     (set_attr "length_immediate" "0")
13572     (set_attr "prefix_rep" "1")
13573     (set_attr "modrm" "0")])
13574 @@ -15257,6 +15288,7 @@
13575    "reload_completed"
13576    "ret\t%0"
13577    [(set_attr "length" "3")
13578 +   (set_attr "atom_unit" "jeu")
13579     (set_attr "length_immediate" "2")
13580     (set_attr "modrm" "0")])
13581  
13582 @@ -15610,7 +15642,7 @@
13583         (bswap:SI (match_operand:SI 1 "register_operand" "")))]
13584    ""
13585  {
13586 -  if (!TARGET_BSWAP)
13587 +  if (!(TARGET_BSWAP || TARGET_MOVBE))
13588      {
13589        rtx x = operands[0];
13590  
13591 @@ -15622,6 +15654,21 @@
13592      }
13593  })
13594  
13595 +(define_insn "*bswapsi_movbe"
13596 +  [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,m")
13597 +       (bswap:SI (match_operand:SI 1 "nonimmediate_operand" "0,m,r")))]
13598 +  "TARGET_MOVBE && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
13599 +  "@
13600 +    bswap\t%0
13601 +    movbe\t{%1, %0|%0, %1}
13602 +    movbe\t{%1, %0|%0, %1}"
13603 +  [(set_attr "type" "*,imov,imov")
13604 +   (set_attr "modrm" "*,1,1")
13605 +   (set_attr "prefix_0f" "1")
13606 +   (set_attr "prefix_extra" "*,1,1")
13607 +   (set_attr "length" "2,*,*")
13608 +   (set_attr "mode" "SI")])
13609 +
13610  (define_insn "*bswapsi_1"
13611    [(set (match_operand:SI 0 "register_operand" "=r")
13612         (bswap:SI (match_operand:SI 1 "register_operand" "0")))]
13613 @@ -15650,7 +15697,29 @@
13614    [(set_attr "length" "4")
13615     (set_attr "mode" "HI")])
13616  
13617 -(define_insn "bswapdi2"
13618 +(define_expand "bswapdi2"
13619 +  [(set (match_operand:DI 0 "register_operand" "")
13620 +       (bswap:DI (match_operand:DI 1 "register_operand" "")))]
13621 +  "TARGET_64BIT"
13622 +  "")
13623 +
13624 +(define_insn "*bswapdi_movbe"
13625 +  [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,m")
13626 +       (bswap:DI (match_operand:DI 1 "nonimmediate_operand" "0,m,r")))]
13627 +  "TARGET_64BIT && TARGET_MOVBE
13628 +   && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
13629 +  "@
13630 +    bswap\t%0
13631 +    movbe\t{%1, %0|%0, %1}
13632 +    movbe\t{%1, %0|%0, %1}"
13633 +  [(set_attr "type" "*,imov,imov")
13634 +   (set_attr "modrm" "*,1,1")
13635 +   (set_attr "prefix_0f" "1")
13636 +   (set_attr "prefix_extra" "*,1,1")
13637 +   (set_attr "length" "3,*,*")
13638 +   (set_attr "mode" "DI")])
13639 +
13640 +(define_insn "*bswapdi_1"
13641    [(set (match_operand:DI 0 "register_operand" "=r")
13642         (bswap:DI (match_operand:DI 1 "register_operand" "0")))]
13643    "TARGET_64BIT"
13644 @@ -16378,6 +16447,7 @@
13645    "TARGET_SSE_MATH"
13646    "%vrcpss\t{%1, %d0|%d0, %1}"
13647    [(set_attr "type" "sse")
13648 +   (set_attr "atom_sse_attr" "rcp")
13649     (set_attr "prefix" "maybe_vex")
13650     (set_attr "mode" "SF")])
13651  
13652 @@ -16729,6 +16799,7 @@
13653    "TARGET_SSE_MATH"
13654    "%vrsqrtss\t{%1, %d0|%d0, %1}"
13655    [(set_attr "type" "sse")
13656 +   (set_attr "atom_sse_attr" "rcp")
13657     (set_attr "prefix" "maybe_vex")
13658     (set_attr "mode" "SF")])
13659  
13660 @@ -16749,6 +16820,7 @@
13661    "SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH"
13662    "%vsqrts<ssemodefsuffix>\t{%1, %d0|%d0, %1}"
13663    [(set_attr "type" "sse")
13664 +   (set_attr "atom_sse_attr" "sqrt")
13665     (set_attr "prefix" "maybe_vex")
13666     (set_attr "mode" "<MODE>")
13667     (set_attr "athlon_decode" "*")
13668 @@ -19802,6 +19874,7 @@
13669    ; Since we don't have the proper number of operands for an alu insn,
13670    ; fill in all the blanks.
13671    [(set_attr "type" "alu")
13672 +   (set_attr "use_carry" "1")
13673     (set_attr "pent_pair" "pu")
13674     (set_attr "memory" "none")
13675     (set_attr "imm_disp" "false")
13676 @@ -19817,6 +19890,7 @@
13677    ""
13678    "sbb{q}\t%0, %0"
13679    [(set_attr "type" "alu")
13680 +   (set_attr "use_carry" "1")
13681     (set_attr "pent_pair" "pu")
13682     (set_attr "memory" "none")
13683     (set_attr "imm_disp" "false")
13684 @@ -19860,6 +19934,7 @@
13685    ; Since we don't have the proper number of operands for an alu insn,
13686    ; fill in all the blanks.
13687    [(set_attr "type" "alu")
13688 +   (set_attr "use_carry" "1")
13689     (set_attr "pent_pair" "pu")
13690     (set_attr "memory" "none")
13691     (set_attr "imm_disp" "false")
13692 @@ -19875,6 +19950,7 @@
13693    ""
13694    "sbb{l}\t%0, %0"
13695    [(set_attr "type" "alu")
13696 +   (set_attr "use_carry" "1")
13697     (set_attr "pent_pair" "pu")
13698     (set_attr "memory" "none")
13699     (set_attr "imm_disp" "false")
13700 @@ -20207,7 +20283,8 @@
13701      }
13702  }
13703    [(set (attr "type")
13704 -       (cond [(eq_attr "alternative" "0")
13705 +       (cond [(and (eq_attr "alternative" "0") 
13706 +                   (eq (symbol_ref "TARGET_OPT_AGU") (const_int 0)))
13707                  (const_string "alu")
13708                (match_operand:SI 2 "const0_operand" "")
13709                  (const_string "imov")
13710 @@ -20250,7 +20327,8 @@
13711      }
13712  }
13713    [(set (attr "type")
13714 -       (cond [(eq_attr "alternative" "0")
13715 +       (cond [(and (eq_attr "alternative" "0")
13716 +                   (eq (symbol_ref "TARGET_OPT_AGU") (const_int 0)))
13717                  (const_string "alu")
13718                (match_operand:DI 2 "const0_operand" "")
13719                  (const_string "imov")
13720 @@ -21734,6 +21812,7 @@
13721    return patterns[locality];
13722  }
13723    [(set_attr "type" "sse")
13724 +   (set_attr "atom_sse_attr" "prefetch")
13725     (set_attr "memory" "none")])
13726  
13727  (define_insn "*prefetch_sse_rex"
13728 @@ -21752,6 +21831,7 @@
13729    return patterns[locality];
13730  }
13731    [(set_attr "type" "sse")
13732 +   (set_attr "atom_sse_attr" "prefetch")
13733     (set_attr "memory" "none")])
13734  
13735  (define_insn "*prefetch_3dnow"
13736 diff -Nur a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
13737 --- a/gcc/config/i386/i386.opt  2009-02-20 16:20:38.000000000 +0100
13738 +++ b/gcc/config/i386/i386.opt  2010-01-25 09:50:29.015687523 +0100
13739 @@ -228,6 +228,10 @@
13740  Target RejectNegative Joined Var(ix86_tune_string)
13741  Schedule code for given CPU
13742  
13743 +mabi=
13744 +Target RejectNegative Joined Var(ix86_abi_string)
13745 +Generate code that conforms to the given ABI
13746 +
13747  mveclibabi=
13748  Target RejectNegative Joined Var(ix86_veclibabi_string)
13749  Vector library ABI to use
13750 @@ -335,6 +339,10 @@
13751  Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) VarExists Save
13752  Support code generation of sahf instruction in 64bit x86-64 code.
13753  
13754 +mmovbe
13755 +Target Report Mask(ISA_MOVBE) Var(ix86_isa_flags) VarExists Save
13756 +Support code generation of movbe instruction.
13757 +
13758  maes
13759  Target Report Mask(ISA_AES) Var(ix86_isa_flags) VarExists Save
13760  Support AES built-in functions and code generation
13761 diff -Nur a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h
13762 --- a/gcc/config/i386/i386-protos.h     2009-07-11 21:06:26.000000000 +0200
13763 +++ b/gcc/config/i386/i386-protos.h     2010-01-25 09:50:29.015687523 +0100
13764 @@ -86,6 +86,9 @@
13765  extern void ix86_expand_binary_operator (enum rtx_code,
13766                                          enum machine_mode, rtx[]);
13767  extern int ix86_binary_operator_ok (enum rtx_code, enum machine_mode, rtx[]);
13768 +extern bool ix86_lea_for_add_ok (enum rtx_code, rtx, rtx[]);
13769 +extern bool ix86_dep_by_shift_count (const_rtx set_insn, const_rtx use_insn);
13770 +extern bool ix86_agi_dependent (rtx set_insn, rtx use_insn);
13771  extern void ix86_expand_unary_operator (enum rtx_code, enum machine_mode,
13772                                         rtx[]);
13773  extern rtx ix86_build_const_vector (enum machine_mode, bool, rtx);
13774 @@ -140,9 +143,8 @@
13775  extern bool ix86_sol10_return_in_memory (const_tree,const_tree);
13776  extern rtx ix86_force_to_memory (enum machine_mode, rtx);
13777  extern void ix86_free_from_memory (enum machine_mode);
13778 -extern int ix86_cfun_abi (void);
13779 -extern int ix86_function_abi (const_tree);
13780 -extern int ix86_function_type_abi (const_tree);
13781 +extern enum calling_abi ix86_cfun_abi (void);
13782 +extern enum calling_abi ix86_function_type_abi (const_tree);
13783  extern void ix86_call_abi_override (const_tree);
13784  extern tree ix86_fn_abi_va_list (tree);
13785  extern tree ix86_canonical_va_list_type (tree);
13786 diff -Nur a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h
13787 --- a/gcc/config/i386/mingw32.h 2009-02-20 16:20:38.000000000 +0100
13788 +++ b/gcc/config/i386/mingw32.h 2010-01-25 09:50:29.015687523 +0100
13789 @@ -38,7 +38,7 @@
13790        builtin_define_std ("WINNT");                            \
13791        builtin_define_with_int_value ("_INTEGRAL_MAX_BITS",     \
13792                                      TYPE_PRECISION (intmax_type_node));\
13793 -      if (TARGET_64BIT && DEFAULT_ABI == MS_ABI)                       \
13794 +      if (TARGET_64BIT && ix86_abi == MS_ABI)                  \
13795         {                                                       \
13796           builtin_define ("__MINGW64__");                       \
13797           builtin_define_std ("WIN64");                         \
13798 diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
13799 --- a/gcc/config/i386/sse.md    2009-05-06 15:20:41.000000000 +0200
13800 +++ b/gcc/config/i386/sse.md    2010-01-25 09:50:29.015687523 +0100
13801 @@ -338,6 +338,7 @@
13802     && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
13803    "vmovup<avxmodesuffixf2c>\t{%1, %0|%0, %1}"
13804    [(set_attr "type" "ssemov")
13805 +   (set_attr "movu" "1")
13806     (set_attr "prefix" "vex")
13807     (set_attr "mode" "<MODE>")])
13808  
13809 @@ -363,6 +364,7 @@
13810     && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
13811    "movup<ssemodesuffixf2c>\t{%1, %0|%0, %1}"
13812    [(set_attr "type" "ssemov")
13813 +   (set_attr "movu" "1")
13814     (set_attr "mode" "<MODE>")])
13815  
13816  (define_insn "avx_movdqu<avxmodesuffix>"
13817 @@ -373,6 +375,7 @@
13818    "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
13819    "vmovdqu\t{%1, %0|%0, %1}"
13820    [(set_attr "type" "ssemov")
13821 +   (set_attr "movu" "1")
13822     (set_attr "prefix" "vex")
13823     (set_attr "mode" "<avxvecmode>")])
13824  
13825 @@ -383,6 +386,7 @@
13826    "TARGET_SSE2 && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
13827    "movdqu\t{%1, %0|%0, %1}"
13828    [(set_attr "type" "ssemov")
13829 +   (set_attr "movu" "1")
13830     (set_attr "prefix_data16" "1")
13831     (set_attr "mode" "TI")])
13832  
13833 @@ -424,7 +428,7 @@
13834                      UNSPEC_MOVNT))]
13835    "TARGET_SSE2"
13836    "movntdq\t{%1, %0|%0, %1}"
13837 -  [(set_attr "type" "ssecvt")
13838 +  [(set_attr "type" "ssemov")
13839     (set_attr "prefix_data16" "1")
13840     (set_attr "mode" "TI")])
13841  
13842 @@ -434,7 +438,7 @@
13843                    UNSPEC_MOVNT))]
13844    "TARGET_SSE2"
13845    "movnti\t{%1, %0|%0, %1}"
13846 -  [(set_attr "type" "ssecvt")
13847 +  [(set_attr "type" "ssemov")
13848     (set_attr "mode" "V2DF")])
13849  
13850  (define_insn "avx_lddqu<avxmodesuffix>"
13851 @@ -445,6 +449,7 @@
13852    "TARGET_AVX"
13853    "vlddqu\t{%1, %0|%0, %1}"
13854    [(set_attr "type" "ssecvt")
13855 +   (set_attr "movu" "1")
13856     (set_attr "prefix" "vex")
13857     (set_attr "mode" "<avxvecmode>")])
13858  
13859 @@ -454,7 +459,8 @@
13860                       UNSPEC_LDDQU))]
13861    "TARGET_SSE3"
13862    "lddqu\t{%1, %0|%0, %1}"
13863 -  [(set_attr "type" "ssecvt")
13864 +  [(set_attr "type" "ssemov")
13865 +   (set_attr "movu" "1")
13866     (set_attr "prefix_rep" "1")
13867     (set_attr "mode" "TI")])
13868  
13869 @@ -761,6 +767,7 @@
13870    "TARGET_SSE"
13871    "%vrcpps\t{%1, %0|%0, %1}"
13872    [(set_attr "type" "sse")
13873 +   (set_attr "atom_sse_attr" "rcp")
13874     (set_attr "prefix" "maybe_vex")
13875     (set_attr "mode" "V4SF")])
13876  
13877 @@ -787,6 +794,7 @@
13878    "TARGET_SSE"
13879    "rcpss\t{%1, %0|%0, %1}"
13880    [(set_attr "type" "sse")
13881 +   (set_attr "atom_sse_attr" "rcp")
13882     (set_attr "mode" "SF")])
13883  
13884  (define_expand "sqrtv8sf2"
13885 @@ -832,6 +840,7 @@
13886    "TARGET_SSE"
13887    "%vsqrtps\t{%1, %0|%0, %1}"
13888    [(set_attr "type" "sse")
13889 +   (set_attr "atom_sse_attr" "sqrt")
13890     (set_attr "prefix" "maybe_vex")
13891     (set_attr "mode" "V4SF")])
13892  
13893 @@ -876,6 +885,7 @@
13894    "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
13895    "sqrts<ssemodesuffixf2c>\t{%1, %0|%0, %1}"
13896    [(set_attr "type" "sse")
13897 +   (set_attr "atom_sse_attr" "sqrt")
13898     (set_attr "mode" "<ssescalarmode>")])
13899  
13900  (define_expand "rsqrtv8sf2"
13901 @@ -1039,7 +1049,7 @@
13902          (const_int 1)))]
13903    "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
13904    "<maxminfprefix>s<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
13905 -  [(set_attr "type" "sse")
13906 +  [(set_attr "type" "sseadd")
13907     (set_attr "mode" "<ssescalarmode>")])
13908  
13909  ;; These versions of the min/max patterns implement exactly the operations
13910 @@ -1175,6 +1185,7 @@
13911    "TARGET_SSE3"
13912    "addsubpd\t{%2, %0|%0, %2}"
13913    [(set_attr "type" "sseadd")
13914 +   (set_attr "atom_unit" "complex")
13915     (set_attr "mode" "V2DF")])
13916  
13917  (define_insn "avx_h<plusminus_insn>v4df3"
13918 @@ -1298,6 +1309,7 @@
13919    "TARGET_SSE3"
13920    "h<plusminus_mnemonic>ps\t{%2, %0|%0, %2}"
13921    [(set_attr "type" "sseadd")
13922 +   (set_attr "atom_unit" "complex")
13923     (set_attr "prefix_rep" "1")
13924     (set_attr "mode" "V4SF")])
13925  
13926 @@ -5066,6 +5078,7 @@
13927    "TARGET_SSE2 && ix86_binary_operator_ok (MULT, V8HImode, operands)"
13928    "pmaddwd\t{%2, %0|%0, %2}"
13929    [(set_attr "type" "sseiadd")
13930 +   (set_attr "atom_unit" "simul")
13931     (set_attr "prefix_data16" "1")
13932     (set_attr "mode" "TI")])
13933  
13934 @@ -7025,6 +7038,7 @@
13935     movq\t{%H1, %0|%0, %H1}
13936     mov{q}\t{%H1, %0|%0, %H1}"
13937    [(set_attr "type" "ssemov,sseishft,ssemov,imov")
13938 +   (set_attr "atom_unit" "*,sishuf,*,*")
13939     (set_attr "memory" "*,none,*,*")
13940     (set_attr "mode" "V2SF,TI,TI,DI")])
13941  
13942 @@ -7057,6 +7071,7 @@
13943     psrldq\t{$8, %0|%0, 8}
13944     movq\t{%H1, %0|%0, %H1}"
13945    [(set_attr "type" "ssemov,sseishft,ssemov")
13946 +   (set_attr "atom_unit" "*,sishuf,*")
13947     (set_attr "memory" "*,none,*")
13948     (set_attr "mode" "V2SF,TI,TI")])
13949  
13950 @@ -7614,6 +7629,7 @@
13951    "TARGET_SSE2"
13952    "psadbw\t{%2, %0|%0, %2}"
13953    [(set_attr "type" "sseiadd")
13954 +   (set_attr "atom_unit" "simul")
13955     (set_attr "prefix_data16" "1")
13956     (set_attr "mode" "TI")])
13957  
13958 @@ -7635,7 +7651,7 @@
13959           UNSPEC_MOVMSK))]
13960    "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
13961    "%vmovmskp<ssemodesuffixf2c>\t{%1, %0|%0, %1}"
13962 -  [(set_attr "type" "ssecvt")
13963 +  [(set_attr "type" "ssemov")
13964     (set_attr "prefix" "maybe_vex")
13965     (set_attr "mode" "<MODE>")])
13966  
13967 @@ -7645,7 +7661,7 @@
13968                    UNSPEC_MOVMSK))]
13969    "TARGET_SSE2"
13970    "%vpmovmskb\t{%1, %0|%0, %1}"
13971 -  [(set_attr "type" "ssecvt")
13972 +  [(set_attr "type" "ssemov")
13973     (set_attr "prefix_data16" "1")
13974     (set_attr "prefix" "maybe_vex")
13975     (set_attr "mode" "SI")])
13976 @@ -7668,7 +7684,7 @@
13977    "TARGET_SSE2 && !TARGET_64BIT"
13978    ;; @@@ check ordering of operands in intel/nonintel syntax
13979    "%vmaskmovdqu\t{%2, %1|%1, %2}"
13980 -  [(set_attr "type" "ssecvt")
13981 +  [(set_attr "type" "ssemov")
13982     (set_attr "prefix_data16" "1")
13983     (set_attr "prefix" "maybe_vex")
13984     (set_attr "mode" "TI")])
13985 @@ -7682,7 +7698,7 @@
13986    "TARGET_SSE2 && TARGET_64BIT"
13987    ;; @@@ check ordering of operands in intel/nonintel syntax
13988    "%vmaskmovdqu\t{%2, %1|%1, %2}"
13989 -  [(set_attr "type" "ssecvt")
13990 +  [(set_attr "type" "ssemov")
13991     (set_attr "prefix_data16" "1")
13992     (set_attr "prefix" "maybe_vex")
13993     (set_attr "mode" "TI")])
13994 @@ -7693,6 +7709,7 @@
13995    "TARGET_SSE"
13996    "%vldmxcsr\t%0"
13997    [(set_attr "type" "sse")
13998 +   (set_attr "atom_sse_attr" "mxcsr")
13999     (set_attr "prefix" "maybe_vex")
14000     (set_attr "memory" "load")])
14001  
14002 @@ -7702,6 +7719,7 @@
14003    "TARGET_SSE"
14004    "%vstmxcsr\t%0"
14005    [(set_attr "type" "sse")
14006 +   (set_attr "atom_sse_attr" "mxcsr")
14007     (set_attr "prefix" "maybe_vex")
14008     (set_attr "memory" "store")])
14009  
14010 @@ -7720,6 +7738,7 @@
14011    "TARGET_SSE || TARGET_3DNOW_A"
14012    "sfence"
14013    [(set_attr "type" "sse")
14014 +   (set_attr "atom_sse_attr" "fence")
14015     (set_attr "memory" "unknown")])
14016  
14017  (define_insn "sse2_clflush"
14018 @@ -7728,6 +7747,7 @@
14019    "TARGET_SSE2"
14020    "clflush\t%a0"
14021    [(set_attr "type" "sse")
14022 +   (set_attr "atom_sse_attr" "fence")
14023     (set_attr "memory" "unknown")])
14024  
14025  (define_expand "sse2_mfence"
14026 @@ -7745,6 +7765,7 @@
14027    "TARGET_64BIT || TARGET_SSE2"
14028    "mfence"
14029    [(set_attr "type" "sse")
14030 +   (set_attr "atom_sse_attr" "fence")
14031     (set_attr "memory" "unknown")])
14032  
14033  (define_expand "sse2_lfence"
14034 @@ -7762,6 +7783,7 @@
14035    "TARGET_SSE2"
14036    "lfence"
14037    [(set_attr "type" "sse")
14038 +   (set_attr "atom_sse_attr" "lfence")
14039     (set_attr "memory" "unknown")])
14040  
14041  (define_insn "sse3_mwait"
14042 @@ -7885,6 +7907,7 @@
14043    "TARGET_SSSE3"
14044    "phaddw\t{%2, %0|%0, %2}"
14045    [(set_attr "type" "sseiadd")
14046 +   (set_attr "atom_unit" "complex")
14047     (set_attr "prefix_data16" "1")
14048     (set_attr "prefix_extra" "1")
14049     (set_attr "mode" "TI")])
14050 @@ -7913,6 +7936,7 @@
14051    "TARGET_SSSE3"
14052    "phaddw\t{%2, %0|%0, %2}"
14053    [(set_attr "type" "sseiadd")
14054 +   (set_attr "atom_unit" "complex")
14055     (set_attr "prefix_extra" "1")
14056     (set_attr "mode" "DI")])
14057  
14058 @@ -7967,6 +7991,7 @@
14059    "TARGET_SSSE3"
14060    "phaddd\t{%2, %0|%0, %2}"
14061    [(set_attr "type" "sseiadd")
14062 +   (set_attr "atom_unit" "complex")
14063     (set_attr "prefix_data16" "1")
14064     (set_attr "prefix_extra" "1")
14065     (set_attr "mode" "TI")])
14066 @@ -7987,6 +8012,7 @@
14067    "TARGET_SSSE3"
14068    "phaddd\t{%2, %0|%0, %2}"
14069    [(set_attr "type" "sseiadd")
14070 +   (set_attr "atom_unit" "complex")
14071     (set_attr "prefix_extra" "1")
14072     (set_attr "mode" "DI")])
14073  
14074 @@ -8073,6 +8099,7 @@
14075    "TARGET_SSSE3"
14076    "phaddsw\t{%2, %0|%0, %2}"
14077    [(set_attr "type" "sseiadd")
14078 +   (set_attr "atom_unit" "complex")
14079     (set_attr "prefix_data16" "1")
14080     (set_attr "prefix_extra" "1")
14081     (set_attr "mode" "TI")])
14082 @@ -8101,6 +8128,7 @@
14083    "TARGET_SSSE3"
14084    "phaddsw\t{%2, %0|%0, %2}"
14085    [(set_attr "type" "sseiadd")
14086 +   (set_attr "atom_unit" "complex")
14087     (set_attr "prefix_extra" "1")
14088     (set_attr "mode" "DI")])
14089  
14090 @@ -8187,6 +8215,7 @@
14091    "TARGET_SSSE3"
14092    "phsubw\t{%2, %0|%0, %2}"
14093    [(set_attr "type" "sseiadd")
14094 +   (set_attr "atom_unit" "complex")
14095     (set_attr "prefix_data16" "1")
14096     (set_attr "prefix_extra" "1")
14097     (set_attr "mode" "TI")])
14098 @@ -8215,6 +8244,7 @@
14099    "TARGET_SSSE3"
14100    "phsubw\t{%2, %0|%0, %2}"
14101    [(set_attr "type" "sseiadd")
14102 +   (set_attr "atom_unit" "complex")
14103     (set_attr "prefix_extra" "1")
14104     (set_attr "mode" "DI")])
14105  
14106 @@ -8269,6 +8299,7 @@
14107    "TARGET_SSSE3"
14108    "phsubd\t{%2, %0|%0, %2}"
14109    [(set_attr "type" "sseiadd")
14110 +   (set_attr "atom_unit" "complex")
14111     (set_attr "prefix_data16" "1")
14112     (set_attr "prefix_extra" "1")
14113     (set_attr "mode" "TI")])
14114 @@ -8289,6 +8320,7 @@
14115    "TARGET_SSSE3"
14116    "phsubd\t{%2, %0|%0, %2}"
14117    [(set_attr "type" "sseiadd")
14118 +   (set_attr "atom_unit" "complex")
14119     (set_attr "prefix_extra" "1")
14120     (set_attr "mode" "DI")])
14121  
14122 @@ -8375,6 +8407,7 @@
14123    "TARGET_SSSE3"
14124    "phsubsw\t{%2, %0|%0, %2}"
14125    [(set_attr "type" "sseiadd")
14126 +   (set_attr "atom_unit" "complex")
14127     (set_attr "prefix_data16" "1")
14128     (set_attr "prefix_extra" "1")
14129     (set_attr "mode" "TI")])
14130 @@ -8403,6 +8436,7 @@
14131    "TARGET_SSSE3"
14132    "phsubsw\t{%2, %0|%0, %2}"
14133    [(set_attr "type" "sseiadd")
14134 +   (set_attr "atom_unit" "complex")
14135     (set_attr "prefix_extra" "1")
14136     (set_attr "mode" "DI")])
14137  
14138 @@ -8509,6 +8543,7 @@
14139    "TARGET_SSSE3"
14140    "pmaddubsw\t{%2, %0|%0, %2}"
14141    [(set_attr "type" "sseiadd")
14142 +   (set_attr "atom_unit" "simul")
14143     (set_attr "prefix_data16" "1")
14144     (set_attr "prefix_extra" "1")
14145     (set_attr "mode" "TI")])
14146 @@ -8547,6 +8582,7 @@
14147    "TARGET_SSSE3"
14148    "pmaddubsw\t{%2, %0|%0, %2}"
14149    [(set_attr "type" "sseiadd")
14150 +   (set_attr "atom_unit" "simul")
14151     (set_attr "prefix_extra" "1")
14152     (set_attr "mode" "DI")])
14153  
14154 @@ -8754,6 +8790,7 @@
14155    return "palignr\t{%3, %2, %0|%0, %2, %3}";
14156  }
14157    [(set_attr "type" "sseishft")
14158 +   (set_attr "atom_unit" "sishuf")
14159     (set_attr "prefix_data16" "1")
14160     (set_attr "prefix_extra" "1")
14161     (set_attr "mode" "TI")])
14162 @@ -8770,6 +8807,7 @@
14163    return "palignr\t{%3, %2, %0|%0, %2, %3}";
14164  }
14165    [(set_attr "type" "sseishft")
14166 +   (set_attr "atom_unit" "sishuf")
14167     (set_attr "prefix_extra" "1")
14168     (set_attr "mode" "DI")])
14169  
14170 @@ -8956,7 +8994,7 @@
14171                      UNSPEC_MOVNTDQA))]
14172    "TARGET_SSE4_1"
14173    "%vmovntdqa\t{%1, %0|%0, %1}"
14174 -  [(set_attr "type" "ssecvt")
14175 +  [(set_attr "type" "ssemov")
14176     (set_attr "prefix_extra" "1")
14177     (set_attr "prefix" "maybe_vex")
14178     (set_attr "mode" "TI")])
14179 diff -Nur a/gcc/config/i386/t-cs-linux b/gcc/config/i386/t-cs-linux
14180 --- a/gcc/config/i386/t-cs-linux        1970-01-01 01:00:00.000000000 +0100
14181 +++ b/gcc/config/i386/t-cs-linux        2010-01-25 09:50:29.015687523 +0100
14182 @@ -0,0 +1,25 @@
14183 +# Sourcery G++ IA32 GNU/Linux Configuration.
14184 +# Copyright (C) 2007
14185 +# Free Software Foundation, Inc.
14186 +#
14187 +# This file is part of GCC.
14188 +#
14189 +# GCC is free software; you can redistribute it and/or modify
14190 +# it under the terms of the GNU General Public License as published by
14191 +# the Free Software Foundation; either version 3, or (at your option)
14192 +# any later version.
14193 +# 
14194 +# GCC is distributed in the hope that it will be useful,
14195 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
14196 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14197 +# GNU General Public License for more details.
14198 +#
14199 +# You should have received a copy of the GNU General Public License
14200 +# along with GCC; see the file COPYING3.  If not see
14201 +# <http://www.gnu.org/licenses/>.
14202 +
14203 +MULTILIB_OPTIONS = m64/m32 msgxx-glibc/mrh73/mrhel3
14204 +MULTILIB_DIRNAMES = 64 32 sgxx-glibc rh73 rhel3
14205 +MULTILIB_OSDIRNAMES = ../lib64 ../lib sgxx-glibc rh73 rhel3
14206 +MULTILIB_EXCEPTIONS = m64/mrh73 m64/mrhel3
14207 +
14208 diff -Nur a/gcc/config/i386/t-cs-linux-lite b/gcc/config/i386/t-cs-linux-lite
14209 --- a/gcc/config/i386/t-cs-linux-lite   1970-01-01 01:00:00.000000000 +0100
14210 +++ b/gcc/config/i386/t-cs-linux-lite   2010-01-25 09:50:29.015687523 +0100
14211 @@ -0,0 +1,26 @@
14212 +# Sourcery G++ Lite IA32 GNU/Linux Configuration.
14213 +# Copyright (C) 2009
14214 +# Free Software Foundation, Inc.
14215 +#
14216 +# This file is part of GCC.
14217 +#
14218 +# GCC is free software; you can redistribute it and/or modify
14219 +# it under the terms of the GNU General Public License as published by
14220 +# the Free Software Foundation; either version 3, or (at your option)
14221 +# any later version.
14222 +# 
14223 +# GCC is distributed in the hope that it will be useful,
14224 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
14225 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14226 +# GNU General Public License for more details.
14227 +#
14228 +# You should have received a copy of the GNU General Public License
14229 +# along with GCC; see the file COPYING3.  If not see
14230 +# <http://www.gnu.org/licenses/>.
14231 +
14232 +MULTILIB_OPTIONS = m64 march=atom/march=core2
14233 +MULTILIB_DIRNAMES = 64 atom core2
14234 +MULTILIB_EXCEPTIONS = m64/march=atom march=core2
14235 +MULTILIB_ALIASES = m64=m64/march?atom
14236 +MULTILIB_OSDIRNAMES = m64=../lib64 march.atom=atom m64/march.core2=../lib64/core2
14237 +
14238 diff -Nur a/gcc/config/i386/t-wrs-linux b/gcc/config/i386/t-wrs-linux
14239 --- a/gcc/config/i386/t-wrs-linux       1970-01-01 01:00:00.000000000 +0100
14240 +++ b/gcc/config/i386/t-wrs-linux       2010-01-25 09:50:29.015687523 +0100
14241 @@ -0,0 +1,24 @@
14242 +# Wind River GNU/Linux Configuration.
14243 +# Copyright (C) 2009
14244 +# Free Software Foundation, Inc.
14245 +#
14246 +# This file is part of GCC.
14247 +#
14248 +# GCC is free software; you can redistribute it and/or modify
14249 +# it under the terms of the GNU General Public License as published by
14250 +# the Free Software Foundation; either version 3, or (at your option)
14251 +# any later version.
14252 +# 
14253 +# GCC is distributed in the hope that it will be useful,
14254 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
14255 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14256 +# GNU General Public License for more details.
14257 +#
14258 +# You should have received a copy of the GNU General Public License
14259 +# along with GCC; see the file COPYING3.  If not see
14260 +# <http://www.gnu.org/licenses/>.
14261 +
14262 +MULTILIB_OPTIONS = m64/m32 msystem-glibc
14263 +MULTILIB_DIRNAMES = 64 32 system-glibc
14264 +MULTILIB_OSDIRNAMES = ../lib64 ../lib system-glibc
14265 +MULTILIB_EXCEPTIONS = m64/msystem-glibc
14266 diff -Nur a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c
14267 --- a/gcc/config/i386/winnt.c   2009-02-21 04:21:44.000000000 +0100
14268 +++ b/gcc/config/i386/winnt.c   2010-01-25 09:50:29.015687523 +0100
14269 @@ -499,8 +499,11 @@
14270  {
14271    HOST_WIDE_INT rounded;
14272  
14273 -  /* Compute as in assemble_noswitch_variable, since we don't actually
14274 -     support aligned common.  */
14275 +  /* Compute as in assemble_noswitch_variable, since we don't have
14276 +     support for aligned common on older binutils.  We must also
14277 +     avoid emitting a common symbol of size zero, as this is the
14278 +     overloaded representation that indicates an undefined external
14279 +     symbol in the PE object file format.  */
14280    rounded = size ? size : 1;
14281    rounded += (BIGGEST_ALIGNMENT / BITS_PER_UNIT) - 1;
14282    rounded = (rounded / (BIGGEST_ALIGNMENT / BITS_PER_UNIT)
14283 @@ -510,9 +513,13 @@
14284  
14285    fprintf (stream, "\t.comm\t");
14286    assemble_name (stream, name);
14287 -  fprintf (stream, ", " HOST_WIDE_INT_PRINT_DEC "\t" ASM_COMMENT_START
14288 -          " " HOST_WIDE_INT_PRINT_DEC "\n",
14289 -          rounded, size);
14290 +  if (use_pe_aligned_common)
14291 +    fprintf (stream, ", " HOST_WIDE_INT_PRINT_DEC ", %d\n",
14292 +          size ? size : (HOST_WIDE_INT) 1,
14293 +          exact_log2 (align) - exact_log2 (CHAR_BIT));
14294 +  else
14295 +    fprintf (stream, ", " HOST_WIDE_INT_PRINT_DEC "\t" ASM_COMMENT_START
14296 +          " " HOST_WIDE_INT_PRINT_DEC "\n", rounded, size);
14297  }
14298  \f
14299  /* The Microsoft linker requires that every function be marked as
14300 diff -Nur a/gcc/config/i386/wrs-linux.h b/gcc/config/i386/wrs-linux.h
14301 --- a/gcc/config/i386/wrs-linux.h       1970-01-01 01:00:00.000000000 +0100
14302 +++ b/gcc/config/i386/wrs-linux.h       2010-01-25 09:50:29.015687523 +0100
14303 @@ -0,0 +1,33 @@
14304 +/* Wind River IA32 GNU/Linux Configuration.
14305 +   Copyright (C) 2009
14306 +   Free Software Foundation, Inc.
14307 +
14308 +This file is part of GCC.
14309 +
14310 +GCC is free software; you can redistribute it and/or modify
14311 +it under the terms of the GNU General Public License as published by
14312 +the Free Software Foundation; either version 3, or (at your option)
14313 +any later version.
14314 +
14315 +GCC is distributed in the hope that it will be useful,
14316 +but WITHOUT ANY WARRANTY; without even the implied warranty of
14317 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14318 +GNU General Public License for more details.
14319 +
14320 +You should have received a copy of the GNU General Public License
14321 +along with GCC; see the file COPYING3.  If not see
14322 +<http://www.gnu.org/licenses/>.  */
14323 +
14324 +#undef SYSROOT_SUFFIX_SPEC
14325 +#define SYSROOT_SUFFIX_SPEC                    \
14326 +  "%{msystem-glibc:/system-glibc}"
14327 +
14328 +#undef SYSROOT_HEADERS_SUFFIX_SPEC
14329 +#define SYSROOT_HEADERS_SUFFIX_SPEC SYSROOT_SUFFIX_SPEC
14330 +
14331 +/* See mips/wrs-linux.h for details on this use of
14332 +   STARTFILE_PREFIX_SPEC.  */
14333 +#undef STARTFILE_PREFIX_SPEC
14334 +#define STARTFILE_PREFIX_SPEC                          \
14335 +  "%{m64: /usr/local/lib64/ /lib64/ /usr/lib64/}       \
14336 +   %{!m64: /usr/local/lib/ /lib/ /usr/lib/}"
14337 diff -Nur a/gcc/config/i386/wrs-linux.opt b/gcc/config/i386/wrs-linux.opt
14338 --- a/gcc/config/i386/wrs-linux.opt     1970-01-01 01:00:00.000000000 +0100
14339 +++ b/gcc/config/i386/wrs-linux.opt     2010-01-25 09:50:29.015687523 +0100
14340 @@ -0,0 +1,5 @@
14341 +; Additional options for Wind River Linux Sourcery G++.
14342 +
14343 +msystem-glibc
14344 +Target
14345 +Use system version of GLIBC
14346 diff -Nur a/gcc/config/m68k/constraints.md b/gcc/config/m68k/constraints.md
14347 --- a/gcc/config/m68k/constraints.md    2007-09-11 15:56:30.000000000 +0200
14348 +++ b/gcc/config/m68k/constraints.md    2010-01-25 09:50:29.015687523 +0100
14349 @@ -124,6 +124,11 @@
14350    (and (match_code "const_int")
14351         (match_test "ival < -0x8000 || ival > 0x7FFF")))
14352  
14353 +(define_constraint "Cu"
14354 +  "16-bit offset for wrapped symbols"
14355 +  (and (match_code "const")
14356 +       (match_test "m68k_unwrap_symbol (op, false) != op")))
14357 +
14358  (define_constraint "CQ"
14359    "Integers valid for mvq."
14360    (and (match_code "const_int")
14361 diff -Nur a/gcc/config/m68k/lb1sf68.asm b/gcc/config/m68k/lb1sf68.asm
14362 --- a/gcc/config/m68k/lb1sf68.asm       2009-04-10 01:23:07.000000000 +0200
14363 +++ b/gcc/config/m68k/lb1sf68.asm       2010-01-25 09:50:29.015687523 +0100
14364 @@ -163,6 +163,8 @@
14365  #if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__)
14366         lea     \addr-.-8,a0
14367         jsr     pc@(a0)
14368 +#elif defined (__mcfisab__) || defined (__mcfisac__)
14369 +       bsr.l   \addr
14370  #else
14371         bsr     \addr
14372  #endif
14373 @@ -202,6 +204,8 @@
14374  #if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__)
14375         lea     \addr-.-8,a0
14376         jsr     pc@(a0)
14377 +#elif defined (__mcfisab__) || defined (__mcfisac__)
14378 +       bsr.l   \addr
14379  #else
14380         bsr     \addr
14381  #endif
14382 diff -Nur a/gcc/config/m68k/linux-unwind.h b/gcc/config/m68k/linux-unwind.h
14383 --- a/gcc/config/m68k/linux-unwind.h    2009-04-10 01:23:07.000000000 +0200
14384 +++ b/gcc/config/m68k/linux-unwind.h    2010-01-25 09:50:29.015687523 +0100
14385 @@ -77,9 +77,15 @@
14386        fs->regs.reg[9].how = REG_SAVED_OFFSET;
14387        fs->regs.reg[9].loc.offset = (long) &sc->sc_a1 - cfa;
14388  
14389 +#ifdef __uClinux__
14390 +      fs->regs.reg[13].how = REG_SAVED_OFFSET;
14391 +      fs->regs.reg[13].loc.offset = (long) &sc->sc_a5 - cfa;
14392 +#endif
14393 +
14394        fs->regs.reg[24].how = REG_SAVED_OFFSET;
14395        fs->regs.reg[24].loc.offset = (long) &sc->sc_pc - cfa;
14396  
14397 +#if defined __mcffpu__ && !defined __uClinux__
14398        if (*(int *) sc->sc_fpstate)
14399         {
14400           int *fpregs = (int *) sc->sc_fpregs;
14401 @@ -89,11 +95,19 @@
14402           fs->regs.reg[17].how = REG_SAVED_OFFSET;
14403           fs->regs.reg[17].loc.offset = (long) &fpregs[M68K_FP_SIZE/4] - cfa;
14404         }
14405 +#elif defined __mcffpu__
14406 +# error Implement this when uClinux kernel is ported to an FPU architecture
14407 +#endif
14408      }
14409  #ifdef __mcoldfire__
14410    /* move.l #__NR_rt_sigreturn,%d0; trap #0 */
14411 -  else if (pc[0] == 0x203c && pc[1] == 0x0000 &&
14412 -          pc[2] == 0x00ad && pc[3] == 0x4e40)
14413 +  else if ((pc[0] == 0x203c && pc[1] == 0x0000 &&
14414 +           pc[2] == 0x00ad && pc[3] == 0x4e40) ||
14415 +          /* Don't ask me why, this is just what some kernels do:
14416 +             moveq #-__NR_rt_sigreturn,%d0; andil 0xff,%d0; trap #0;
14417 +             Sigh...  */
14418 +          (pc[0] == 0x70ad && pc[1] == 0x0280 && pc[2] == 0x0000 &&
14419 +           pc[3] == 0x00ff && pc[4] == 0x4e40 && pc[5] == 0x0000))
14420  #else
14421    /* moveq #~__NR_rt_sigreturn,%d0; not.b %d0; trap #0 */
14422    else if (pc[0] == 0x7052 && pc[1] == 0x4600 && pc[2] == 0x4e40)
14423 diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
14424 --- a/gcc/config/m68k/m68k.c    2008-11-19 17:24:10.000000000 +0100
14425 +++ b/gcc/config/m68k/m68k.c    2010-01-25 09:50:29.015687523 +0100
14426 @@ -46,6 +46,7 @@
14427  /* ??? Need to add a dependency between m68k.o and sched-int.h.  */
14428  #include "sched-int.h"
14429  #include "insn-codes.h"
14430 +#include "ggc.h"
14431  
14432  enum reg_class regno_reg_class[] =
14433  {
14434 @@ -146,10 +147,12 @@
14435  static void m68k_compute_frame_layout (void);
14436  static bool m68k_save_reg (unsigned int regno, bool interrupt_handler);
14437  static bool m68k_ok_for_sibcall_p (tree, tree);
14438 +static bool m68k_tls_symbol_p (rtx);
14439  static bool m68k_rtx_costs (rtx, int, int, int *, bool);
14440  #if M68K_HONOR_TARGET_STRICT_ALIGNMENT
14441  static bool m68k_return_in_memory (const_tree, const_tree);
14442  #endif
14443 +static void m68k_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
14444  \f
14445  
14446  /* Specify the identification number of the library being built */
14447 @@ -252,6 +255,14 @@
14448  #define TARGET_RETURN_IN_MEMORY m68k_return_in_memory
14449  #endif
14450  
14451 +#ifdef HAVE_AS_TLS
14452 +#undef TARGET_HAVE_TLS
14453 +#define TARGET_HAVE_TLS (true)
14454 +
14455 +#undef TARGET_ASM_OUTPUT_DWARF_DTPREL
14456 +#define TARGET_ASM_OUTPUT_DWARF_DTPREL m68k_output_dwarf_dtprel
14457 +#endif
14458 +
14459  static const struct attribute_spec m68k_attribute_table[] =
14460  {
14461    /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
14462 @@ -1150,8 +1161,7 @@
14463                             current_frame.reg_mask, true, true));
14464      }
14465  
14466 -  if (flag_pic
14467 -      && !TARGET_SEP_DATA
14468 +  if (!TARGET_SEP_DATA
14469        && crtl->uses_pic_offset_table)
14470      insn = emit_insn (gen_load_got (pic_offset_table_rtx));
14471  }
14472 @@ -1425,6 +1435,86 @@
14473    return replace_equiv_address (x, gen_rtx_REG (Pmode, STATIC_CHAIN_REGNUM));
14474  }
14475  
14476 +/* Convert X to a legitimate address and return it if successful.  Otherwise
14477 +   return X.
14478 +
14479 +   For the 68000, we handle X+REG by loading X into a register R and
14480 +   using R+REG.  R will go in an address reg and indexing will be used.
14481 +   However, if REG is a broken-out memory address or multiplication,
14482 +   nothing needs to be done because REG can certainly go in an address reg.  */
14483 +
14484 +rtx
14485 +m68k_legitimize_address (rtx x, rtx oldx, enum machine_mode mode)
14486 +{
14487 +  if (m68k_tls_symbol_p (x))
14488 +    return m68k_legitimize_tls_address (x);
14489 +
14490 +  if (GET_CODE (x) == PLUS)
14491 +    {
14492 +      int ch = (x) != (oldx);
14493 +      int copied = 0;
14494 +
14495 +#define COPY_ONCE(Y) if (!copied) { Y = copy_rtx (Y); copied = ch = 1; }
14496 +
14497 +      if (GET_CODE (XEXP (x, 0)) == MULT)
14498 +       {
14499 +         COPY_ONCE (x);
14500 +         XEXP (x, 0) = force_operand (XEXP (x, 0), 0);
14501 +       }
14502 +      if (GET_CODE (XEXP (x, 1)) == MULT)
14503 +       {
14504 +         COPY_ONCE (x);
14505 +         XEXP (x, 1) = force_operand (XEXP (x, 1), 0);
14506 +       }
14507 +      if (ch)
14508 +       {
14509 +          if (GET_CODE (XEXP (x, 1)) == REG
14510 +             && GET_CODE (XEXP (x, 0)) == REG)
14511 +           {
14512 +             if (TARGET_COLDFIRE_FPU && GET_MODE_CLASS (mode) == MODE_FLOAT)
14513 +               {
14514 +                 COPY_ONCE (x);
14515 +                 x = force_operand (x, 0);
14516 +               }
14517 +             return x;
14518 +           }
14519 +         if (memory_address_p (mode, x))
14520 +           return x;
14521 +       }
14522 +      if (GET_CODE (XEXP (x, 0)) == REG
14523 +         || (GET_CODE (XEXP (x, 0)) == SIGN_EXTEND
14524 +             && GET_CODE (XEXP (XEXP (x, 0), 0)) == REG
14525 +             && GET_MODE (XEXP (XEXP (x, 0), 0)) == HImode))
14526 +       {
14527 +         rtx temp = gen_reg_rtx (Pmode);
14528 +         rtx val = force_operand (XEXP (x, 1), 0);
14529 +         emit_move_insn (temp, val);
14530 +         COPY_ONCE (x);
14531 +         XEXP (x, 1) = temp;
14532 +         if (TARGET_COLDFIRE_FPU && GET_MODE_CLASS (mode) == MODE_FLOAT
14533 +             && GET_CODE (XEXP (x, 0)) == REG)
14534 +           x = force_operand (x, 0);
14535 +       }
14536 +      else if (GET_CODE (XEXP (x, 1)) == REG
14537 +              || (GET_CODE (XEXP (x, 1)) == SIGN_EXTEND
14538 +                  && GET_CODE (XEXP (XEXP (x, 1), 0)) == REG
14539 +                  && GET_MODE (XEXP (XEXP (x, 1), 0)) == HImode))
14540 +       {
14541 +         rtx temp = gen_reg_rtx (Pmode);
14542 +         rtx val = force_operand (XEXP (x, 0), 0);
14543 +         emit_move_insn (temp, val);
14544 +         COPY_ONCE (x);
14545 +         XEXP (x, 0) = temp;
14546 +         if (TARGET_COLDFIRE_FPU && GET_MODE_CLASS (mode) == MODE_FLOAT
14547 +             && GET_CODE (XEXP (x, 1)) == REG)
14548 +           x = force_operand (x, 0);
14549 +       }
14550 +    }
14551 +
14552 +  return x;
14553 +}
14554 +
14555 +
14556  /* Output a dbCC; jCC sequence.  Note we do not handle the 
14557     floating point version of this sequence (Fdbcc).  We also
14558     do not handle alternative conditions when CC_NO_OVERFLOW is
14559 @@ -1713,15 +1803,16 @@
14560     whether we need strict checking.  */
14561  
14562  bool
14563 -m68k_legitimate_index_reg_p (rtx x, bool strict_p)
14564 +m68k_legitimate_index_reg_p (enum machine_mode mode, rtx x, bool strict_p)
14565  {
14566    if (!strict_p && GET_CODE (x) == SUBREG)
14567      x = SUBREG_REG (x);
14568  
14569    return (REG_P (x)
14570           && (strict_p
14571 -             ? REGNO_OK_FOR_INDEX_P (REGNO (x))
14572 -             : REGNO_OK_FOR_INDEX_NONSTRICT_P (REGNO (x))));
14573 +             ? REGNO_MODE_OK_FOR_INDEX_P (REGNO (x), mode)
14574 +             : (MODE_OK_FOR_INDEX_P (mode)
14575 +                && REGNO_OK_FOR_INDEX_NONSTRICT_P (REGNO (x)))));
14576  }
14577  
14578  /* Return true if X is a legitimate index expression for a (d8,An,Xn) or
14579 @@ -1729,7 +1820,8 @@
14580     ADDRESS if so.  STRICT_P says whether we need strict checking.  */
14581  
14582  static bool
14583 -m68k_decompose_index (rtx x, bool strict_p, struct m68k_address *address)
14584 +m68k_decompose_index (enum machine_mode mode, rtx x, bool strict_p,
14585 +                     struct m68k_address *address)
14586  {
14587    int scale;
14588  
14589 @@ -1753,7 +1845,7 @@
14590        && GET_MODE (XEXP (x, 0)) == HImode)
14591      x = XEXP (x, 0);
14592  
14593 -  if (m68k_legitimate_index_reg_p (x, strict_p))
14594 +  if (m68k_legitimate_index_reg_p (mode, x, strict_p))
14595      {
14596        address->scale = scale;
14597        address->index = x;
14598 @@ -1777,7 +1869,7 @@
14599           && !offset_within_block_p (base, INTVAL (offset)))
14600         return true;
14601      }
14602 -  return false;
14603 +  return m68k_tls_reference_p (x, false);
14604  }
14605  
14606  /* Return true if X is a legitimate constant address that can reach
14607 @@ -1805,7 +1897,7 @@
14608         return false;
14609      }
14610  
14611 -  return true;
14612 +  return !m68k_tls_reference_p (x, false);
14613  }
14614  
14615  /* Return true if X is a LABEL_REF for a jump table.  Assume that unplaced
14616 @@ -1872,15 +1964,17 @@
14617    /* Check for GOT loads.  These are (bd,An,Xn) addresses if
14618       TARGET_68020 && flag_pic == 2, otherwise they are (d16,An)
14619       addresses.  */
14620 -  if (flag_pic
14621 -      && GET_CODE (x) == PLUS
14622 -      && XEXP (x, 0) == pic_offset_table_rtx
14623 -      && (GET_CODE (XEXP (x, 1)) == SYMBOL_REF
14624 -         || GET_CODE (XEXP (x, 1)) == LABEL_REF))
14625 +  if (GET_CODE (x) == PLUS
14626 +      && XEXP (x, 0) == pic_offset_table_rtx)
14627      {
14628 -      address->base = XEXP (x, 0);
14629 -      address->offset = XEXP (x, 1);
14630 -      return true;
14631 +      /* As we are processing a PLUS, do not unwrap RELOC32 symbols --
14632 +        they are invalid in this context.  */
14633 +      if (m68k_unwrap_symbol (XEXP (x, 1), false) != XEXP (x, 1))
14634 +       {
14635 +         address->base = XEXP (x, 0);
14636 +         address->offset = XEXP (x, 1);
14637 +         return true;
14638 +       }
14639      }
14640  
14641    /* The ColdFire FPU only accepts addressing modes 2-5.  */
14642 @@ -1905,7 +1999,7 @@
14643       accesses to unplaced labels in other cases.  */
14644    if (GET_CODE (x) == PLUS
14645        && m68k_jump_table_ref_p (XEXP (x, 1))
14646 -      && m68k_decompose_index (XEXP (x, 0), strict_p, address))
14647 +      && m68k_decompose_index (mode, XEXP (x, 0), strict_p, address))
14648      {
14649        address->offset = XEXP (x, 1);
14650        return true;
14651 @@ -1937,7 +2031,7 @@
14652          worse code.  */
14653        if (address->offset
14654           && symbolic_operand (address->offset, VOIDmode)
14655 -         && m68k_decompose_index (x, strict_p, address))
14656 +         && m68k_decompose_index (mode, x, strict_p, address))
14657         return true;
14658      }
14659    else
14660 @@ -1956,14 +2050,14 @@
14661    if (GET_CODE (x) == PLUS)
14662      {
14663        if (m68k_legitimate_base_reg_p (XEXP (x, 0), strict_p)
14664 -         && m68k_decompose_index (XEXP (x, 1), strict_p, address))
14665 +         && m68k_decompose_index (mode, XEXP (x, 1), strict_p, address))
14666         {
14667           address->base = XEXP (x, 0);
14668           return true;
14669         }
14670  
14671        if (m68k_legitimate_base_reg_p (XEXP (x, 1), strict_p)
14672 -         && m68k_decompose_index (XEXP (x, 0), strict_p, address))
14673 +         && m68k_decompose_index (mode, XEXP (x, 0), strict_p, address))
14674         {
14675           address->base = XEXP (x, 1);
14676           return true;
14677 @@ -2025,6 +2119,243 @@
14678           && !address.index);
14679  }
14680  
14681 +/* Return GOT pointer.  */
14682 +
14683 +static rtx
14684 +m68k_get_gp (void)
14685 +{
14686 +  if (pic_offset_table_rtx == NULL_RTX)
14687 +    pic_offset_table_rtx = gen_rtx_REG (Pmode, PIC_REG);
14688 +
14689 +  crtl->uses_pic_offset_table = 1;
14690 +
14691 +  return pic_offset_table_rtx;
14692 +}
14693 +
14694 +/* M68K relocations, used to distinguish GOT and TLS relocations in UNSPEC
14695 +   wrappers.  */
14696 +enum m68k_reloc { RELOC_GOT, RELOC_TLSGD, RELOC_TLSLDM, RELOC_TLSLDO,
14697 +                 RELOC_TLSIE, RELOC_TLSLE };
14698 +
14699 +#define TLS_RELOC_P(RELOC) ((RELOC) != RELOC_GOT)
14700 +
14701 +/* Wrap symbol X into unspec representing relocation RELOC.
14702 +   BASE_REG - register that should be added to the result.
14703 +   TEMP_REG - if non-null, temporary register.  */
14704 +
14705 +static rtx
14706 +m68k_wrap_symbol (rtx x, enum m68k_reloc reloc, rtx base_reg, rtx temp_reg)
14707 +{
14708 +  bool use_x_p;
14709 +
14710 +  use_x_p = (base_reg == pic_offset_table_rtx) ? TARGET_XGOT : TARGET_XTLS;
14711 +
14712 +  if (TARGET_COLDFIRE && use_x_p)
14713 +    /* When compiling with -mx{got, tls} switch the code will look like this:
14714 +
14715 +       move.l <X>@<RELOC>,<TEMP_REG>
14716 +       add.l <BASE_REG>,<TEMP_REG>  */
14717 +    {
14718 +      /* Wrap X in UNSPEC_??? to tip m68k_output_addr_const_extra
14719 +        to put @RELOC after reference.  */
14720 +      x = gen_rtx_UNSPEC (Pmode, gen_rtvec (2, x, GEN_INT (reloc)),
14721 +                         UNSPEC_RELOC32);
14722 +      x = gen_rtx_CONST (Pmode, x);
14723 +
14724 +      if (temp_reg == NULL)
14725 +       {
14726 +         gcc_assert (can_create_pseudo_p ());
14727 +         temp_reg = gen_reg_rtx (Pmode);
14728 +       }
14729 +
14730 +      emit_move_insn (temp_reg, x);
14731 +      emit_insn (gen_addsi3 (temp_reg, temp_reg, base_reg));
14732 +      x = temp_reg;
14733 +    }
14734 +  else
14735 +    {
14736 +      x = gen_rtx_UNSPEC (Pmode, gen_rtvec (2, x, GEN_INT (reloc)),
14737 +                         UNSPEC_RELOC16);
14738 +      x = gen_rtx_CONST (Pmode, x);
14739 +
14740 +      x = gen_rtx_PLUS (Pmode, base_reg, x);
14741 +    }
14742 +
14743 +  return x;
14744 +}
14745 +
14746 +/* Helper for m68k_unwrap_symbol.
14747 +   Also, if unwrapping was successful (that is if (ORIG != <return value>)),
14748 +   sets *RELOC_PTR to relocation type for the symbol.  */
14749 +
14750 +static rtx
14751 +m68k_unwrap_symbol_1 (rtx orig, bool unwrap_reloc32_p,
14752 +                     enum m68k_reloc *reloc_ptr)
14753 +{
14754 +  if (GET_CODE (orig) == CONST)
14755 +    {
14756 +      rtx x;
14757 +      enum m68k_reloc dummy;
14758 +
14759 +      x = XEXP (orig, 0);
14760 +
14761 +      if (reloc_ptr == NULL)
14762 +       reloc_ptr = &dummy;
14763 +
14764 +      /* Handle an addend.  */
14765 +      if ((GET_CODE (x) == PLUS || GET_CODE (x) == MINUS)
14766 +         && CONST_INT_P (XEXP (x, 1)))
14767 +       x = XEXP (x, 0);
14768 +
14769 +      if (GET_CODE (x) == UNSPEC)
14770 +       {
14771 +         switch (XINT (x, 1))
14772 +           {
14773 +           case UNSPEC_RELOC16:
14774 +             orig = XVECEXP (x, 0, 0);
14775 +             *reloc_ptr = (enum m68k_reloc) INTVAL (XVECEXP (x, 0, 1));
14776 +             break;
14777 +
14778 +           case UNSPEC_RELOC32:
14779 +             if (unwrap_reloc32_p)
14780 +               {
14781 +                 orig = XVECEXP (x, 0, 0);
14782 +                 *reloc_ptr = (enum m68k_reloc) INTVAL (XVECEXP (x, 0, 1));
14783 +               }
14784 +             break;
14785 +
14786 +           default:
14787 +             break;
14788 +           }
14789 +       }
14790 +    }
14791 +
14792 +  return orig;
14793 +}
14794 +
14795 +/* Unwrap symbol from UNSPEC_RELOC16 and, if unwrap_reloc32_p,
14796 +   UNSPEC_RELOC32 wrappers.  */
14797 +
14798 +rtx
14799 +m68k_unwrap_symbol (rtx orig, bool unwrap_reloc32_p)
14800 +{
14801 +  return m68k_unwrap_symbol_1 (orig, unwrap_reloc32_p, NULL);
14802 +}
14803 +
14804 +/* Helper for m68k_final_prescan_insn.  */
14805 +
14806 +static int
14807 +m68k_final_prescan_insn_1 (rtx *x_ptr, void *data ATTRIBUTE_UNUSED)
14808 +{
14809 +  rtx x = *x_ptr;
14810 +
14811 +  if (m68k_unwrap_symbol (x, true) != x)
14812 +    /* For rationale of the below, see comment in m68k_final_prescan_insn.  */
14813 +    {
14814 +      rtx plus;
14815 +
14816 +      gcc_assert (GET_CODE (x) == CONST);
14817 +      plus = XEXP (x, 0);
14818 +
14819 +      if (GET_CODE (plus) == PLUS || GET_CODE (plus) == MINUS)
14820 +       {
14821 +         rtx unspec;
14822 +         rtx addend;
14823 +
14824 +         unspec = XEXP (plus, 0);
14825 +         gcc_assert (GET_CODE (unspec) == UNSPEC);
14826 +         addend = XEXP (plus, 1);
14827 +         gcc_assert (CONST_INT_P (addend));
14828 +
14829 +         /* We now have all the pieces, rearrange them.  */
14830 +
14831 +         /* Move symbol to plus.  */
14832 +         XEXP (plus, 0) = XVECEXP (unspec, 0, 0);
14833 +
14834 +         /* Move plus inside unspec.  */
14835 +         XVECEXP (unspec, 0, 0) = plus;
14836 +
14837 +         /* Move unspec to top level of const.  */
14838 +         XEXP (x, 0) = unspec;
14839 +       }
14840 +
14841 +      return -1;
14842 +    }
14843 +
14844 +  return 0;
14845 +}
14846 +
14847 +/* Prescan insn before outputing assembler for it.  */
14848 +
14849 +void
14850 +m68k_final_prescan_insn (rtx insn ATTRIBUTE_UNUSED,
14851 +                        rtx *operands, int n_operands)
14852 +{
14853 +  int i;
14854 +
14855 +  /* Combine and, possibly, other optimizations may do good job
14856 +     converting
14857 +       (const (unspec [(symbol)]))
14858 +     into
14859 +       (const (plus (unspec [(symbol)])
14860 +                    (const_int N))).
14861 +     The problem with this is emitting @TLS or @GOT decorations.
14862 +     The decoration is emitted when processing (unspec), so the
14863 +     result would be "#symbol@TLSLE+N" instead of "#symbol+N@TLSLE".
14864 +
14865 +     It seems that the easiest solution to this is to convert such
14866 +     operands to
14867 +       (const (unspec [(plus (symbol)
14868 +                             (const_int N))])).
14869 +     Note, that the top level of operand remains intact, so we don't have
14870 +     to patch up anything outside of the operand.  */
14871 +
14872 +  for (i = 0; i < n_operands; ++i)
14873 +    {
14874 +      rtx op;
14875 +
14876 +      op = operands[i];
14877 +
14878 +      for_each_rtx (&op, m68k_final_prescan_insn_1, NULL);
14879 +    }
14880 +}
14881 +
14882 +/* Move X to a register and add REG_EQUAL note pointing to ORIG.
14883 +   If REG is non-null, use it; generate new pseudo otherwise.  */
14884 +
14885 +static rtx
14886 +m68k_move_to_reg (rtx x, rtx orig, rtx reg)
14887 +{
14888 +  rtx insn;
14889 +
14890 +  if (reg == NULL_RTX)
14891 +    {
14892 +      gcc_assert (can_create_pseudo_p ());
14893 +      reg = gen_reg_rtx (Pmode);
14894 +    }
14895 +
14896 +  insn = emit_move_insn (reg, x);
14897 +  /* Put a REG_EQUAL note on this insn, so that it can be optimized
14898 +     by loop.  */
14899 +  set_unique_reg_note (insn, REG_EQUAL, orig);
14900 +
14901 +  return reg;
14902 +}
14903 +
14904 +/* Does the same as m68k_wrap_symbol, but returns a memory reference to
14905 +   GOT slot.  */
14906 +
14907 +static rtx
14908 +m68k_wrap_symbol_into_got_ref (rtx x, enum m68k_reloc reloc, rtx temp_reg)
14909 +{
14910 +  x = m68k_wrap_symbol (x, reloc, m68k_get_gp (), temp_reg);
14911 +
14912 +  x = gen_rtx_MEM (Pmode, x);
14913 +  MEM_READONLY_P (x) = 1;
14914 +
14915 +  return x;
14916 +}
14917 +
14918  /* Legitimize PIC addresses.  If the address is already
14919     position-independent, we return ORIG.  Newly generated
14920     position-independent addresses go to REG.  If we need more
14921 @@ -2076,42 +2407,15 @@
14922      {
14923        gcc_assert (reg);
14924  
14925 -      if (TARGET_COLDFIRE && TARGET_XGOT)
14926 -       /* When compiling with -mxgot switch the code for the above
14927 -          example will look like this:
14928 -
14929 -          movel a5, a0
14930 -          addl _foo@GOT, a0
14931 -          movel a0@, a0
14932 -          movel #12345, a0@  */
14933 -       {
14934 -         rtx pic_offset;
14935 -
14936 -         /* Wrap ORIG in UNSPEC_GOTOFF to tip m68k_output_addr_const_extra
14937 -            to put @GOT after reference.  */
14938 -         pic_offset = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, orig),
14939 -                                      UNSPEC_GOTOFF);
14940 -         pic_offset = gen_rtx_CONST (Pmode, pic_offset);
14941 -         emit_move_insn (reg, pic_offset);
14942 -         emit_insn (gen_addsi3 (reg, reg, pic_offset_table_rtx));
14943 -         pic_ref = gen_rtx_MEM (Pmode, reg);
14944 -       }
14945 -      else
14946 -       pic_ref = gen_rtx_MEM (Pmode,
14947 -                              gen_rtx_PLUS (Pmode,
14948 -                                            pic_offset_table_rtx, orig));
14949 -      crtl->uses_pic_offset_table = 1;
14950 -      MEM_READONLY_P (pic_ref) = 1;
14951 -      emit_move_insn (reg, pic_ref);
14952 -      return reg;
14953 +      pic_ref = m68k_wrap_symbol_into_got_ref (orig, RELOC_GOT, reg);
14954 +      pic_ref = m68k_move_to_reg (pic_ref, orig, reg);
14955      }
14956    else if (GET_CODE (orig) == CONST)
14957      {
14958        rtx base;
14959  
14960        /* Make sure this has not already been legitimized.  */
14961 -      if (GET_CODE (XEXP (orig, 0)) == PLUS
14962 -         && XEXP (XEXP (orig, 0), 0) == pic_offset_table_rtx)
14963 +      if (m68k_unwrap_symbol (orig, true) != orig)
14964         return orig;
14965  
14966        gcc_assert (reg);
14967 @@ -2124,13 +2428,257 @@
14968                                      base == reg ? 0 : reg);
14969  
14970        if (GET_CODE (orig) == CONST_INT)
14971 -       return plus_constant (base, INTVAL (orig));
14972 -      pic_ref = gen_rtx_PLUS (Pmode, base, orig);
14973 -      /* Likewise, should we set special REG_NOTEs here?  */
14974 +       pic_ref = plus_constant (base, INTVAL (orig));
14975 +      else
14976 +       pic_ref = gen_rtx_PLUS (Pmode, base, orig);
14977      }
14978 +
14979    return pic_ref;
14980  }
14981  
14982 +/* The __tls_get_addr symbol.  */
14983 +static GTY(()) rtx m68k_tls_get_addr;
14984 +
14985 +/* Return SYMBOL_REF for __tls_get_addr.  */
14986 +
14987 +static rtx
14988 +m68k_get_tls_get_addr (void)
14989 +{
14990 +  if (m68k_tls_get_addr == NULL_RTX)
14991 +    m68k_tls_get_addr = init_one_libfunc ("__tls_get_addr");
14992 +
14993 +  return m68k_tls_get_addr;
14994 +}
14995 +
14996 +/* Return libcall result in A0 instead of usual D0.  */
14997 +static bool m68k_libcall_value_in_a0_p = false;
14998 +
14999 +/* Emit instruction sequence that calls __tls_get_addr.  X is
15000 +   the TLS symbol we are referencing and RELOC is the symbol type to use
15001 +   (either TLSGD or TLSLDM).  EQV is the REG_EQUAL note for the sequence
15002 +   emitted.  A pseudo register with result of __tls_get_addr call is
15003 +   returned.  */
15004 +
15005 +static rtx
15006 +m68k_call_tls_get_addr (rtx x, rtx eqv, enum m68k_reloc reloc)
15007 +{
15008 +  rtx a0;
15009 +  rtx insns;
15010 +  rtx dest;
15011 +
15012 +  /* Emit the call sequence.  */
15013 +  start_sequence ();
15014 +
15015 +  /* FIXME: Unfortunately, emit_library_call_value does not
15016 +     consider (plus (%a5) (const (unspec))) to be a good enough
15017 +     operand for push, so it forces it into a register.  The bad
15018 +     thing about this is that combiner, due to copy propagation and other
15019 +     optimizations, sometimes can not later fix this.  As a consequence,
15020 +     additional register may be allocated resulting in a spill.
15021 +     For reference, see args processing loops in
15022 +     calls.c:emit_library_call_value_1.
15023 +     For testcase, see gcc.target/m68k/tls-{gd, ld}.c  */
15024 +  x = m68k_wrap_symbol (x, reloc, m68k_get_gp (), NULL_RTX);
15025 +
15026 +  /* __tls_get_addr() is not a libcall, but emitting a libcall_value
15027 +     is the simpliest way of generating a call.  The difference between
15028 +     __tls_get_addr() and libcall is that the result is returned in D0
15029 +     instead of A0.  To workaround this, we use m68k_libcall_value_in_a0_p
15030 +     which temporarily switches returning the result to A0.  */ 
15031 +
15032 +  m68k_libcall_value_in_a0_p = true;
15033 +  a0 = emit_library_call_value (m68k_get_tls_get_addr (), NULL_RTX, LCT_PURE,
15034 +                               Pmode, 1, x, Pmode);
15035 +  m68k_libcall_value_in_a0_p = false;
15036 +  
15037 +  insns = get_insns ();
15038 +  end_sequence ();
15039 +
15040 +  gcc_assert (can_create_pseudo_p ());
15041 +  dest = gen_reg_rtx (Pmode);
15042 +  emit_libcall_block (insns, dest, a0, eqv);
15043 +
15044 +  return dest;
15045 +}
15046 +
15047 +/* The __tls_get_addr symbol.  */
15048 +static GTY(()) rtx m68k_read_tp;
15049 +
15050 +/* Return SYMBOL_REF for __m68k_read_tp.  */
15051 +
15052 +static rtx
15053 +m68k_get_m68k_read_tp (void)
15054 +{
15055 +  if (m68k_read_tp == NULL_RTX)
15056 +    m68k_read_tp = init_one_libfunc ("__m68k_read_tp");
15057 +
15058 +  return m68k_read_tp;
15059 +}
15060 +
15061 +/* Emit instruction sequence that calls __m68k_read_tp.
15062 +   A pseudo register with result of __m68k_read_tp call is returned.  */
15063 +
15064 +static rtx 
15065 +m68k_call_m68k_read_tp (void)
15066 +{
15067 +  rtx a0;
15068 +  rtx eqv;
15069 +  rtx insns;
15070 +  rtx dest;
15071 +
15072 +  start_sequence ();
15073 +
15074 +  /* __m68k_read_tp() is not a libcall, but emitting a libcall_value
15075 +     is the simpliest way of generating a call.  The difference between
15076 +     __m68k_read_tp() and libcall is that the result is returned in D0
15077 +     instead of A0.  To workaround this, we use m68k_libcall_value_in_a0_p
15078 +     which temporarily switches returning the result to A0.  */ 
15079 +
15080 +  /* Emit the call sequence.  */
15081 +  m68k_libcall_value_in_a0_p = true;
15082 +  a0 = emit_library_call_value (m68k_get_m68k_read_tp (), NULL_RTX, LCT_PURE,
15083 +                               Pmode, 0);
15084 +  m68k_libcall_value_in_a0_p = false;
15085 +  insns = get_insns ();
15086 +  end_sequence ();
15087 +
15088 +  /* Attach a unique REG_EQUIV, to allow the RTL optimizers to
15089 +     share the m68k_read_tp result with other IE/LE model accesses.  */
15090 +  eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const1_rtx), UNSPEC_RELOC32);
15091 +
15092 +  gcc_assert (can_create_pseudo_p ());
15093 +  dest = gen_reg_rtx (Pmode);
15094 +  emit_libcall_block (insns, dest, a0, eqv);
15095 +
15096 +  return dest;
15097 +}
15098 +
15099 +/* Return a legitimized address for accessing TLS SYMBOL_REF X.
15100 +   For explanations on instructions sequences see TLS/NPTL ABI for m68k and
15101 +   ColdFire.  */
15102 +
15103 +rtx
15104 +m68k_legitimize_tls_address (rtx orig)
15105 +{
15106 +  switch (SYMBOL_REF_TLS_MODEL (orig))
15107 +    {
15108 +    case TLS_MODEL_GLOBAL_DYNAMIC:
15109 +      orig = m68k_call_tls_get_addr (orig, orig, RELOC_TLSGD);
15110 +      break;
15111 +
15112 +    case TLS_MODEL_LOCAL_DYNAMIC:
15113 +      {
15114 +       rtx eqv;
15115 +       rtx a0;
15116 +       rtx x;
15117
15118 +       /* Attach a unique REG_EQUIV, to allow the RTL optimizers to
15119 +          share the LDM result with other LD model accesses.  */
15120 +       eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx),
15121 +                             UNSPEC_RELOC32);
15122 +
15123 +       a0 = m68k_call_tls_get_addr (orig, eqv, RELOC_TLSLDM);
15124 +
15125 +       x = m68k_wrap_symbol (orig, RELOC_TLSLDO, a0, NULL_RTX);
15126 +
15127 +       if (can_create_pseudo_p ())
15128 +         x = m68k_move_to_reg (x, orig, NULL_RTX);
15129 +
15130 +       orig = x;
15131 +       break;
15132 +      }
15133 +
15134 +    case TLS_MODEL_INITIAL_EXEC:
15135 +      {
15136 +       rtx a0;
15137 +       rtx x;
15138 +
15139 +       a0 = m68k_call_m68k_read_tp ();
15140 +
15141 +       x = m68k_wrap_symbol_into_got_ref (orig, RELOC_TLSIE, NULL_RTX);
15142 +       x = gen_rtx_PLUS (Pmode, x, a0);
15143 +
15144 +       if (can_create_pseudo_p ())
15145 +         x = m68k_move_to_reg (x, orig, NULL_RTX);
15146 +
15147 +       orig = x;
15148 +       break;
15149 +      }
15150 +
15151 +    case TLS_MODEL_LOCAL_EXEC:
15152 +      {
15153 +       rtx a0;
15154 +       rtx x;
15155 +
15156 +       a0 = m68k_call_m68k_read_tp ();
15157 +
15158 +       x = m68k_wrap_symbol (orig, RELOC_TLSLE, a0, NULL_RTX);
15159 +
15160 +       if (can_create_pseudo_p ())
15161 +         x = m68k_move_to_reg (x, orig, NULL_RTX);
15162 +
15163 +       orig = x;
15164 +       break;
15165 +      }
15166 +
15167 +    default:
15168 +      gcc_unreachable ();
15169 +    }
15170 +
15171 +  return orig;
15172 +}
15173 +
15174 +/* Return true if X is a TLS symbol.  */
15175 +
15176 +static bool
15177 +m68k_tls_symbol_p (rtx x)
15178 +{
15179 +  if (!TARGET_HAVE_TLS)
15180 +    return false;
15181 +
15182 +  if (GET_CODE (x) != SYMBOL_REF)
15183 +    return false;
15184 +
15185 +  return SYMBOL_REF_TLS_MODEL (x) != 0;
15186 +}
15187 +
15188 +/* Helper for m68k_tls_referenced_p.  */
15189 +
15190 +static int
15191 +m68k_tls_reference_p_1 (rtx *x_ptr, void *data ATTRIBUTE_UNUSED)
15192 +{
15193 +  /* Note: this is not the same as m68k_tls_symbol_p.  */
15194 +  if (GET_CODE (*x_ptr) == SYMBOL_REF)
15195 +    return SYMBOL_REF_TLS_MODEL (*x_ptr) != 0 ? 1 : 0;
15196 +
15197 +  /* Don't recurse into legitimate TLS references.  */
15198 +  if (m68k_tls_reference_p (*x_ptr, true))
15199 +    return -1;
15200 +
15201 +  return 0;
15202 +}
15203 +
15204 +/* If !LEGITIMATE_P, return true if X is a TLS symbol reference,
15205 +   though illegitimate one.
15206 +   If LEGITIMATE_P, return true if X is a legitimate TLS symbol reference.  */
15207 +
15208 +bool
15209 +m68k_tls_reference_p (rtx x, bool legitimate_p)
15210 +{
15211 +  if (!TARGET_HAVE_TLS)
15212 +    return false;
15213 +
15214 +  if (!legitimate_p)
15215 +    return for_each_rtx (&x, m68k_tls_reference_p_1, NULL) == 1 ? true : false;
15216 +  else
15217 +    {
15218 +      enum m68k_reloc reloc = RELOC_GOT;
15219 +
15220 +      return (m68k_unwrap_symbol_1 (x, true, &reloc) != x
15221 +             && TLS_RELOC_P (reloc));
15222 +    }
15223 +}
15224 +
15225  \f
15226  
15227  #define USE_MOVQ(i)    ((unsigned) ((i) + 128) <= 255)
15228 @@ -3918,18 +4466,92 @@
15229      }
15230  }
15231  
15232 +/* Return string for TLS relocation RELOC.  */
15233 +
15234 +static const char *
15235 +m68k_get_reloc_decoration (enum m68k_reloc reloc)
15236 +{
15237 +  /* To my knowledge, !MOTOROLA assemblers don't support TLS.  */
15238 +  gcc_assert (MOTOROLA || reloc == RELOC_GOT);
15239 +
15240 +  switch (reloc)
15241 +    {
15242 +    case RELOC_GOT:
15243 +      if (MOTOROLA)
15244 +       {
15245 +         if (flag_pic == 1 && TARGET_68020)
15246 +           return "@GOT.w";
15247 +         else
15248 +           return "@GOT";
15249 +       }
15250 +      else
15251 +       {
15252 +         if (TARGET_68020)
15253 +           {
15254 +             switch (flag_pic)
15255 +               {
15256 +               case 1:
15257 +                 return ":w";
15258 +               case 2:
15259 +                 return ":l";
15260 +               default:
15261 +                 return "";
15262 +               }
15263 +           }
15264 +       }
15265 +
15266 +    case RELOC_TLSGD:
15267 +      return "@TLSGD";
15268 +
15269 +    case RELOC_TLSLDM:
15270 +      return "@TLSLDM";
15271 +
15272 +    case RELOC_TLSLDO:
15273 +      return "@TLSLDO";
15274 +
15275 +    case RELOC_TLSIE:
15276 +      return "@TLSIE";
15277 +
15278 +    case RELOC_TLSLE:
15279 +      return "@TLSLE";
15280 +
15281 +    default:
15282 +      gcc_unreachable ();
15283 +    }
15284 +}
15285 +
15286  /* m68k implementation of OUTPUT_ADDR_CONST_EXTRA.  */
15287  
15288  bool
15289  m68k_output_addr_const_extra (FILE *file, rtx x)
15290  {
15291 -  if (GET_CODE (x) != UNSPEC || XINT (x, 1) != UNSPEC_GOTOFF)
15292 -    return false;
15293 +  if (GET_CODE (x) == UNSPEC)
15294 +    {
15295 +      switch (XINT (x, 1))
15296 +       {
15297 +       case UNSPEC_RELOC16:
15298 +       case UNSPEC_RELOC32:
15299 +         output_addr_const (file, XVECEXP (x, 0, 0));
15300 +         fputs (m68k_get_reloc_decoration (INTVAL (XVECEXP (x, 0, 1))), file);
15301 +         return true;
15302  
15303 -  output_addr_const (file, XVECEXP (x, 0, 0));
15304 -  /* ??? What is the non-MOTOROLA syntax?  */
15305 -  fputs ("@GOT", file);
15306 -  return true;
15307 +       default:
15308 +         break;
15309 +       }
15310 +    }
15311 +
15312 +  return false;
15313 +}
15314 +
15315 +/* M68K implementation of TARGET_ASM_OUTPUT_DWARF_DTPREL.  */
15316 +
15317 +static void
15318 +m68k_output_dwarf_dtprel (FILE *file, int size, rtx x)
15319 +{
15320 +  gcc_assert (size == 4);
15321 +  fputs ("\t.long\t", file);
15322 +  output_addr_const (file, x);
15323 +  fputs ("@TLSLDO+0x8000", file);
15324  }
15325  
15326  \f
15327 @@ -4019,15 +4641,8 @@
15328           else
15329             {
15330               if (address.offset)
15331 -               {
15332 -                 output_addr_const (file, address.offset);
15333 -                 if (flag_pic && address.base == pic_offset_table_rtx)
15334 -                   {
15335 -                     fprintf (file, "@GOT");
15336 -                     if (flag_pic == 1 && TARGET_68020)
15337 -                       fprintf (file, ".w");
15338 -                   }
15339 -               }
15340 +               output_addr_const (file, address.offset);
15341 +
15342               putc ('(', file);
15343               if (address.base)
15344                 fputs (M68K_REGNAME (REGNO (address.base)), file);
15345 @@ -4060,19 +4675,7 @@
15346                     fputs (M68K_REGNAME (REGNO (address.base)), file);
15347                   fprintf (file, "@(");
15348                   if (address.offset)
15349 -                   {
15350 -                     output_addr_const (file, address.offset);
15351 -                     if (address.base == pic_offset_table_rtx && TARGET_68020)
15352 -                       switch (flag_pic)
15353 -                         {
15354 -                         case 1:
15355 -                           fprintf (file, ":w"); break;
15356 -                         case 2:
15357 -                           fprintf (file, ":l"); break;
15358 -                         default:
15359 -                           break;
15360 -                         }
15361 -                   }
15362 +                   output_addr_const (file, address.offset);
15363                 }
15364               /* Print the ",index" component, if any.  */
15365               if (address.index)
15366 @@ -4580,7 +5183,8 @@
15367    default:
15368      break;
15369    }
15370 -  return gen_rtx_REG (mode, D0_REG);
15371 +
15372 +  return gen_rtx_REG (mode, m68k_libcall_value_in_a0_p ? A0_REG : D0_REG);
15373  }
15374  
15375  rtx
15376 @@ -4846,9 +5450,8 @@
15377           return OP_TYPE_IMM_L;
15378  
15379         default:
15380 -         if (GET_CODE (op) == SYMBOL_REF)
15381 -           /* ??? Just a guess.  Probably we can guess better using length
15382 -              attribute of the instructions.  */
15383 +         if (symbolic_operand (m68k_unwrap_symbol (op, false), VOIDmode))
15384 +           /* Just a guess.  */
15385             return OP_TYPE_IMM_W;
15386  
15387           return OP_TYPE_IMM_L;
15388 @@ -5793,3 +6396,5 @@
15389        return 0;
15390      }
15391  }
15392 +
15393 +#include "gt-m68k.h"
15394 diff -Nur a/gcc/config/m68k/m68k-devices.def b/gcc/config/m68k/m68k-devices.def
15395 --- a/gcc/config/m68k/m68k-devices.def  2009-02-20 16:20:38.000000000 +0100
15396 +++ b/gcc/config/m68k/m68k-devices.def  2010-01-25 09:50:29.025687257 +0100
15397 @@ -72,8 +72,8 @@
15398  /* 680x0 series processors.  */
15399  M68K_DEVICE ("68000", m68000,   "68000", "68000", 68000,    isa_00,    0)
15400  M68K_DEVICE ("68010", m68010,   "68010", "68000", 68010,    isa_10,    0)
15401 -M68K_DEVICE ("68020", m68020,   "68020", "68020", 68020,    isa_20,    FL_MMU)
15402 -M68K_DEVICE ("68030", m68030,   "68030", "68020", 68030,    isa_20,    FL_MMU)
15403 +M68K_DEVICE ("68020", m68020,   "68020", "68020", 68020,    isa_20,    FL_MMU | FL_UCLINUX)
15404 +M68K_DEVICE ("68030", m68030,   "68030", "68020", 68030,    isa_20,    FL_MMU | FL_UCLINUX)
15405  M68K_DEVICE ("68040", m68040,   "68040", "68040", 68040,    isa_40,    FL_MMU)
15406  M68K_DEVICE ("68060", m68060,   "68060", "68060", 68060,    isa_40,    FL_MMU)
15407  M68K_DEVICE ("68302", m68302,   "68302", "68000", 68000,    isa_00,    FL_MMU)
15408 @@ -81,7 +81,13 @@
15409  M68K_DEVICE ("cpu32", cpu32,    "cpu32", "cpu32", cpu32,    isa_cpu32, FL_MMU)
15410  
15411  /* ColdFire CFV1 processor.  */
15412 -M68K_DEVICE ("51qe",  mcf51qe,  "51qe",  "51qe",  cfv1,     isa_c,     FL_CF_USP)
15413 +/* For historical reasons, the 51 multilib is named 51qe.  */
15414 +M68K_DEVICE ("51",    mcf51,    "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
15415 +M68K_DEVICE ("51ac",  mcf51ac,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
15416 +M68K_DEVICE ("51cn",  mcf51cn,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
15417 +M68K_DEVICE ("51em",  mcf51em,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP | FL_CF_MAC)
15418 +M68K_DEVICE ("51jm",  mcf51jm,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
15419 +M68K_DEVICE ("51qe",  mcf51qe,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
15420  
15421  /* ColdFire CFV2 processors.  */
15422  M68K_DEVICE ("5202",  mcf5202,  "5206",  "5206",  cfv2,     isa_a,     0)
15423 @@ -97,6 +103,7 @@
15424  M68K_DEVICE ("5213",  mcf5213,  "5213",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
15425  M68K_DEVICE ("5214",  mcf5214,  "5216",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15426  M68K_DEVICE ("5216",  mcf5216,  "5216",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15427 +M68K_DEVICE ("5221x", mcf5221x, "5221x", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
15428  M68K_DEVICE ("52221", mcf52221, "52223", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
15429  M68K_DEVICE ("52223", mcf52223, "52223", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
15430  M68K_DEVICE ("52230", mcf52230, "52235", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15431 @@ -107,6 +114,14 @@
15432  M68K_DEVICE ("52235", mcf52235, "52235", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15433  M68K_DEVICE ("5224",  mcf5224,  "5225",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
15434  M68K_DEVICE ("5225",  mcf5225,  "5225",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
15435 +M68K_DEVICE ("52252", mcf52252, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15436 +M68K_DEVICE ("52254", mcf52254, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15437 +M68K_DEVICE ("52255", mcf52255, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15438 +M68K_DEVICE ("52256", mcf52256, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15439 +M68K_DEVICE ("52258", mcf52258, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15440 +M68K_DEVICE ("52259", mcf52259, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15441 +M68K_DEVICE ("52274", mcf52274, "52277", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15442 +M68K_DEVICE ("52277", mcf52277, "52277", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15443  M68K_DEVICE ("5232",  mcf5232,  "5235",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15444  M68K_DEVICE ("5233",  mcf5233,  "5235",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15445  M68K_DEVICE ("5234",  mcf5234,  "5235",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15446 @@ -126,6 +141,13 @@
15447  M68K_DEVICE ("528x",  mcf528x,  "5282",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15448  
15449  /* CFV3 processors.  */
15450 +M68K_DEVICE ("53011", mcf53011, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15451 +M68K_DEVICE ("53012", mcf53012, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15452 +M68K_DEVICE ("53013", mcf53013, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15453 +M68K_DEVICE ("53014", mcf53014, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15454 +M68K_DEVICE ("53015", mcf53015, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15455 +M68K_DEVICE ("53016", mcf53016, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15456 +M68K_DEVICE ("53017", mcf53017, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15457  M68K_DEVICE ("5307",  mcf5307,  "5307",  "5307",  cfv3,     isa_a,     FL_CF_HWDIV | FL_CF_MAC)
15458  M68K_DEVICE ("5327",  mcf5327,  "5329",  "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15459  M68K_DEVICE ("5328",  mcf5328,  "5329",  "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
15460 @@ -137,12 +159,17 @@
15461  
15462  /* CFV4/CFV4e processors.  */
15463  M68K_DEVICE ("5407",  mcf5407,  "5407",  "5407",  cfv4,     isa_b,     FL_CF_MAC)
15464 -M68K_DEVICE ("54450", mcf54450, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
15465 -M68K_DEVICE ("54451", mcf54451, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
15466 -M68K_DEVICE ("54452", mcf54452, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
15467 -M68K_DEVICE ("54453", mcf54453, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
15468 -M68K_DEVICE ("54454", mcf54454, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
15469 -M68K_DEVICE ("54455", mcf54455, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
15470 +M68K_DEVICE ("54410", mcf54410, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
15471 +M68K_DEVICE ("54415", mcf54415, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
15472 +M68K_DEVICE ("54416", mcf54416, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
15473 +M68K_DEVICE ("54417", mcf54417, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
15474 +M68K_DEVICE ("54418", mcf54418, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
15475 +M68K_DEVICE ("54450", mcf54450, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
15476 +M68K_DEVICE ("54451", mcf54451, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
15477 +M68K_DEVICE ("54452", mcf54452, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
15478 +M68K_DEVICE ("54453", mcf54453, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
15479 +M68K_DEVICE ("54454", mcf54454, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
15480 +M68K_DEVICE ("54455", mcf54455, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
15481  M68K_DEVICE ("5470",  mcf5470,  "5475",  "5475",  cfv4e,    isa_b,     FL_CF_USP | FL_CF_EMAC | FL_CF_FPU | FL_MMU)
15482  M68K_DEVICE ("5471",  mcf5471,  "5475",  "5475",  cfv4e,    isa_b,     FL_CF_USP | FL_CF_EMAC | FL_CF_FPU | FL_MMU)
15483  M68K_DEVICE ("5472",  mcf5472,  "5475",  "5475",  cfv4e,    isa_b,     FL_CF_USP | FL_CF_EMAC | FL_CF_FPU | FL_MMU)
15484 diff -Nur a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
15485 --- a/gcc/config/m68k/m68k.h    2008-11-19 12:23:28.000000000 +0100
15486 +++ b/gcc/config/m68k/m68k.h    2010-01-25 09:50:29.025687257 +0100
15487 @@ -232,6 +232,7 @@
15488  #define FL_ISA_C     (1 << 16)
15489  #define FL_FIDOA     (1 << 17)
15490  #define FL_MMU              0   /* Used by multilib machinery.  */
15491 +#define FL_UCLINUX   0   /* Used by multilib machinery.  */
15492  
15493  #define TARGET_68010           ((m68k_cpu_flags & FL_ISA_68010) != 0)
15494  #define TARGET_68020           ((m68k_cpu_flags & FL_ISA_68020) != 0)
15495 @@ -501,7 +502,8 @@
15496  
15497  extern enum reg_class regno_reg_class[];
15498  #define REGNO_REG_CLASS(REGNO) (regno_reg_class[(REGNO)])
15499 -#define INDEX_REG_CLASS GENERAL_REGS
15500 +#define MODE_INDEX_REG_CLASS(MODE) \
15501 +  (MODE_OK_FOR_INDEX_P (MODE) ? GENERAL_REGS : NO_REGS)
15502  #define BASE_REG_CLASS ADDR_REGS
15503  
15504  #define PREFERRED_RELOAD_CLASS(X,CLASS) \
15505 @@ -644,7 +646,7 @@
15506     (though the operand list is empty).  */
15507  #define TRANSFER_FROM_TRAMPOLINE                               \
15508  void                                                           \
15509 -__transfer_from_trampoline ()                                  \
15510 +__transfer_from_trampoline (void)                              \
15511  {                                                              \
15512    register char *a0 asm (M68K_STATIC_CHAIN_REG_NAME);          \
15513    asm (GLOBAL_ASM_OP "___trampoline");                         \
15514 @@ -675,6 +677,10 @@
15515  #define HAVE_POST_INCREMENT 1
15516  #define HAVE_PRE_DECREMENT 1
15517  
15518 +/* Return true if addresses of mode MODE can have an index register.  */
15519 +#define MODE_OK_FOR_INDEX_P(MODE) \
15520 +  (!TARGET_COLDFIRE_FPU || GET_MODE_CLASS (MODE) != MODE_FLOAT)
15521 +
15522  /* Macros to check register numbers against specific register classes.  */
15523  
15524  /* True for data registers, D0 through D7.  */
15525 @@ -689,9 +695,10 @@
15526  /* True for floating point registers, FP0 through FP7.  */
15527  #define FP_REGNO_P(REGNO)      IN_RANGE (REGNO, 16, 23)
15528  
15529 -#define REGNO_OK_FOR_INDEX_P(REGNO)                    \
15530 -  (INT_REGNO_P (REGNO)                                 \
15531 -   || INT_REGNO_P (reg_renumber[REGNO]))
15532 +#define REGNO_MODE_OK_FOR_INDEX_P(REGNO, MODE)         \
15533 +  (MODE_OK_FOR_INDEX_P (MODE)                          \
15534 +   && (INT_REGNO_P (REGNO)                             \
15535 +       || INT_REGNO_P (reg_renumber[REGNO])))
15536  
15537  #define REGNO_OK_FOR_BASE_P(REGNO)                     \
15538    (ADDRESS_REGNO_P (REGNO)                             \
15539 @@ -751,13 +758,14 @@
15540  
15541  #define LEGITIMATE_PIC_OPERAND_P(X)                            \
15542    (!symbolic_operand (X, VOIDmode)                             \
15543 -   || (TARGET_PCREL && REG_STRICT_P))
15544 +   || (TARGET_PCREL && REG_STRICT_P)                           \
15545 +   || m68k_tls_reference_p (X, true))
15546  
15547  #define REG_OK_FOR_BASE_P(X) \
15548    m68k_legitimate_base_reg_p (X, REG_STRICT_P)
15549  
15550 -#define REG_OK_FOR_INDEX_P(X) \
15551 -  m68k_legitimate_index_reg_p (X, REG_STRICT_P)
15552 +#define REG_MODE_OK_FOR_INDEX_P(X, MODE)       \
15553 +  m68k_legitimate_index_reg_p (MODE, X, REG_STRICT_P)
15554  
15555  #define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)                                \
15556    do                                                                   \
15557 @@ -770,52 +778,19 @@
15558  /* This address is OK as it stands.  */
15559  #define PIC_CASE_VECTOR_ADDRESS(index) index
15560  \f
15561 -/* For the 68000, we handle X+REG by loading X into a register R and
15562 -   using R+REG.  R will go in an address reg and indexing will be used.
15563 -   However, if REG is a broken-out memory address or multiplication,
15564 -   nothing needs to be done because REG can certainly go in an address reg.  */
15565 -#define COPY_ONCE(Y) if (!copied) { Y = copy_rtx (Y); copied = ch = 1; }
15566 -#define LEGITIMIZE_ADDRESS(X,OLDX,MODE,WIN)   \
15567 -{ register int ch = (X) != (OLDX);                                     \
15568 -  if (GET_CODE (X) == PLUS)                                            \
15569 -    { int copied = 0;                                                  \
15570 -      if (GET_CODE (XEXP (X, 0)) == MULT)                              \
15571 -       { COPY_ONCE (X); XEXP (X, 0) = force_operand (XEXP (X, 0), 0);} \
15572 -      if (GET_CODE (XEXP (X, 1)) == MULT)                              \
15573 -       { COPY_ONCE (X); XEXP (X, 1) = force_operand (XEXP (X, 1), 0);} \
15574 -      if (ch && GET_CODE (XEXP (X, 1)) == REG                          \
15575 -         && GET_CODE (XEXP (X, 0)) == REG)                             \
15576 -       { if (TARGET_COLDFIRE_FPU                                       \
15577 -             && GET_MODE_CLASS (MODE) == MODE_FLOAT)                   \
15578 -           { COPY_ONCE (X); X = force_operand (X, 0);}                 \
15579 -         goto WIN; }                                                   \
15580 -      if (ch) { GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN); }             \
15581 -      if (GET_CODE (XEXP (X, 0)) == REG                                        \
15582 -              || (GET_CODE (XEXP (X, 0)) == SIGN_EXTEND                \
15583 -                  && GET_CODE (XEXP (XEXP (X, 0), 0)) == REG           \
15584 -                  && GET_MODE (XEXP (XEXP (X, 0), 0)) == HImode))      \
15585 -       { register rtx temp = gen_reg_rtx (Pmode);                      \
15586 -         register rtx val = force_operand (XEXP (X, 1), 0);            \
15587 -         emit_move_insn (temp, val);                                   \
15588 -         COPY_ONCE (X);                                                \
15589 -         XEXP (X, 1) = temp;                                           \
15590 -         if (TARGET_COLDFIRE_FPU && GET_MODE_CLASS (MODE) == MODE_FLOAT \
15591 -             && GET_CODE (XEXP (X, 0)) == REG)                         \
15592 -           X = force_operand (X, 0);                                   \
15593 -         goto WIN; }                                                   \
15594 -      else if (GET_CODE (XEXP (X, 1)) == REG                           \
15595 -              || (GET_CODE (XEXP (X, 1)) == SIGN_EXTEND                \
15596 -                  && GET_CODE (XEXP (XEXP (X, 1), 0)) == REG           \
15597 -                  && GET_MODE (XEXP (XEXP (X, 1), 0)) == HImode))      \
15598 -       { register rtx temp = gen_reg_rtx (Pmode);                      \
15599 -         register rtx val = force_operand (XEXP (X, 0), 0);            \
15600 -         emit_move_insn (temp, val);                                   \
15601 -         COPY_ONCE (X);                                                \
15602 -         XEXP (X, 0) = temp;                                           \
15603 -         if (TARGET_COLDFIRE_FPU && GET_MODE_CLASS (MODE) == MODE_FLOAT \
15604 -             && GET_CODE (XEXP (X, 1)) == REG)                         \
15605 -           X = force_operand (X, 0);                                   \
15606 -         goto WIN; }}}
15607 +#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN)         \
15608 +do {                                                   \
15609 +  rtx __x;                                             \
15610 +                                                       \
15611 +  __x = m68k_legitimize_address (X, OLDX, MODE);       \
15612 +  if (__x != NULL_RTX)                                 \
15613 +    {                                                  \
15614 +      X = __x;                                         \
15615 +                                                       \
15616 +      if (memory_address_p (MODE, X))                  \
15617 +       goto WIN;                                       \
15618 +    }                                                  \
15619 +} while (0)
15620  
15621  /* On the 68000, only predecrement and postincrement address depend thus
15622     (the amount of decrement or increment being the length of the operand).
15623 @@ -1028,6 +1003,9 @@
15624    assemble_name ((FILE), (NAME)),              \
15625    fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
15626  
15627 +#define FINAL_PRESCAN_INSN(INSN, OPVEC, NOPERANDS) \
15628 +  m68k_final_prescan_insn (INSN, OPVEC, NOPERANDS)
15629 +
15630  /* On the 68000, we use several CODE characters:
15631     '.' for dot needed in Motorola-style opcode names.
15632     '-' for an operand pushing on the stack:
15633 diff -Nur a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
15634 --- a/gcc/config/m68k/m68k.md   2009-02-20 16:20:38.000000000 +0100
15635 +++ b/gcc/config/m68k/m68k.md   2010-01-25 09:50:29.025687257 +0100
15636 @@ -116,7 +116,8 @@
15637     (UNSPEC_GOT 3)
15638     (UNSPEC_IB 4)
15639     (UNSPEC_TIE 5)
15640 -   (UNSPEC_GOTOFF 6)
15641 +   (UNSPEC_RELOC16 6)
15642 +   (UNSPEC_RELOC32 7)
15643    ])
15644  
15645  ;; UNSPEC_VOLATILE usage:
15646 @@ -414,7 +415,7 @@
15647  
15648  (define_insn "tst<mode>_cf"
15649    [(set (cc0)
15650 -       (match_operand:FP 0 "general_operand" "f<FP:dreg><Q>U"))]
15651 +       (match_operand:FP 0 "general_operand" "f<FP:dreg>m"))]
15652    "TARGET_COLDFIRE_FPU"
15653  {
15654    cc_status.flags = CC_IN_68881;
15655 @@ -570,8 +571,8 @@
15656  
15657  (define_insn "*cmp<mode>_cf"
15658    [(set (cc0)
15659 -       (compare (match_operand:FP 0 "fp_src_operand" "f,f,<FP:dreg><Q>U")
15660 -                (match_operand:FP 1 "fp_src_operand" "f,<FP:dreg><Q>U,f")))]
15661 +       (compare (match_operand:FP 0 "fp_src_operand" "f,f,<FP:dreg>m")
15662 +                (match_operand:FP 1 "fp_src_operand" "f,<FP:dreg>m,f")))]
15663    "TARGET_COLDFIRE_FPU
15664     && (register_operand (operands[0], <MODE>mode)
15665         || register_operand (operands[1], <MODE>mode))"
15666 @@ -779,7 +780,41 @@
15667  {
15668    rtx tmp, base, offset;
15669  
15670 -  if (flag_pic && !TARGET_PCREL && symbolic_operand (operands[1], SImode))
15671 +  /* Recognize the case where operand[1] is a reference to thread-local
15672 +     data and load its address to a register.  */
15673 +  if (!TARGET_PCREL && m68k_tls_reference_p (operands[1], false))
15674 +    {
15675 +      rtx tmp = operands[1];
15676 +      rtx addend = NULL;
15677 +
15678 +      if (GET_CODE (tmp) == CONST && GET_CODE (XEXP (tmp, 0)) == PLUS)
15679 +        {
15680 +          addend = XEXP (XEXP (tmp, 0), 1);
15681 +          tmp = XEXP (XEXP (tmp, 0), 0);
15682 +        }
15683 +
15684 +      gcc_assert (GET_CODE (tmp) == SYMBOL_REF);
15685 +      gcc_assert (SYMBOL_REF_TLS_MODEL (tmp) != 0);
15686 +
15687 +      tmp = m68k_legitimize_tls_address (tmp);
15688 +
15689 +      if (addend)
15690 +        {
15691 +         if (!REG_P (tmp))
15692 +           {
15693 +             rtx reg;
15694 +
15695 +             reg = gen_reg_rtx (Pmode);
15696 +             emit_move_insn (reg, tmp);
15697 +             tmp = reg;
15698 +           }
15699 +
15700 +          tmp = gen_rtx_PLUS (SImode, tmp, addend);
15701 +       }
15702 +
15703 +      operands[1] = tmp;
15704 +    }
15705 +  else if (flag_pic && !TARGET_PCREL && symbolic_operand (operands[1], SImode))
15706      {
15707        /* The source is an address which requires PIC relocation.
15708           Call legitimize_pic_address with the source, mode, and a relocation
15709 @@ -1070,10 +1105,8 @@
15710  ;; SFmode MEMs are restricted to modes 2-4 if TARGET_COLDFIRE_FPU.
15711  ;; The move instructions can handle all combinations.
15712  (define_insn "movsf_cf_hard"
15713 -  [(set (match_operand:SF 0 "nonimmediate_operand" "=r<Q>U, f,    f,mr,f,r<Q>,f
15714 -,m")
15715 -        (match_operand:SF 1 "general_operand"      " f,     r<Q>U,f,rm,F,F,   m
15716 -,f"))]
15717 +  [(set (match_operand:SF 0 "nonimmediate_operand" "=rm,f, f,rm,f,r<Q>,f,m")
15718 +        (match_operand:SF 1 "general_operand"      " f, rm,f,rm,F,F,   m,f"))]
15719    "TARGET_COLDFIRE_FPU"
15720  {
15721    if (which_alternative == 4 || which_alternative == 5) {
15722 @@ -1215,8 +1248,8 @@
15723  })
15724  
15725  (define_insn "movdf_cf_hard"
15726 -  [(set (match_operand:DF 0 "nonimmediate_operand" "=f,    <Q>U,r,f,r,r,m,f")
15727 -        (match_operand:DF 1 "general_operand"      " f<Q>U,f,   f,r,r,m,r,E"))]
15728 +  [(set (match_operand:DF 0 "nonimmediate_operand" "=f, m,r,f,r,r,m,f")
15729 +        (match_operand:DF 1 "general_operand"      " fm,f,f,r,r,m,r,E"))]
15730    "TARGET_COLDFIRE_FPU"
15731  {
15732    rtx xoperands[3];
15733 @@ -1857,7 +1890,7 @@
15734  (define_insn "extendsfdf2_cf"
15735    [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f")
15736         (float_extend:DF
15737 -        (match_operand:SF 1 "general_operand" "f,<Q>U")))]
15738 +        (match_operand:SF 1 "general_operand" "f,m")))]
15739    "TARGET_COLDFIRE_FPU"
15740  {
15741    if (FP_REG_P (operands[0]) && FP_REG_P (operands[1]))
15742 @@ -1897,9 +1930,9 @@
15743  })
15744  
15745  (define_insn "truncdfsf2_cf"
15746 -  [(set (match_operand:SF 0 "nonimmediate_operand" "=f,d<Q>U")
15747 +  [(set (match_operand:SF 0 "nonimmediate_operand" "=f,dm")
15748         (float_truncate:SF
15749 -         (match_operand:DF 1 "general_operand" "<Q>U,f")))]
15750 +         (match_operand:DF 1 "general_operand" "m,f")))]
15751    "TARGET_COLDFIRE_FPU"
15752    "@
15753    fsmove%.d %1,%0
15754 @@ -2045,7 +2078,7 @@
15755  
15756  (define_insn "ftrunc<mode>2_cf"
15757    [(set (match_operand:FP 0 "nonimmediate_operand" "=f")
15758 -        (fix:FP (match_operand:FP 1 "general_operand" "f<FP:dreg><Q>U")))]
15759 +        (fix:FP (match_operand:FP 1 "general_operand" "f<FP:dreg>m")))]
15760    "TARGET_COLDFIRE_FPU"
15761  {
15762    if (FP_REG_P (operands[1]))
15763 @@ -2338,9 +2371,9 @@
15764    "* return output_addsi3 (operands);")
15765  
15766  (define_insn_and_split "*addsi3_5200"
15767 -  [(set (match_operand:SI 0 "nonimmediate_operand"         "=mr,mr,a,m,r,  ?a, ?a,?a,?a")
15768 -       (plus:SI (match_operand:SI 1 "general_operand"     "%0, 0, 0,0,0,   a,  a, r, a")
15769 -                (match_operand:SI 2 "general_src_operand" " I, L, J,d,mrKi,Cj, r, a, J")))]
15770 +  [(set (match_operand:SI 0 "nonimmediate_operand"         "=mr,mr,a,  m,r,  ?a, ?a,?a,?a")
15771 +       (plus:SI (match_operand:SI 1 "general_operand"     "%0, 0, 0,  0,0,   a,  a, r, a")
15772 +                (match_operand:SI 2 "general_src_operand" " I, L, JCu,d,mrKi,Cj, r, a, JCu")))]
15773    "TARGET_COLDFIRE"
15774  {
15775    switch (which_alternative)
15776 @@ -2382,9 +2415,9 @@
15777         (plus:SI (match_dup 0)
15778                  (match_dup 1)))]
15779    ""
15780 -  [(set_attr "type" "aluq_l,aluq_l,lea,alu_l,alu_l,*,lea,lea,lea")
15781 -   (set_attr "opy" "2,2,*,2,2,*,*,*,*")
15782 -   (set_attr "opy_type" "*,*,mem5,*,*,*,mem6,mem6,mem5")])
15783 +  [(set_attr "type"     "aluq_l,aluq_l,lea, alu_l,alu_l,*,lea, lea, lea")
15784 +   (set_attr "opy"      "2,     2,     *,   2,    2,    *,*,   *,   *")
15785 +   (set_attr "opy_type" "*,     *,     mem5,*,    *,    *,mem6,mem6,mem5")])
15786  
15787  (define_insn ""
15788    [(set (match_operand:SI 0 "nonimmediate_operand" "=a")
15789 @@ -2666,7 +2699,7 @@
15790  (define_insn "add<mode>3_cf"
15791    [(set (match_operand:FP 0 "nonimmediate_operand" "=f")
15792         (plus:FP (match_operand:FP 1 "general_operand" "%0")
15793 -                (match_operand:FP 2 "general_operand" "f<FP:dreg><Q>U")))]
15794 +                (match_operand:FP 2 "general_operand" "f<FP:dreg>m")))]
15795    "TARGET_COLDFIRE_FPU"
15796  {
15797    if (FP_REG_P (operands[2]))
15798 @@ -2889,7 +2922,7 @@
15799  (define_insn "sub<mode>3_cf"
15800    [(set (match_operand:FP 0 "nonimmediate_operand" "=f")
15801          (minus:FP (match_operand:FP 1 "general_operand" "0")
15802 -                  (match_operand:FP 2 "general_operand" "f<FP:dreg><Q>U")))]
15803 +                  (match_operand:FP 2 "general_operand" "f<FP:dreg>m")))]
15804    "TARGET_COLDFIRE_FPU"
15805  {
15806    if (FP_REG_P (operands[2]))
15807 @@ -3245,7 +3278,7 @@
15808  (define_insn "fmul<mode>3_cf"
15809    [(set (match_operand:FP 0 "nonimmediate_operand" "=f")
15810         (mult:FP (match_operand:FP 1 "general_operand" "%0")
15811 -                (match_operand:FP 2 "general_operand" "f<Q>U<FP:dreg>")))]
15812 +                (match_operand:FP 2 "general_operand" "fm<FP:dreg>")))]
15813    "TARGET_COLDFIRE_FPU"
15814  {
15815    if (FP_REG_P (operands[2]))
15816 @@ -3315,7 +3348,7 @@
15817  (define_insn "div<mode>3_cf"
15818    [(set (match_operand:FP 0 "nonimmediate_operand" "=f")
15819         (div:FP (match_operand:FP 1 "general_operand" "0")
15820 -               (match_operand:FP 2 "general_operand" "f<Q>U<FP:dreg>")))]
15821 +               (match_operand:FP 2 "general_operand" "fm<FP:dreg>")))]
15822    "TARGET_COLDFIRE_FPU"
15823  {
15824    if (FP_REG_P (operands[2]))
15825 @@ -4163,7 +4196,7 @@
15826  
15827  (define_insn "neg<mode>2_cf"
15828    [(set (match_operand:FP 0 "nonimmediate_operand" "=f,d")
15829 -       (neg:FP (match_operand:FP 1 "general_operand" "f<FP:dreg><Q>U,0")))]
15830 +       (neg:FP (match_operand:FP 1 "general_operand" "f<FP:dreg>m,0")))]
15831    "TARGET_COLDFIRE_FPU"
15832  {
15833    if (DATA_REG_P (operands[0]))
15834 @@ -4197,7 +4230,7 @@
15835  
15836  (define_insn "sqrt<mode>2_cf"
15837    [(set (match_operand:FP 0 "nonimmediate_operand" "=f")
15838 -       (sqrt:FP (match_operand:FP 1 "general_operand" "f<FP:dreg><Q>U")))]
15839 +       (sqrt:FP (match_operand:FP 1 "general_operand" "f<FP:dreg>m")))]
15840    "TARGET_COLDFIRE_FPU"
15841  {
15842    if (FP_REG_P (operands[1]))
15843 @@ -4316,7 +4349,7 @@
15844  
15845  (define_insn "abs<mode>2_cf"
15846    [(set (match_operand:FP 0 "nonimmediate_operand" "=f,d")
15847 -       (abs:FP (match_operand:FP 1 "general_operand" "f<FP:dreg><Q>U,0")))]
15848 +       (abs:FP (match_operand:FP 1 "general_operand" "f<FP:dreg>m,0")))]
15849    "TARGET_COLDFIRE_FPU"
15850  {
15851    if (DATA_REG_P (operands[0]))
15852 diff -Nur a/gcc/config/m68k/m68k.opt b/gcc/config/m68k/m68k.opt
15853 --- a/gcc/config/m68k/m68k.opt  2009-02-20 16:20:38.000000000 +0100
15854 +++ b/gcc/config/m68k/m68k.opt  2010-01-25 09:50:29.025687257 +0100
15855 @@ -182,3 +182,7 @@
15856  mxgot
15857  Target Report Mask(XGOT)
15858  Support more than 8192 GOT entries on ColdFire
15859 +
15860 +mxtls
15861 +Target Report Mask(XTLS)
15862 +Support TLS segment larger than 64K
15863 diff -Nur a/gcc/config/m68k/m68k-protos.h b/gcc/config/m68k/m68k-protos.h
15864 --- a/gcc/config/m68k/m68k-protos.h     2009-02-20 16:20:38.000000000 +0100
15865 +++ b/gcc/config/m68k/m68k-protos.h     2010-01-25 09:50:29.025687257 +0100
15866 @@ -54,19 +54,27 @@
15867  extern bool m68k_output_addr_const_extra (FILE *, rtx);
15868  extern void notice_update_cc (rtx, rtx);
15869  extern bool m68k_legitimate_base_reg_p (rtx, bool);
15870 -extern bool m68k_legitimate_index_reg_p (rtx, bool);
15871 +extern bool m68k_legitimate_index_reg_p (enum machine_mode, rtx, bool);
15872  extern bool m68k_illegitimate_symbolic_constant_p (rtx);
15873  extern bool m68k_legitimate_address_p (enum machine_mode, rtx, bool);
15874  extern bool m68k_matches_q_p (rtx);
15875  extern bool m68k_matches_u_p (rtx);
15876  extern rtx legitimize_pic_address (rtx, enum machine_mode, rtx);
15877 +extern rtx m68k_legitimize_tls_address (rtx);
15878 +extern bool m68k_tls_reference_p (rtx, bool);
15879 +extern rtx m68k_legitimize_address (rtx, rtx, enum machine_mode);
15880  extern int valid_dbcc_comparison_p_2 (rtx, enum machine_mode);
15881  extern rtx m68k_libcall_value (enum machine_mode);
15882  extern rtx m68k_function_value (const_tree, const_tree);
15883  extern int emit_move_sequence (rtx *, enum machine_mode, rtx);
15884  extern bool m68k_movem_pattern_p (rtx, rtx, HOST_WIDE_INT, bool);
15885  extern const char *m68k_output_movem (rtx *, rtx, HOST_WIDE_INT, bool);
15886 +extern void m68k_final_prescan_insn (rtx, rtx *, int);
15887  
15888 +/* Functions from m68k.c used in constraints.md.  */
15889 +extern rtx m68k_unwrap_symbol (rtx, bool);
15890 +
15891 +/* Functions from m68k.c used in genattrtab.  */
15892  #ifdef HAVE_ATTR_cpu
15893  extern enum attr_cpu m68k_sched_cpu;
15894  extern enum attr_mac m68k_sched_mac;
15895 diff -Nur a/gcc/config/m68k/predicates.md b/gcc/config/m68k/predicates.md
15896 --- a/gcc/config/m68k/predicates.md     2007-09-24 23:00:22.000000000 +0200
15897 +++ b/gcc/config/m68k/predicates.md     2010-01-25 09:50:29.025687257 +0100
15898 @@ -130,7 +130,9 @@
15899    (match_code "sign_extend,zero_extend"))
15900  
15901  ;; Returns true if OP is either a symbol reference or a sum of a
15902 -;; symbol reference and a constant.
15903 +;; symbol reference and a constant.  This predicate is for "raw"
15904 +;; symbol references not yet processed by legitimize*_address,
15905 +;; hence we do not handle UNSPEC_{XGOT, TLS, XTLS} here.
15906  
15907  (define_predicate "symbolic_operand"
15908    (match_code "symbol_ref,label_ref,const")
15909 diff -Nur a/gcc/config/m68k/t-uclinux b/gcc/config/m68k/t-uclinux
15910 --- a/gcc/config/m68k/t-uclinux 2008-04-03 08:12:27.000000000 +0200
15911 +++ b/gcc/config/m68k/t-uclinux 2010-01-25 09:50:29.025687257 +0100
15912 @@ -1,8 +1,8 @@
15913  # crti and crtn are provided by uClibc.
15914  EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o
15915  
15916 -# Only include multilibs for the 68020 and for CPUs without an MMU.
15917 -M68K_MLIB_CPU += && (MLIB == "68020" || !match(FLAGS, "FL_MMU"))
15918 +# Include multilibs for CPUs without an MMU or with FL_UCLINUX
15919 +M68K_MLIB_CPU += && (!match(FLAGS, "FL_MMU") || match(FLAGS, "FL_UCLINUX"))
15920  
15921  # Add multilibs for execute-in-place and shared-library code.
15922  M68K_MLIB_OPTIONS += msep-data/mid-shared-library
15923 diff -Nur a/gcc/config/mips/74k.md b/gcc/config/mips/74k.md
15924 --- a/gcc/config/mips/74k.md    2007-08-02 12:49:31.000000000 +0200
15925 +++ b/gcc/config/mips/74k.md    2010-01-25 09:50:29.025687257 +0100
15926 @@ -118,8 +118,7 @@
15927  ;; stores
15928  (define_insn_reservation "r74k_int_store" 1
15929    (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
15930 -       (and (eq_attr "type" "store")
15931 -            (eq_attr "mode" "!unknown")))
15932 +       (eq_attr "type" "store"))
15933    "r74k_agen")
15934  
15935  
15936 @@ -145,33 +144,123 @@
15937  ;; load->load base:  4 cycles
15938  ;; load->store base: 4 cycles
15939  (define_bypass 4 "r74k_int_load" "r74k_int_load")
15940 -(define_bypass 4 "r74k_int_load" "r74k_int_store" "!store_data_bypass_p")
15941 +(define_bypass 4 "r74k_int_load" "r74k_int_store" "!mips_store_data_bypass_p")
15942  
15943  ;; logical/move/slt/signext->next use :  1 cycles (Default)
15944  ;; logical/move/slt/signext->load base:  2 cycles
15945  ;; logical/move/slt/signext->store base: 2 cycles
15946  (define_bypass 2 "r74k_int_logical" "r74k_int_load")
15947 -(define_bypass 2 "r74k_int_logical" "r74k_int_store" "!store_data_bypass_p")
15948 +(define_bypass 2 "r74k_int_logical" "r74k_int_store"
15949 +  "!mips_store_data_bypass_p")
15950  
15951  ;; arith->next use :  2 cycles (Default)
15952  ;; arith->load base:  3 cycles
15953  ;; arith->store base: 3 cycles
15954  (define_bypass 3 "r74k_int_arith" "r74k_int_load")
15955 -(define_bypass 3 "r74k_int_arith" "r74k_int_store" "!store_data_bypass_p")
15956 +(define_bypass 3 "r74k_int_arith" "r74k_int_store" "!mips_store_data_bypass_p")
15957  
15958  ;; cmove->next use :  4 cycles (Default)
15959  ;; cmove->load base:  5 cycles
15960  ;; cmove->store base: 5 cycles
15961  (define_bypass 5 "r74k_int_cmove"  "r74k_int_load")
15962 -(define_bypass 5 "r74k_int_cmove"  "r74k_int_store" "!store_data_bypass_p")
15963 +(define_bypass 5 "r74k_int_cmove"  "r74k_int_store"
15964 +  "!mips_store_data_bypass_p")
15965  
15966  ;; mult/madd/msub->int_mfhilo  : 4 cycles (default)
15967  ;; mult->madd/msub             : 1 cycles
15968  ;; madd/msub->madd/msub        : 1 cycles
15969 -(define_bypass 1 "r74k_int_mult,r74k_int_mul3" "r74k_int_madd"
15970 -  "mips_linked_madd_p")
15971 -(define_bypass 1 "r74k_int_madd" "r74k_int_madd"
15972 -  "mips_linked_madd_p")
15973 +(define_bypass 1 "r74k_int_mult" "r74k_int_madd")
15974 +(define_bypass 1 "r74k_int_madd" "r74k_int_madd")
15975 +
15976 +(define_bypass 1 "r74k_int_mul3" "r74k_int_madd"
15977 +  "mips_mult_madd_chain_bypass_p")
15978 +
15979 +
15980 +;; --------------------------------------------------------------
15981 +;; DSP instructins
15982 +;; --------------------------------------------------------------
15983 +
15984 +;; Non-saturating insn have the same latency as normal ALU operations,
15985 +(define_insn_reservation "r74k_dsp_alu" 2
15986 +  (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
15987 +       (eq_attr "type" "dspalu"))
15988 +  "r74k_alu")
15989 +
15990 +;; Saturating insn takes an extra cycle.
15991 +(define_insn_reservation "r74k_dsp_alu_sat" 3
15992 +  (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
15993 +       (eq_attr "type" "dspalusat"))
15994 +  "r74k_alu")
15995 +
15996 +;; dpaq_s, dpau, dpsq_s, dpsu, maq_s, mulsaq
15997 +;; - delivers result to hi/lo in 6 cycle (bypass at M4)
15998 +(define_insn_reservation "r74k_dsp_mac" 6
15999 +  (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
16000 +       (eq_attr "type" "dspmac"))
16001 +  "r74k_alu+r74k_mul")
16002 +
16003 +;; dpaq_sa, dpsq_sa, maq_sa
16004 +;; - delivers result to hi/lo in 7 cycle (bypass at WB)
16005 +(define_insn_reservation "r74k_dsp_mac_sat" 7
16006 +  (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
16007 +       (eq_attr "type" "dspmacsat"))
16008 +  "r74k_alu+r74k_mul")
16009 +
16010 +;; extp, extpdp, extpdpv, extpv, extr, extrv
16011 +;; - same latency as "mul"
16012 +(define_insn_reservation "r74k_dsp_acc_ext" 7
16013 +  (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
16014 +       (eq_attr "type" "accext"))
16015 +  "r74k_alu+r74k_mul")
16016 +
16017 +;; mthlip, shilo, shilov
16018 +;; - same latency as "mul"
16019 +(define_insn_reservation "r74k_dsp_acc_mod" 7
16020 +  (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
16021 +       (eq_attr "type" "accmod"))
16022 +  "r74k_alu+r74k_mul")
16023 +
16024 +;; dspalu   ->load/store base
16025 +;; dspalusat->load/store base
16026 +;; - we should never see these in real life.
16027 +
16028 +;; dsp_mac->dsp_mac     : 1 cycles (repeat rate of 1)
16029 +;; dsp_mac->dsp_mac_sat : 1 cycles (repeat rate of 1)
16030 +(define_bypass 1 "r74k_dsp_mac" "r74k_dsp_mac")
16031 +(define_bypass 1 "r74k_dsp_mac" "r74k_dsp_mac_sat")
16032 +
16033 +;; dsp_mac_sat->dsp_mac_sat : 2 cycles (repeat rate of 2)
16034 +;; dsp_mac_sat->dsp_mac     : 2 cycles (repeat rate of 2)
16035 +(define_bypass 2 "r74k_dsp_mac_sat" "r74k_dsp_mac_sat")
16036 +(define_bypass 2 "r74k_dsp_mac_sat" "r74k_dsp_mac")
16037 +
16038 +(define_bypass 1 "r74k_int_mult" "r74k_dsp_mac")
16039 +(define_bypass 1 "r74k_int_mult" "r74k_dsp_mac_sat")
16040 +
16041 +;; Before reload, all multiplier is registered as imul3 (which has a long
16042 +;;  latency).  We temporary jig the latency such that the macc groups
16043 +;;  are scheduled closely together during the first scheduler pass.
16044 +(define_bypass 1 "r74k_int_mul3" "r74k_dsp_mac"
16045 +  "mips_mult_madd_chain_bypass_p")
16046 +(define_bypass 1 "r74k_int_mul3" "r74k_dsp_mac_sat"
16047 +  "mips_mult_madd_chain_bypass_p")
16048 +
16049 +;; Assuming the following is true (bypass at M4)
16050 +;;  AP AF AM MB M1 M2 M3 M4 WB GR GC
16051 +;;              AP AF AM MB M1 M2 M3 M4 WB GR GC
16052 +;; dsp_mac->dsp_acc_ext : 4 cycles
16053 +;; dsp_mac->dsp_acc_mod : 4 cycles
16054 +(define_bypass 4 "r74k_dsp_mac" "r74k_dsp_acc_ext")
16055 +(define_bypass 4 "r74k_dsp_mac" "r74k_dsp_acc_mod")
16056 +
16057 +;; Assuming the following is true (bypass at WB)
16058 +;;  AP AF AM MB M1 M2 M3 M4 WB GR GC
16059 +;;                 AP AF AM MB M1 M2 M3 M4 WB GR GC
16060 +;; dsp_mac_sat->dsp_acc_ext : 5 cycles
16061 +;; dsp_mac_sat->dsp_acc_mod : 5 cycles
16062 +(define_bypass 5 "r74k_dsp_mac_sat" "r74k_dsp_acc_ext")
16063 +(define_bypass 5 "r74k_dsp_mac_sat" "r74k_dsp_acc_mod")
16064 +
16065  
16066  ;; --------------------------------------------------------------
16067  ;; Floating Point Instructions
16068 diff -Nur a/gcc/config/mips/crtfastmath.c b/gcc/config/mips/crtfastmath.c
16069 --- a/gcc/config/mips/crtfastmath.c     1970-01-01 01:00:00.000000000 +0100
16070 +++ b/gcc/config/mips/crtfastmath.c     2010-01-25 09:50:29.025687257 +0100
16071 @@ -0,0 +1,53 @@
16072 +/* Copyright (C) 2008, 2009 Free Software Foundation, Inc. 
16073 +
16074 +   This file is part of GCC.
16075 +
16076 +   GCC is free software; you can redistribute it and/or modify it
16077 +   under the terms of the GNU General Public License as published by
16078 +   the Free Software Foundation; either version 3, or (at your option)
16079 +   any later version.
16080 +
16081 +   GCC is distributed in the hope that it will be useful, but WITHOUT
16082 +   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16083 +   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
16084 +   License for more details.
16085 +
16086 +   Under Section 7 of GPL version 3, you are granted additional
16087 +   permissions described in the GCC Runtime Library Exception, version
16088 +   3.1, as published by the Free Software Foundation.
16089 +
16090 +   You should have received a copy of the GNU General Public License
16091 +   and a copy of the GCC Runtime Library Exception along with this
16092 +   program; see the files COPYING3 and COPYING.RUNTIME respectively.
16093 +   If not, see <http://www.gnu.org/licenses/>.  */
16094 +
16095 +#ifdef __mips_hard_float
16096 +
16097 +/* flush denormalized numbers to zero */
16098 +#define _FPU_FLUSH_TZ   0x1000000
16099 +
16100 +/* rounding control */
16101 +#define _FPU_RC_NEAREST 0x0     /* RECOMMENDED */
16102 +#define _FPU_RC_ZERO    0x1
16103 +#define _FPU_RC_UP      0x2
16104 +#define _FPU_RC_DOWN    0x3
16105 +
16106 +/* enable interrupts for IEEE exceptions */
16107 +#define _FPU_IEEE     0x00000F80
16108 +
16109 +/* Macros for accessing the hardware control word.  */
16110 +#define _FPU_GETCW(cw) __asm__ ("cfc1 %0,$31" : "=r" (cw))
16111 +#define _FPU_SETCW(cw) __asm__ ("ctc1 %0,$31" : : "r" (cw))
16112 +
16113 +static void __attribute__((constructor))
16114 +set_fast_math (void)
16115 +{
16116 +  unsigned int fcr;
16117 +
16118 +  /* fastmath: flush to zero, round to nearest, ieee exceptions disabled */
16119 +  fcr = _FPU_FLUSH_TZ | _FPU_RC_NEAREST;
16120 +
16121 +  _FPU_SETCW(fcr);
16122 +}
16123 +
16124 +#endif /* __mips_hard_float */
16125 diff -Nur a/gcc/config/mips/cs-sgxx-linux.h b/gcc/config/mips/cs-sgxx-linux.h
16126 --- a/gcc/config/mips/cs-sgxx-linux.h   1970-01-01 01:00:00.000000000 +0100
16127 +++ b/gcc/config/mips/cs-sgxx-linux.h   2010-01-25 09:50:29.025687257 +0100
16128 @@ -0,0 +1,44 @@
16129 +/* MIPS SourceryG++ GNU/Linux Configuration.
16130 +   Copyright (C) 2008
16131 +   Free Software Foundation, Inc.
16132 +
16133 +This file is part of GCC.
16134 +
16135 +GCC is free software; you can redistribute it and/or modify
16136 +it under the terms of the GNU General Public License as published by
16137 +the Free Software Foundation; either version 3, or (at your option)
16138 +any later version.
16139 +
16140 +GCC is distributed in the hope that it will be useful,
16141 +but WITHOUT ANY WARRANTY; without even the implied warranty of
16142 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16143 +GNU General Public License for more details.
16144 +
16145 +You should have received a copy of the GNU General Public License
16146 +along with GCC; see the file COPYING3.  If not see
16147 +<http://www.gnu.org/licenses/>.  */
16148 +
16149 +/* We do not need to provide an explicit big-endian multilib.  */
16150 +#undef MULTILIB_DEFAULTS
16151 +#define MULTILIB_DEFAULTS \
16152 +  { "EB" }
16153 +
16154 +/* The various C libraries each have their own subdirectory.  */
16155 +#undef SYSROOT_SUFFIX_SPEC
16156 +#define SYSROOT_SUFFIX_SPEC                    \
16157 +"%{muclibc:/uclibc}\
16158 +%{mips2|mips3|mips4|march=mips2|march=mips3|march=mips4|march=r6000|\
16159 +march=r4000|march=vr4100|march=vr4111|march=vr4120|march=vr4130|\
16160 +march=vr4300|march=r4400|march=r4600|march=orion|march=r4650|\
16161 +march=loongson2e|march=loongson2f|march=r8000|march=r10000|\
16162 +march=r12000|march=r14000|march=r16000|\
16163 +march=vr5000|march=vr5400|march=vr5500|march=rm7000|\
16164 +march=rm9000:/mips2;\
16165 +mips32|march=mips32|march=4kc|march=4km|march=4kp|march=4ksc|\
16166 +mips64|march=mips64|march=5kc|march=5kf|march=20kc|march=sb1|march=sb1a|\
16167 +march=sr71000|march=xlr:/mips32}\
16168 +%{msoft-float:/soft-float}%{mel|EL:/el}"
16169 +
16170 +#undef SYSROOT_HEADERS_SUFFIX_SPEC
16171 +#define SYSROOT_HEADERS_SUFFIX_SPEC \
16172 +  "%{muclibc:/uclibc}"
16173 diff -Nur a/gcc/config/mips/cs-sgxxlite-linux.h b/gcc/config/mips/cs-sgxxlite-linux.h
16174 --- a/gcc/config/mips/cs-sgxxlite-linux.h       1970-01-01 01:00:00.000000000 +0100
16175 +++ b/gcc/config/mips/cs-sgxxlite-linux.h       2010-01-25 09:50:29.025687257 +0100
16176 @@ -0,0 +1,33 @@
16177 +/* MIPS SourceryG++ GNU/Linux Configuration.
16178 +   Copyright (C) 2008
16179 +   Free Software Foundation, Inc.
16180 +
16181 +This file is part of GCC.
16182 +
16183 +GCC is free software; you can redistribute it and/or modify
16184 +it under the terms of the GNU General Public License as published by
16185 +the Free Software Foundation; either version 3, or (at your option)
16186 +any later version.
16187 +
16188 +GCC is distributed in the hope that it will be useful,
16189 +but WITHOUT ANY WARRANTY; without even the implied warranty of
16190 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16191 +GNU General Public License for more details.
16192 +
16193 +You should have received a copy of the GNU General Public License
16194 +along with GCC; see the file COPYING3.  If not see
16195 +<http://www.gnu.org/licenses/>.  */
16196 +
16197 +/* We do not need to provide an explicit big-endian multilib.  */
16198 +#undef MULTILIB_DEFAULTS
16199 +#define MULTILIB_DEFAULTS \
16200 +  { "EB" }
16201 +
16202 +/* The various C libraries each have their own subdirectory.  */
16203 +#undef SYSROOT_SUFFIX_SPEC
16204 +#define SYSROOT_SUFFIX_SPEC \
16205 +"%{muclibc:/uclibc}%{msoft-float:/soft-float}%{mel|EL:/el}"
16206 +
16207 +#undef SYSROOT_HEADERS_SUFFIX_SPEC
16208 +#define SYSROOT_HEADERS_SUFFIX_SPEC \
16209 +  "%{muclibc:/uclibc}"
16210 diff -Nur a/gcc/config/mips/linux64.h b/gcc/config/mips/linux64.h
16211 --- a/gcc/config/mips/linux64.h 2009-02-20 16:20:38.000000000 +0100
16212 +++ b/gcc/config/mips/linux64.h 2010-01-25 09:50:29.025687257 +0100
16213 @@ -69,3 +69,9 @@
16214     ieee_quad_format is the default, but let's put this here to make
16215     sure nobody thinks we just forgot to set it to something else.  */
16216  #define MIPS_TFMODE_FORMAT mips_quad_format
16217 +
16218 +/* Similar to standard Linux, but adding -ffast-math support.  */
16219 +#undef  ENDFILE_SPEC
16220 +#define ENDFILE_SPEC \
16221 +  "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
16222 +   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
16223 diff -Nur a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h
16224 --- a/gcc/config/mips/linux.h   2009-02-20 16:20:38.000000000 +0100
16225 +++ b/gcc/config/mips/linux.h   2010-01-25 09:50:29.025687257 +0100
16226 @@ -147,3 +147,17 @@
16227  #define DRIVER_SELF_SPECS \
16228    BASE_DRIVER_SELF_SPECS, \
16229    LINUX_DRIVER_SELF_SPECS
16230 +
16231 +/* Similar to standard Linux, but adding -ffast-math support.  */
16232 +#undef  ENDFILE_SPEC
16233 +#define ENDFILE_SPEC \
16234 +  "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
16235 +   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
16236 +
16237 +#undef SUBTARGET_OVERRIDE_OPTIONS
16238 +#define SUBTARGET_OVERRIDE_OPTIONS                                      \
16239 +do {                                                                    \
16240 +  /* __thread_support is not supported by uClibc.  */                   \
16241 +  if (linux_uclibc)                                             \
16242 +    targetm.have_tls = 0;                                               \
16243 +} while (0)
16244 diff -Nur a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
16245 --- a/gcc/config/mips/mips.c    2009-03-02 21:26:22.000000000 +0100
16246 +++ b/gcc/config/mips/mips.c    2010-01-25 09:50:29.025687257 +0100
16247 @@ -261,18 +261,29 @@
16248    /* Likewise FPR X.  */
16249    unsigned int fmask;
16250  
16251 -  /* The number of GPRs and FPRs saved.  */
16252 +  /* Likewise doubleword accumulator X ($acX).  */
16253 +  unsigned int acc_mask;
16254 +
16255 +  /* The number of GPRs, FPRs, doubleword accumulators and COP0
16256 +     registers saved.  */
16257    unsigned int num_gp;
16258    unsigned int num_fp;
16259 +  unsigned int num_acc;
16260 +  unsigned int num_cop0_regs;
16261  
16262 -  /* The offset of the topmost GPR and FPR save slots from the top of
16263 -     the frame, or zero if no such slots are needed.  */
16264 +  /* The offset of the topmost GPR, FPR, accumulator and COP0-register
16265 +     save slots from the top of the frame, or zero if no such slots are
16266 +     needed.  */
16267    HOST_WIDE_INT gp_save_offset;
16268    HOST_WIDE_INT fp_save_offset;
16269 +  HOST_WIDE_INT acc_save_offset;
16270 +  HOST_WIDE_INT cop0_save_offset;
16271  
16272    /* Likewise, but giving offsets from the bottom of the frame.  */
16273    HOST_WIDE_INT gp_sp_offset;
16274    HOST_WIDE_INT fp_sp_offset;
16275 +  HOST_WIDE_INT acc_sp_offset;
16276 +  HOST_WIDE_INT cop0_sp_offset;
16277  
16278    /* The offset of arg_pointer_rtx from frame_pointer_rtx.  */
16279    HOST_WIDE_INT arg_pointer_offset;
16280 @@ -310,6 +321,20 @@
16281    /* True if we have emitted an instruction to initialize
16282       mips16_gp_pseudo_rtx.  */
16283    bool initialized_mips16_gp_pseudo_p;
16284 +
16285 +  /* True if this is an interrupt handler.  */
16286 +  bool interrupt_handler_p;
16287 +
16288 +  /* True if this is an interrupt handler that uses shadow registers.  */
16289 +  bool use_shadow_register_set_p;
16290 +
16291 +  /* True if this is an interrupt handler that should keep interrupts
16292 +     masked.  */
16293 +  bool keep_interrupts_masked_p;
16294 +
16295 +  /* True if this is an interrupt handler that should use DERET
16296 +     instead of ERET.  */
16297 +  bool use_debug_exception_return_p;
16298  };
16299  
16300  /* Information about a single argument.  */
16301 @@ -542,9 +567,16 @@
16302    ALL_REGS,    ALL_REGS,       ALL_REGS,       ALL_REGS
16303  };
16304  
16305 +#ifdef CVMX_SHARED_BSS_FLAGS
16306 +static tree octeon_handle_cvmx_shared_attribute (tree *, tree, tree, int, bool *);
16307 +#endif
16308 +
16309  /* The value of TARGET_ATTRIBUTE_TABLE.  */
16310  const struct attribute_spec mips_attribute_table[] = {
16311    /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
16312 +#ifdef CVMX_SHARED_BSS_FLAGS
16313 +  { "cvmx_shared", 0, 0, true, false, false, octeon_handle_cvmx_shared_attribute },
16314 +#endif
16315    { "long_call",   0, 0, false, true,  true,  NULL },
16316    { "far",                0, 0, false, true,  true,  NULL },
16317    { "near",        0, 0, false, true,  true,  NULL },
16318 @@ -554,6 +586,11 @@
16319       code generation but don't carry other semantics.  */
16320    { "mips16",     0, 0, true,  false, false, NULL },
16321    { "nomips16",    0, 0, true,  false, false, NULL },
16322 +  /* Allow functions to be specified as interrupt handlers */
16323 +  { "interrupt",   0, 0, false, true,  true, NULL },
16324 +  { "use_shadow_register_set", 0, 0, false, true,  true, NULL },
16325 +  { "keep_interrupts_masked",  0, 0, false, true,  true, NULL },
16326 +  { "use_debug_exception_return", 0, 0, false, true,  true, NULL },
16327    { NULL,         0, 0, false, false, false, NULL }
16328  };
16329  \f
16330 @@ -659,6 +696,11 @@
16331    { "74kx", PROCESSOR_74KF1_1, 33, 0 },
16332    { "74kf3_2", PROCESSOR_74KF3_2, 33, 0 },
16333  
16334 +  { "1004kc", PROCESSOR_24KC, 33, 0 }, /* 1004K with MT/DSP.  */
16335 +  { "1004kf2_1", PROCESSOR_24KF2_1, 33, 0 },
16336 +  { "1004kf", PROCESSOR_24KF2_1, 33, 0 },
16337 +  { "1004kf1_1", PROCESSOR_24KF1_1, 33, 0 },
16338 +
16339    /* MIPS64 processors.  */
16340    { "5kc", PROCESSOR_5KC, 64, 0 },
16341    { "5kf", PROCESSOR_5KF, 64, 0 },
16342 @@ -1064,13 +1106,7 @@
16343      DEFAULT_COSTS
16344    },
16345    { /* XLR */
16346 -    /* Need to replace first five with the costs of calling the appropriate 
16347 -       libgcc routine.  */
16348 -    COSTS_N_INSNS (256),          /* fp_add */
16349 -    COSTS_N_INSNS (256),          /* fp_mult_sf */
16350 -    COSTS_N_INSNS (256),          /* fp_mult_df */
16351 -    COSTS_N_INSNS (256),          /* fp_div_sf */
16352 -    COSTS_N_INSNS (256),          /* fp_div_df */
16353 +    SOFT_FP_COSTS,
16354      COSTS_N_INSNS (8),            /* int_mult_si */
16355      COSTS_N_INSNS (8),            /* int_mult_di */
16356      COSTS_N_INSNS (72),           /* int_div_si */
16357 @@ -1172,6 +1208,42 @@
16358    return lookup_attribute ("nomips16", DECL_ATTRIBUTES (decl)) != NULL;
16359  }
16360  
16361 +/* Check if the interrupt attribute is set for a function.  */
16362 +
16363 +static bool
16364 +mips_interrupt_type_p (tree type)
16365 +{
16366 +  return lookup_attribute ("interrupt", TYPE_ATTRIBUTES (type)) != NULL;
16367 +}
16368 +
16369 +/* Check if the attribute to use shadow register set is set for a function.  */
16370 +
16371 +static bool
16372 +mips_use_shadow_register_set_p (tree type)
16373 +{
16374 +  return lookup_attribute ("use_shadow_register_set",
16375 +                          TYPE_ATTRIBUTES (type)) != NULL;
16376 +}
16377 +
16378 +/* Check if the attribute to keep interrupts masked is set for a function.  */
16379 +
16380 +static bool
16381 +mips_keep_interrupts_masked_p (tree type)
16382 +{
16383 +  return lookup_attribute ("keep_interrupts_masked",
16384 +                          TYPE_ATTRIBUTES (type)) != NULL;
16385 +}
16386 +
16387 +/* Check if the attribute to use debug exception return is set for
16388 +   a function.  */
16389 +
16390 +static bool
16391 +mips_use_debug_exception_return_p (tree type)
16392 +{
16393 +  return lookup_attribute ("use_debug_exception_return",
16394 +                          TYPE_ATTRIBUTES (type)) != NULL;
16395 +}
16396 +
16397  /* Return true if function DECL is a MIPS16 function.  Return the ambient
16398     setting if DECL is null.  */
16399  
16400 @@ -2795,7 +2867,7 @@
16401  mips_legitimize_address (rtx *xloc, enum machine_mode mode)
16402  {
16403    rtx base, addr;
16404 -  HOST_WIDE_INT offset;
16405 +  HOST_WIDE_INT intval, high, offset;
16406  
16407    if (mips_tls_symbol_p (*xloc))
16408      {
16409 @@ -2820,6 +2892,32 @@
16410        *xloc = mips_force_address (addr, mode);
16411        return true;
16412      }
16413 +
16414 + /* Handle references to constant addresses by loading the high part
16415 +    into a register and using an offset for the low part.  */
16416 + if (GET_CODE (base) == CONST_INT)
16417 +   {
16418 +     intval = INTVAL (base);
16419 +     high = trunc_int_for_mode (CONST_HIGH_PART (intval), Pmode);
16420 +     offset = CONST_LOW_PART (intval);
16421 +     /* Ignore cases in which a positive address would be accessed by a
16422 +       negative offset from a negative address.  The required wraparound
16423 +       does not occur for 32-bit addresses on 64-bit targets, and it is
16424 +       very unlikely that such an access would occur in real code anyway.
16425 +
16426 +       If the low offset is not legitimate for MODE, prefer to load
16427 +       the constant normally, instead of using mips_force_address on
16428 +       the legitimized address.  The latter option would cause us to
16429 +       use (D)ADDIU unconditionally, but LUI/ORI is more efficient
16430 +       than LUI/ADDIU on some targets.  */
16431 +     if ((intval < 0 || high > 0)
16432 +         && mips_valid_offset_p (GEN_INT (offset), mode))
16433 +       {
16434 +         base = mips_force_temporary (NULL, GEN_INT (high));
16435 +         *xloc = plus_constant (base, offset);
16436 +         return true;
16437 +       }
16438 +   }
16439    return false;
16440  }
16441  
16442 @@ -6188,6 +6286,11 @@
16443    if (!TARGET_SIBCALLS)
16444      return false;
16445  
16446 +  /* Interrupt handlers need special epilogue code and therefore can't
16447 +     use sibcalls.  */
16448 +  if (mips_interrupt_type_p (TREE_TYPE (current_function_decl)))
16449 +    return false;
16450 +
16451    /* We can't do a sibcall if the called function is a MIPS16 function
16452       because there is no direct "jx" instruction equivalent to "jalx" to
16453       switch the ISA mode.  We only care about cases where the sibling
16454 @@ -6608,6 +6711,15 @@
16455    if (!mips_get_unaligned_mem (&src, width, bitpos, &left, &right))
16456      return false;
16457  
16458 +  if (ISA_HAS_UL_US)
16459 +    {
16460 +      if (GET_MODE (dest) == DImode)
16461 +       emit_insn (gen_mov_uld (dest, src, left));
16462 +      else
16463 +       emit_insn (gen_mov_ulw (dest, src, left));
16464 +      return true;
16465 +    }
16466 +
16467    temp = gen_reg_rtx (GET_MODE (dest));
16468    if (GET_MODE (dest) == DImode)
16469      {
16470 @@ -6642,6 +6754,16 @@
16471  
16472    mode = mode_for_size (width, MODE_INT, 0);
16473    src = gen_lowpart (mode, src);
16474 +
16475 +  if (ISA_HAS_UL_US)
16476 +    {
16477 +      if (GET_MODE (src) == DImode)
16478 +        emit_insn (gen_mov_usd (dest, src, left));
16479 +      else
16480 +        emit_insn (gen_mov_usw (dest, src, left));
16481 +      return true;
16482 +    }
16483 +
16484    if (mode == DImode)
16485      {
16486        emit_insn (gen_mov_sdl (dest, src, left));
16487 @@ -7229,7 +7351,11 @@
16488                 || (letter == 'L' && TARGET_BIG_ENDIAN)
16489                 || letter == 'D')
16490               regno++;
16491 -           fprintf (file, "%s", reg_names[regno]);
16492 +           /* We need to print $0 .. $31 for COP0 registers.  */
16493 +           if (COP0_REG_P (regno))
16494 +             fprintf (file, "$%s", &reg_names[regno][4]);
16495 +           else
16496 +             fprintf (file, "%s", reg_names[regno]);
16497           }
16498           break;
16499  
16500 @@ -7369,6 +7495,12 @@
16501    if (TARGET_ABICALLS || TARGET_VXWORKS_RTP)
16502      return false;
16503  
16504 +#ifdef CVMX_SHARED_BSS_FLAGS
16505 +  if (TARGET_OCTEON && TREE_CODE (decl) == VAR_DECL
16506 +      && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES (decl)))
16507 +    return false;
16508 +#endif
16509 +
16510    if (TREE_CODE (decl) == VAR_DECL && DECL_SECTION_NAME (decl) != 0)
16511      {
16512        const char *name;
16513 @@ -7595,6 +7727,37 @@
16514    return NULL_RTX;
16515  }
16516  
16517 +/* DSP ALU can bypass data with no delays for the following pairs. */
16518 +enum insn_code dspalu_bypass_table[][2] =
16519 +{
16520 +  {CODE_FOR_mips_addsc, CODE_FOR_mips_addwc},
16521 +  {CODE_FOR_mips_cmpu_eq_qb, CODE_FOR_mips_pick_qb},
16522 +  {CODE_FOR_mips_cmpu_lt_qb, CODE_FOR_mips_pick_qb},
16523 +  {CODE_FOR_mips_cmpu_le_qb, CODE_FOR_mips_pick_qb},
16524 +  {CODE_FOR_mips_cmp_eq_ph, CODE_FOR_mips_pick_ph},
16525 +  {CODE_FOR_mips_cmp_lt_ph, CODE_FOR_mips_pick_ph},
16526 +  {CODE_FOR_mips_cmp_le_ph, CODE_FOR_mips_pick_ph},
16527 +  {CODE_FOR_mips_wrdsp, CODE_FOR_mips_insv}
16528 +};
16529 +
16530 +int
16531 +mips_dspalu_bypass_p (rtx out_insn, rtx in_insn)
16532 +{
16533 +  int i;
16534 +  int num_bypass = (sizeof (dspalu_bypass_table)
16535 +                   / (2 * sizeof (enum insn_code)));
16536 +  enum insn_code out_icode = INSN_CODE (out_insn);
16537 +  enum insn_code in_icode = INSN_CODE (in_insn);
16538 +
16539 +  for (i = 0; i < num_bypass; i++)
16540 +    {
16541 +      if (out_icode == dspalu_bypass_table[i][0]
16542 +         && in_icode == dspalu_bypass_table[i][1])
16543 +       return true;
16544 +    }
16545 +
16546 +  return false;
16547 +}
16548  /* Implement ASM_OUTPUT_ASCII.  */
16549  
16550  void
16551 @@ -7819,11 +7982,19 @@
16552                  "\t.previous\n", TARGET_LONG64 ? 64 : 32);
16553  
16554  #ifdef HAVE_AS_GNU_ATTRIBUTE
16555 +#ifdef TARGET_MIPS_SDEMTK
16556 +     fprintf (asm_out_file, "\t.gnu_attribute 4, %d\n",
16557 +             (!TARGET_NO_FLOAT
16558 +              ? (TARGET_HARD_FLOAT
16559 +                 ? (TARGET_DOUBLE_FLOAT
16560 +                    ? ((!TARGET_64BIT && TARGET_FLOAT64) ? 4 : 1) : 2) : 3) : 0));
16561 +#else
16562        fprintf (asm_out_file, "\t.gnu_attribute 4, %d\n",
16563                (TARGET_HARD_FLOAT_ABI
16564                 ? (TARGET_DOUBLE_FLOAT
16565                    ? ((!TARGET_64BIT && TARGET_FLOAT64) ? 4 : 1) : 2) : 3));
16566  #endif
16567 +#endif
16568      }
16569  
16570    /* If TARGET_ABICALLS, tell GAS to generate -KPIC code.  */
16571 @@ -8436,12 +8607,53 @@
16572    return GLOBAL_POINTER_REGNUM;
16573  }
16574  
16575 +/* Return true if REGNO is a register that is ordinarily call-clobbered
16576 +   but must nevertheless be preserved by an interrupt handler.  */
16577 +
16578 +static bool
16579 +mips_interrupt_extra_call_saved_reg_p (unsigned int regno)
16580 +{
16581 +  if (MD_REG_P (regno))
16582 +    return true;
16583 +
16584 +  if (TARGET_DSP && DSP_ACC_REG_P (regno))
16585 +    return true;
16586 +
16587 +  if (GP_REG_P (regno) && !cfun->machine->use_shadow_register_set_p)
16588 +    {
16589 +      /* $0 is hard-wired.  */
16590 +      if (regno == GP_REG_FIRST)
16591 +       return false;
16592 +
16593 +      /* The interrupt handler can treat kernel registers as
16594 +        scratch registers.  */
16595 +      if (KERNEL_REG_P (regno))
16596 +       return false;
16597 +
16598 +      /* The function will return the stack pointer to its original value
16599 +        anyway.  */
16600 +      if (regno == STACK_POINTER_REGNUM)
16601 +       return false;
16602 +
16603 +      /* Otherwise, return true for registers that aren't ordinarily
16604 +        call-clobbered.  */
16605 +      return call_really_used_regs[regno];
16606 +    }
16607 +
16608 +  return false;
16609 +}
16610 +
16611  /* Return true if the current function should treat register REGNO
16612     as call-saved.  */
16613  
16614  static bool
16615  mips_cfun_call_saved_reg_p (unsigned int regno)
16616  {
16617 +  /* Interrupt handlers need to save extra registers.  */
16618 +  if (cfun->machine->interrupt_handler_p
16619 +      && mips_interrupt_extra_call_saved_reg_p (regno))
16620 +    return true;
16621 +
16622    /* call_insns preserve $28 unless they explicitly say otherwise,
16623       so call_really_used_regs[] treats $28 as call-saved.  However,
16624       we want the ABI property rather than the default call_insn
16625 @@ -8490,6 +8702,13 @@
16626    if (regno == GP_REG_FIRST + 31 && mips16_cfun_returns_in_fpr_p ())
16627      return true;
16628  
16629 +  /* If REGNO is ordinarily call-clobbered, we must assume that any
16630 +     called function could modify it.  */
16631 +  if (cfun->machine->interrupt_handler_p
16632 +      && !current_function_is_leaf
16633 +      && mips_interrupt_extra_call_saved_reg_p (regno))
16634 +    return true;
16635 +
16636    return false;
16637  }
16638  
16639 @@ -8545,6 +8764,14 @@
16640        C |  callee-allocated save area   |
16641         |  for register varargs         |
16642         |                               |
16643 +       +-------------------------------+ <-- frame_pointer_rtx
16644 +       |                               |       + cop0_sp_offset
16645 +       |  COP0 reg save area           |       + UNITS_PER_WORD
16646 +       |                               |
16647 +       +-------------------------------+ <-- frame_pointer_rtx + acc_sp_offset
16648 +       |                               |       + UNITS_PER_WORD
16649 +       |  accumulator save area        |
16650 +       |                               |
16651         +-------------------------------+ <-- frame_pointer_rtx + fp_sp_offset
16652         |                               |       + UNITS_PER_HWFPVALUE
16653         |  FPR save area                |
16654 @@ -8588,6 +8815,28 @@
16655    HOST_WIDE_INT offset, size;
16656    unsigned int regno, i;
16657  
16658 +  /* Set this function's interrupt properties.  */
16659 +  if (mips_interrupt_type_p (TREE_TYPE (current_function_decl)))
16660 +    {
16661 +      if (!ISA_MIPS32R2)
16662 +       error ("the %<interrupt%> attribute requires a MIPS32r2 processor");
16663 +      else if (TARGET_HARD_FLOAT)
16664 +       error ("the %<interrupt%> attribute requires %<-msoft-float%>");
16665 +      else if (TARGET_MIPS16)
16666 +       error ("interrupt handlers cannot be MIPS16 functions");
16667 +      else
16668 +       {
16669 +         cfun->machine->interrupt_handler_p = true;
16670 +         cfun->machine->use_shadow_register_set_p =
16671 +           mips_use_shadow_register_set_p (TREE_TYPE (current_function_decl));
16672 +         cfun->machine->keep_interrupts_masked_p =
16673 +           mips_keep_interrupts_masked_p (TREE_TYPE (current_function_decl));
16674 +         cfun->machine->use_debug_exception_return_p =
16675 +           mips_use_debug_exception_return_p (TREE_TYPE
16676 +                                              (current_function_decl));
16677 +       }
16678 +    }
16679 +
16680    frame = &cfun->machine->frame;
16681    memset (frame, 0, sizeof (*frame));
16682    size = get_frame_size ();
16683 @@ -8657,7 +8906,7 @@
16684      }
16685  
16686    /* Find out which FPRs we need to save.  This loop must iterate over
16687 -     the same space as its companion in mips_for_each_saved_reg.  */
16688 +     the same space as its companion in mips_for_each_saved_gpr_and_fpr.  */
16689    if (TARGET_HARD_FLOAT)
16690      for (regno = FP_REG_FIRST; regno <= FP_REG_LAST; regno += MAX_FPRS_PER_FMT)
16691        if (mips_save_reg_p (regno))
16692 @@ -8673,6 +8922,47 @@
16693        frame->fp_sp_offset = offset - UNITS_PER_HWFPVALUE;
16694      }
16695  
16696 +  /* Add in space for the interrupt context information.  */
16697 +  if (cfun->machine->interrupt_handler_p)
16698 +    {
16699 +      /* Check HI/LO.  */
16700 +      if (mips_save_reg_p (LO_REGNUM) || mips_save_reg_p (HI_REGNUM))
16701 +       {
16702 +         frame->num_acc++;
16703 +         frame->acc_mask |= (1 << 0);
16704 +       }
16705 +
16706 +      /* Check accumulators 1, 2, 3.  */
16707 +      for (i = DSP_ACC_REG_FIRST; i <= DSP_ACC_REG_LAST; i += 2)
16708 +       if (mips_save_reg_p (i) || mips_save_reg_p (i + 1))
16709 +         {
16710 +           frame->num_acc++;
16711 +           frame->acc_mask |= 1 << (((i - DSP_ACC_REG_FIRST) / 2) + 1);
16712 +         }
16713 +
16714 +      /* All interrupt context functions need space to preserve STATUS.  */
16715 +      frame->num_cop0_regs++;
16716 +
16717 +      /* If we don't keep interrupts masked, we need to save EPC.  */
16718 +      if (!cfun->machine->keep_interrupts_masked_p)
16719 +       frame->num_cop0_regs++;
16720 +    }
16721 +
16722 +  /* Move above the accumulator save area.  */
16723 +  if (frame->num_acc > 0)
16724 +    {
16725 +      /* Each accumulator needs 2 words.  */
16726 +      offset += frame->num_acc * 2 * UNITS_PER_WORD;
16727 +      frame->acc_sp_offset = offset - UNITS_PER_WORD;
16728 +    }
16729 +
16730 +  /* Move above the COP0 register save area.  */
16731 +  if (frame->num_cop0_regs > 0)
16732 +    {
16733 +      offset += frame->num_cop0_regs * UNITS_PER_WORD;
16734 +      frame->cop0_sp_offset = offset - UNITS_PER_WORD;
16735 +    }
16736 +
16737    /* Move above the callee-allocated varargs save area.  */
16738    offset += MIPS_STACK_ALIGN (cfun->machine->varargs_size);
16739    frame->arg_pointer_offset = offset;
16740 @@ -8686,6 +8976,10 @@
16741      frame->gp_save_offset = frame->gp_sp_offset - offset;
16742    if (frame->fp_sp_offset > 0)
16743      frame->fp_save_offset = frame->fp_sp_offset - offset;
16744 +  if (frame->acc_sp_offset > 0)
16745 +    frame->acc_save_offset = frame->acc_sp_offset - offset;
16746 +  if (frame->num_cop0_regs > 0)
16747 +    frame->cop0_save_offset = frame->cop0_sp_offset - offset;
16748  
16749    /* MIPS16 code offsets the frame pointer by the size of the outgoing
16750       arguments.  This tends to increase the chances of using unextended
16751 @@ -8882,12 +9176,41 @@
16752    fn (gen_rtx_REG (mode, regno), mem);
16753  }
16754  
16755 +/* Call FN for each accumlator that is saved by the current function.
16756 +   SP_OFFSET is the offset of the current stack pointer from the start
16757 +   of the frame.  */
16758 +
16759 +static void
16760 +mips_for_each_saved_acc (HOST_WIDE_INT sp_offset, mips_save_restore_fn fn)
16761 +{
16762 +  HOST_WIDE_INT offset;
16763 +  int regno;
16764 +
16765 +  offset = cfun->machine->frame.acc_sp_offset - sp_offset;
16766 +  if (BITSET_P (cfun->machine->frame.acc_mask, 0))
16767 +    {
16768 +      mips_save_restore_reg (word_mode, LO_REGNUM, offset, fn);
16769 +      offset -= UNITS_PER_WORD;
16770 +      mips_save_restore_reg (word_mode, HI_REGNUM, offset, fn);
16771 +      offset -= UNITS_PER_WORD;
16772 +    }
16773 +
16774 +  for (regno = DSP_ACC_REG_FIRST; regno <= DSP_ACC_REG_LAST; regno++)
16775 +    if (BITSET_P (cfun->machine->frame.acc_mask,
16776 +                 ((regno - DSP_ACC_REG_FIRST) / 2) + 1))
16777 +      {
16778 +       mips_save_restore_reg (word_mode, regno, offset, fn);
16779 +       offset -= UNITS_PER_WORD;
16780 +      }
16781 +}
16782 +
16783  /* Call FN for each register that is saved by the current function.
16784     SP_OFFSET is the offset of the current stack pointer from the start
16785     of the frame.  */
16786  
16787  static void
16788 -mips_for_each_saved_reg (HOST_WIDE_INT sp_offset, mips_save_restore_fn fn)
16789 +mips_for_each_saved_gpr_and_fpr (HOST_WIDE_INT sp_offset,
16790 +                                mips_save_restore_fn fn)
16791  {
16792    enum machine_mode fpr_mode;
16793    HOST_WIDE_INT offset;
16794 @@ -9075,13 +9398,24 @@
16795      }
16796    else
16797      {
16798 -      if (TARGET_MIPS16
16799 -         && REGNO (reg) != GP_REG_FIRST + 31
16800 -         && !M16_REG_P (REGNO (reg)))
16801 -       {
16802 -         /* Save a non-MIPS16 register by moving it through a temporary.
16803 -            We don't need to do this for $31 since there's a special
16804 -            instruction for it.  */
16805 +      if (REGNO (reg) == HI_REGNUM)
16806 +       {
16807 +         if (TARGET_64BIT)
16808 +           emit_insn (gen_mfhidi_ti (MIPS_PROLOGUE_TEMP (DImode),
16809 +                                     gen_rtx_REG (TImode, MD_REG_FIRST)));
16810 +         else
16811 +           emit_insn (gen_mfhisi_di (MIPS_PROLOGUE_TEMP (SImode),
16812 +                                     gen_rtx_REG (DImode, MD_REG_FIRST)));
16813 +         mips_emit_move (mem, MIPS_PROLOGUE_TEMP (GET_MODE (reg)));
16814 +       }
16815 +      else if ((TARGET_MIPS16
16816 +               && REGNO (reg) != GP_REG_FIRST + 31
16817 +               && !M16_REG_P (REGNO (reg)))
16818 +              || ACC_REG_P (REGNO (reg)))
16819 +       {
16820 +         /* If the register has no direct store instruction, move it
16821 +            through a temporary.  Note that there's a special MIPS16
16822 +            instruction to save $31.  */
16823           mips_emit_move (MIPS_PROLOGUE_TEMP (GET_MODE (reg)), reg);
16824           mips_emit_move (mem, MIPS_PROLOGUE_TEMP (GET_MODE (reg)));
16825         }
16826 @@ -9153,6 +9487,14 @@
16827      emit_insn (gen_loadgp_blockage ());
16828  }
16829  
16830 +/* A for_each_rtx callback.  Stop the search if *X is a kernel register.  */
16831 +
16832 +static int
16833 +mips_kernel_reg_p (rtx *x, void *data ATTRIBUTE_UNUSED)
16834 +{
16835 +  return GET_CODE (*x) == REG && KERNEL_REG_P (REGNO (*x));
16836 +}
16837 +
16838  /* Expand the "prologue" pattern.  */
16839  
16840  void
16841 @@ -9172,7 +9514,8 @@
16842    /* Save the registers.  Allocate up to MIPS_MAX_FIRST_STACK_STEP
16843       bytes beforehand; this is enough to cover the register save area
16844       without going out of range.  */
16845 -  if ((frame->mask | frame->fmask) != 0)
16846 +  if (((frame->mask | frame->fmask | frame->acc_mask) != 0)
16847 +      || frame->num_cop0_regs > 0)
16848      {
16849        HOST_WIDE_INT step1;
16850  
16851 @@ -9203,12 +9546,97 @@
16852         }
16853        else
16854         {
16855 -         insn = gen_add3_insn (stack_pointer_rtx,
16856 -                               stack_pointer_rtx,
16857 -                               GEN_INT (-step1));
16858 -         RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
16859 -         size -= step1;
16860 -         mips_for_each_saved_reg (size, mips_save_reg);
16861 +         if (cfun->machine->interrupt_handler_p)
16862 +           {
16863 +             HOST_WIDE_INT offset;
16864 +             rtx mem;
16865 +
16866 +             /* If this interrupt is using a shadow register set, we need to
16867 +                get the stack pointer from the previous register set.  */
16868 +             if (cfun->machine->use_shadow_register_set_p)
16869 +               emit_insn (gen_mips_rdpgpr (stack_pointer_rtx,
16870 +                                           stack_pointer_rtx));
16871 +
16872 +             if (!cfun->machine->keep_interrupts_masked_p)
16873 +               {
16874 +                 /* Move from COP0 Cause to K0.  */
16875 +                 emit_insn (gen_cop0_move (gen_rtx_REG (SImode, K0_REG_NUM),
16876 +                                           gen_rtx_REG (SImode,
16877 +                                                        COP0_CAUSE_REG_NUM)));
16878 +                 /* Move from COP0 EPC to K1.  */
16879 +                 emit_insn (gen_cop0_move (gen_rtx_REG (SImode, K1_REG_NUM),
16880 +                                           gen_rtx_REG (SImode,
16881 +                                                        COP0_EPC_REG_NUM)));
16882 +               }
16883 +
16884 +             /* Allocate the first part of the frame.  */
16885 +             insn = gen_add3_insn (stack_pointer_rtx, stack_pointer_rtx,
16886 +                                   GEN_INT (-step1));
16887 +             RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
16888 +             size -= step1;
16889 +
16890 +             /* Start at the uppermost location for saving.  */
16891 +             offset = frame->cop0_sp_offset - size;
16892 +             if (!cfun->machine->keep_interrupts_masked_p)
16893 +               {
16894 +                 /* Push EPC into its stack slot.  */
16895 +                 mem = gen_frame_mem (word_mode,
16896 +                                      plus_constant (stack_pointer_rtx,
16897 +                                                     offset));
16898 +                 mips_emit_move (mem, gen_rtx_REG (word_mode, K1_REG_NUM));
16899 +                 offset -= UNITS_PER_WORD;
16900 +               }
16901 +
16902 +             /* Move from COP0 Status to K1.  */
16903 +             emit_insn (gen_cop0_move (gen_rtx_REG (SImode, K1_REG_NUM),
16904 +                                       gen_rtx_REG (SImode,
16905 +                                                    COP0_STATUS_REG_NUM)));
16906 +
16907 +             /* Right justify the RIPL in k0.  */
16908 +             if (!cfun->machine->keep_interrupts_masked_p)
16909 +               emit_insn (gen_lshrsi3 (gen_rtx_REG (SImode, K0_REG_NUM),
16910 +                                       gen_rtx_REG (SImode, K0_REG_NUM),
16911 +                                       GEN_INT (CAUSE_IPL)));
16912 +
16913 +             /* Push Status into its stack slot.  */
16914 +             mem = gen_frame_mem (word_mode,
16915 +                                  plus_constant (stack_pointer_rtx, offset));
16916 +             mips_emit_move (mem, gen_rtx_REG (word_mode, K1_REG_NUM));
16917 +             offset -= UNITS_PER_WORD;
16918 +
16919 +             /* Insert the RIPL into our copy of SR (k1) as the new IPL.  */
16920 +             if (!cfun->machine->keep_interrupts_masked_p)
16921 +               emit_insn (gen_insvsi (gen_rtx_REG (SImode, K1_REG_NUM),
16922 +                                      GEN_INT (6),
16923 +                                      GEN_INT (SR_IPL),
16924 +                                      gen_rtx_REG (SImode, K0_REG_NUM)));
16925 +
16926 +             if (!cfun->machine->keep_interrupts_masked_p)
16927 +               /* Enable interrupts by clearing the KSU ERL and EXL bits.
16928 +                  IE is already the correct value, so we don't have to do
16929 +                  anything explicit.  */
16930 +               emit_insn (gen_insvsi (gen_rtx_REG (SImode, K1_REG_NUM),
16931 +                                      GEN_INT (4),
16932 +                                      GEN_INT (SR_EXL),
16933 +                                      gen_rtx_REG (SImode, GP_REG_FIRST)));
16934 +             else
16935 +               /* Disable interrupts by clearing the KSU, ERL, EXL,
16936 +                  and IE bits.  */
16937 +               emit_insn (gen_insvsi (gen_rtx_REG (SImode, K1_REG_NUM),
16938 +                                      GEN_INT (5),
16939 +                                      GEN_INT (SR_IE),
16940 +                                      gen_rtx_REG (SImode, GP_REG_FIRST)));
16941 +           }
16942 +         else
16943 +           {
16944 +             insn = gen_add3_insn (stack_pointer_rtx,
16945 +                                   stack_pointer_rtx,
16946 +                                   GEN_INT (-step1));
16947 +             RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
16948 +             size -= step1;
16949 +           }
16950 +         mips_for_each_saved_acc (size, mips_save_reg);
16951 +         mips_for_each_saved_gpr_and_fpr (size, mips_save_reg);
16952         }
16953      }
16954  
16955 @@ -9293,6 +9721,20 @@
16956                         pic_offset_table_rtx);
16957      }
16958  
16959 +  /* We need to search back to the last use of K0 or K1.  */
16960 +  if (cfun->machine->interrupt_handler_p)
16961 +    {
16962 +      for (insn = get_last_insn (); insn != NULL_RTX; insn = PREV_INSN (insn))
16963 +       if (INSN_P (insn)
16964 +           && for_each_rtx (&PATTERN (insn), mips_kernel_reg_p, NULL))
16965 +         break;
16966 +      /* Emit a move from K1 to COP0 Status after insn.  */
16967 +      gcc_assert (insn != NULL_RTX);
16968 +      emit_insn_after (gen_cop0_move (gen_rtx_REG (SImode, COP0_STATUS_REG_NUM),
16969 +                                     gen_rtx_REG (SImode, K1_REG_NUM)),
16970 +                      insn);
16971 +    }
16972 +
16973    /* If we are profiling, make sure no instructions are scheduled before
16974       the call to mcount.  */
16975    if (crtl->profile)
16976 @@ -9309,7 +9751,20 @@
16977    if (TARGET_MIPS16 && REGNO (reg) == GP_REG_FIRST + 31)
16978      reg = gen_rtx_REG (GET_MODE (reg), GP_REG_FIRST + 7);
16979  
16980 -  if (TARGET_MIPS16 && !M16_REG_P (REGNO (reg)))
16981 +  if (REGNO (reg) == HI_REGNUM)
16982 +    {
16983 +      mips_emit_move (MIPS_EPILOGUE_TEMP (GET_MODE (reg)), mem);
16984 +      if (TARGET_64BIT)
16985 +       emit_insn (gen_mthisi_di (gen_rtx_REG (TImode, MD_REG_FIRST),
16986 +                                 MIPS_EPILOGUE_TEMP (DImode),
16987 +                                 gen_rtx_REG (DImode, LO_REGNUM)));
16988 +      else
16989 +       emit_insn (gen_mthisi_di (gen_rtx_REG (DImode, MD_REG_FIRST),
16990 +                                 MIPS_EPILOGUE_TEMP (SImode),
16991 +                                 gen_rtx_REG (SImode, LO_REGNUM)));
16992 +    }
16993 +  else if ((TARGET_MIPS16 && !M16_REG_P (REGNO (reg)))
16994 +          || ACC_REG_P (REGNO (reg)))
16995      {
16996        /* Can't restore directly; move through a temporary.  */
16997        mips_emit_move (MIPS_EPILOGUE_TEMP (GET_MODE (reg)), mem);
16998 @@ -9345,7 +9800,7 @@
16999  {
17000    const struct mips_frame_info *frame;
17001    HOST_WIDE_INT step1, step2;
17002 -  rtx base, target;
17003 +  rtx base, target, insn;
17004  
17005    if (!sibcall_p && mips_can_use_return_insn ())
17006      {
17007 @@ -9378,7 +9833,8 @@
17008  
17009    /* If we need to restore registers, deallocate as much stack as
17010       possible in the second step without going out of range.  */
17011 -  if ((frame->mask | frame->fmask) != 0)
17012 +  if ((frame->mask | frame->fmask | frame->acc_mask) != 0
17013 +      || frame->num_cop0_regs > 0)
17014      {
17015        step2 = MIN (step1, MIPS_MAX_FIRST_STACK_STEP);
17016        step1 -= step2;
17017 @@ -9440,13 +9896,53 @@
17018    else
17019      {
17020        /* Restore the registers.  */
17021 -      mips_for_each_saved_reg (frame->total_size - step2, mips_restore_reg);
17022 +      mips_for_each_saved_acc (frame->total_size - step2, mips_restore_reg);
17023 +      mips_for_each_saved_gpr_and_fpr (frame->total_size - step2,
17024 +                                      mips_restore_reg);
17025  
17026 -      /* Deallocate the final bit of the frame.  */
17027 -      if (step2 > 0)
17028 -       emit_insn (gen_add3_insn (stack_pointer_rtx,
17029 -                                 stack_pointer_rtx,
17030 -                                 GEN_INT (step2)));
17031 +      if (cfun->machine->interrupt_handler_p)
17032 +       {
17033 +         HOST_WIDE_INT offset;
17034 +         rtx mem;
17035 +
17036 +         offset = frame->cop0_sp_offset - (frame->total_size - step2);
17037 +         if (!cfun->machine->keep_interrupts_masked_p)
17038 +           {
17039 +             /* Restore the original EPC.  */
17040 +             mem = gen_frame_mem (word_mode,
17041 +                                  plus_constant (stack_pointer_rtx, offset));
17042 +             mips_emit_move (gen_rtx_REG (word_mode, K0_REG_NUM), mem);
17043 +             offset -= UNITS_PER_WORD;
17044 +
17045 +             /* Move to COP0 EPC.  */
17046 +             emit_insn (gen_cop0_move (gen_rtx_REG (SImode, COP0_EPC_REG_NUM),
17047 +                                       gen_rtx_REG (SImode, K0_REG_NUM)));
17048 +           }
17049 +
17050 +         /* Restore the original Status.  */
17051 +         mem = gen_frame_mem (word_mode,
17052 +                              plus_constant (stack_pointer_rtx, offset));
17053 +         mips_emit_move (gen_rtx_REG (word_mode, K0_REG_NUM), mem);
17054 +         offset -= UNITS_PER_WORD;
17055 +
17056 +         /* If we don't use shoadow register set, we need to update SP.  */
17057 +         if (!cfun->machine->use_shadow_register_set_p && step2 > 0)
17058 +           emit_insn (gen_add3_insn (stack_pointer_rtx,
17059 +                                     stack_pointer_rtx,
17060 +                                     GEN_INT (step2)));
17061 +
17062 +         /* Move to COP0 Status.  */
17063 +         emit_insn (gen_cop0_move (gen_rtx_REG (SImode, COP0_STATUS_REG_NUM),
17064 +                                   gen_rtx_REG (SImode, K0_REG_NUM)));
17065 +       }
17066 +      else
17067 +       {
17068 +         /* Deallocate the final bit of the frame.  */
17069 +         if (step2 > 0)
17070 +           emit_insn (gen_add3_insn (stack_pointer_rtx,
17071 +                                     stack_pointer_rtx,
17072 +                                     GEN_INT (step2)));
17073 +       }
17074      }
17075  
17076    /* Add in the __builtin_eh_return stack adjustment.  We need to
17077 @@ -9469,18 +9965,44 @@
17078  
17079    if (!sibcall_p)
17080      {
17081 -      unsigned int regno;
17082 -
17083 -      /* When generating MIPS16 code, the normal mips_for_each_saved_reg
17084 -        path will restore the return address into $7 rather than $31.  */
17085 -      if (TARGET_MIPS16
17086 -         && !GENERATE_MIPS16E_SAVE_RESTORE
17087 -         && BITSET_P (frame->mask, 31))
17088 -       regno = GP_REG_FIRST + 7;
17089 -      else
17090 -       regno = GP_REG_FIRST + 31;
17091        mips_expand_before_return ();
17092 -      emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, regno)));
17093 +      if (cfun->machine->interrupt_handler_p)
17094 +       {
17095 +         /* Interrupt handlers generate eret or deret.  */
17096 +         if (cfun->machine->use_debug_exception_return_p)
17097 +           emit_jump_insn (gen_mips_deret ());
17098 +         else
17099 +           emit_jump_insn (gen_mips_eret ());
17100 +       }
17101 +      else
17102 +       {
17103 +         unsigned int regno;
17104 +
17105 +         /* When generating MIPS16 code, the normal
17106 +            mips_for_each_saved_gpr_and_fpr path will restore the return
17107 +            address into $7 rather than $31.  */
17108 +         if (TARGET_MIPS16
17109 +             && !GENERATE_MIPS16E_SAVE_RESTORE
17110 +             && BITSET_P (frame->mask, 31))
17111 +           regno = GP_REG_FIRST + 7;
17112 +         else
17113 +           regno = GP_REG_FIRST + 31;
17114 +         emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, regno)));
17115 +       }
17116 +    }
17117 +
17118 +  /* Search from the beginning to the first use of K0 or K1.  */
17119 +  if (cfun->machine->interrupt_handler_p
17120 +      && !cfun->machine->keep_interrupts_masked_p)
17121 +    {
17122 +      for (insn = get_insns (); insn != NULL_RTX; insn = NEXT_INSN (insn))
17123 +       if (INSN_P (insn)
17124 +           && for_each_rtx (&PATTERN(insn), mips_kernel_reg_p, NULL))
17125 +         break;
17126 +      gcc_assert (insn != NULL_RTX);
17127 +      /* Insert disable interrupts before the first use of K0 or K1.  */
17128 +      emit_insn_before (gen_mips_di (), insn);
17129 +      emit_insn_before (gen_mips_ehb (), insn);
17130      }
17131  }
17132  \f
17133 @@ -9491,6 +10013,10 @@
17134  bool
17135  mips_can_use_return_insn (void)
17136  {
17137 +  /* Interrupt handlers need to go through the epilogue.  */
17138 +  if (cfun->machine->interrupt_handler_p)
17139 +    return false;
17140 +
17141    if (!reload_completed)
17142      return false;
17143  
17144 @@ -10422,10 +10948,15 @@
17145           s = "bnez\t%2,1f\n\tbreak\t7\n1:";
17146         }
17147        else if (GENERATE_DIVIDE_TRAPS)
17148 -        {
17149 -         output_asm_insn (s, operands);
17150 -         s = "teq\t%2,%.,7";
17151 -        }
17152 +       {
17153 +         if (TUNE_74K)
17154 +           output_asm_insn ("teq\t%2,%.,7", operands);
17155 +         else
17156 +           {
17157 +             output_asm_insn (s, operands);
17158 +             s = "teq\t%2,%.,7";
17159 +           }
17160 +       }
17161        else
17162         {
17163           output_asm_insn ("%(bne\t%2,%.,1f", operands);
17164 @@ -10737,7 +11268,17 @@
17165        ready[pos2] = temp;
17166      }
17167  }
17168 -\f
17169 +
17170 +int
17171 +mips_mult_madd_chain_bypass_p (rtx out_insn ATTRIBUTE_UNUSED,
17172 +                              rtx in_insn ATTRIBUTE_UNUSED)
17173 +{
17174 +  if (reload_completed)
17175 +    return false;
17176 +  else
17177 +    return true;
17178 +}
17179 +
17180  /* Used by TUNE_MACC_CHAINS to record the last scheduled instruction
17181     that may clobber hi or lo.  */
17182  static rtx mips_macc_chains_last_hilo;
17183 @@ -13910,6 +14451,14 @@
17184         long as any indirect jumps use $25.  */
17185      flag_pic = 1;
17186  
17187 +  /* For SDE, switch on ABICALLS mode if -fpic or -fpie were used, and the
17188 +     user hasn't explicitly disabled these modes.  */
17189 +  if (TARGET_MIPS_SDE
17190 +      && (flag_pic || flag_pie) && !TARGET_ABICALLS
17191 +      && !((target_flags_explicit & MASK_ABICALLS))
17192 +      && mips_abi != ABI_EABI)
17193 +    target_flags |= MASK_ABICALLS;
17194 +
17195    /* -mvr4130-align is a "speed over size" optimization: it usually produces
17196       faster code, but at the expense of more nops.  Enable it at -O3 and
17197       above.  */
17198 @@ -13984,26 +14533,46 @@
17199    if (TARGET_DSPR2)
17200      target_flags |= MASK_DSP;
17201  
17202 -  /* .eh_frame addresses should be the same width as a C pointer.
17203 -     Most MIPS ABIs support only one pointer size, so the assembler
17204 -     will usually know exactly how big an .eh_frame address is.
17205 -
17206 -     Unfortunately, this is not true of the 64-bit EABI.  The ABI was
17207 -     originally defined to use 64-bit pointers (i.e. it is LP64), and
17208 -     this is still the default mode.  However, we also support an n32-like
17209 -     ILP32 mode, which is selected by -mlong32.  The problem is that the
17210 -     assembler has traditionally not had an -mlong option, so it has
17211 -     traditionally not known whether we're using the ILP32 or LP64 form.
17212 -
17213 -     As it happens, gas versions up to and including 2.19 use _32-bit_
17214 -     addresses for EABI64 .cfi_* directives.  This is wrong for the
17215 -     default LP64 mode, so we can't use the directives by default.
17216 -     Moreover, since gas's current behavior is at odds with gcc's
17217 -     default behavior, it seems unwise to rely on future versions
17218 -     of gas behaving the same way.  We therefore avoid using .cfi
17219 -     directives for -mlong32 as well.  */
17220 -  if (mips_abi == ABI_EABI && TARGET_64BIT)
17221 -    flag_dwarf2_cfi_asm = 0;
17222 +  /* Use the traditional method of generating .eh_frames.
17223 +     We need this for two reasons:
17224 +
17225 +     - .eh_frame addresses should be the same width as a C pointer.
17226 +       Most MIPS ABIs support only one pointer size, so the assembler
17227 +       will usually know exactly how big an .eh_frame address is.
17228 +
17229 +       Unfortunately, this is not true of the 64-bit EABI.  The ABI was
17230 +       originally defined to use 64-bit pointers (i.e. it is LP64), and
17231 +       this is still the default mode.  However, we also support an n32-like
17232 +       ILP32 mode, which is selected by -mlong32.  The problem is that the
17233 +       assembler has traditionally not had an -mlong option, so it has
17234 +       traditionally not known whether we're using the ILP32 or LP64 form.
17235 +
17236 +       As it happens, gas versions up to and including 2.19 use _32-bit_
17237 +       addresses for EABI64 .cfi_* directives.  This is wrong for the
17238 +       default LP64 mode, so we can't use the directives by default.
17239 +       Moreover, since gas's current behavior is at odds with gcc's
17240 +       default behavior, it seems unwise to rely on future versions
17241 +       of gas behaving the same way.  We therefore avoid using .cfi
17242 +       directives for -mlong32 as well.
17243 +
17244 +     - .cfi* directives generate read-only .eh_frame sections.
17245 +       However, MIPS has traditionally not allowed directives like:
17246 +
17247 +           .long   x-.
17248 +
17249 +       in cases where "x" is in a different section, or is not defined
17250 +       in the same assembly file.  We have therefore traditionally
17251 +       used absolute addresses and a writable .eh_frame instead.
17252 +
17253 +       The linker is able to convert most of these absolute addresses
17254 +       into PC-relative form where doing so is necessary to avoid
17255 +       relocations.  However, until 2.21, it wasn't able to do this
17256 +       for indirect encodings or personality routines.
17257 +
17258 +       GNU ld 2.21 and GCC 4.5 have support for read-only .eh_frames,
17259 +       but for the time being, we should stick to the approach used
17260 +       in 4.3 and earlier.  */
17261 +  flag_dwarf2_cfi_asm = 0;
17262  
17263    mips_init_print_operand_punct ();
17264  
17265 @@ -14242,6 +14811,178 @@
17266        reg_alloc_order[24] = 0;
17267      }
17268  }
17269 +
17270 +/* Implement EPILOGUE_USES.  */
17271 +
17272 +bool
17273 +mips_epilogue_uses (unsigned int regno)
17274 +{
17275 +  /* Say that the epilogue uses the return address register.  Note that
17276 +     in the case of sibcalls, the values "used by the epilogue" are
17277 +     considered live at the start of the called function.  */
17278 +  if (regno == 31)
17279 +    return true;
17280 +
17281 +  /* If using a GOT, say that the epilogue also uses GOT_VERSION_REGNUM.
17282 +     See the comment above load_call<mode> for details.  */
17283 +  if (TARGET_USE_GOT && (regno) == GOT_VERSION_REGNUM)
17284 +    return true;
17285 +
17286 +  /* An interrupt handler must preserve some registers that are
17287 +     ordinarily call-clobbered.  */
17288 +  if (cfun->machine->interrupt_handler_p
17289 +      && mips_interrupt_extra_call_saved_reg_p (regno))
17290 +    return true;
17291 +
17292 +  return false;
17293 +}
17294 +\f
17295 +#ifdef CVMX_SHARED_BSS_FLAGS
17296 +/* Handle a "cvmx_shared" attribute; arguments as in 
17297 +   struct attribute_spec.handler.  */
17298 +
17299 +static tree
17300 +octeon_handle_cvmx_shared_attribute (tree *node, tree name, 
17301 +                                    tree args ATTRIBUTE_UNUSED, 
17302 +                                    int flags ATTRIBUTE_UNUSED, 
17303 +                                    bool *no_add_attrs)
17304 +{
17305 +  if (TREE_CODE (*node) != VAR_DECL)
17306 +    {
17307 +      warning (OPT_Wattributes, "%qs attribute only applies to variables",
17308 +              IDENTIFIER_POINTER (name));
17309 +      *no_add_attrs = true;
17310 +    }
17311 +
17312 +  return NULL_TREE;
17313 +}
17314 +\f
17315 +/* Switch to the appropriate section for output of DECL.
17316 +   DECL is either a `VAR_DECL' node or a constant of some sort.
17317 +   RELOC indicates whether forming the initial value of DECL requires
17318 +   link-time relocations.  */
17319 +
17320 +static section *
17321 +octeon_select_section (tree decl, int reloc, unsigned HOST_WIDE_INT align)
17322 +{
17323 +  if (decl && TREE_CODE (decl) == VAR_DECL 
17324 +      && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES (decl)))
17325 +    {
17326 +      const char *sname = NULL;
17327 +      unsigned int flags = SECTION_WRITE;
17328 +
17329 +      switch (categorize_decl_for_section (decl, reloc))
17330 +        {
17331 +         case SECCAT_DATA:
17332 +         case SECCAT_SDATA:
17333 +         case SECCAT_RODATA:
17334 +         case SECCAT_SRODATA:
17335 +         case SECCAT_RODATA_MERGE_STR:
17336 +         case SECCAT_RODATA_MERGE_STR_INIT:
17337 +         case SECCAT_RODATA_MERGE_CONST:
17338 +         case SECCAT_DATA_REL:
17339 +         case SECCAT_DATA_REL_LOCAL:
17340 +         case SECCAT_DATA_REL_RO:
17341 +         case SECCAT_DATA_REL_RO_LOCAL:
17342 +           sname = ".cvmx_shared";
17343 +           break;
17344 +         case SECCAT_BSS:
17345 +         case SECCAT_SBSS:
17346 +           sname = ".cvmx_shared_bss";
17347 +           flags |= SECTION_BSS;
17348 +           break;
17349 +         case SECCAT_TEXT:
17350 +         case SECCAT_TDATA:
17351 +         case SECCAT_TBSS:
17352 +            break;
17353 +        }
17354 +      if (sname)
17355 +       {
17356 +         return get_section (sname, flags, decl);
17357 +       }
17358 +    }
17359 +  return default_elf_select_section (decl, reloc, align);
17360 +}
17361 +\f
17362 +/* Build up a unique section name, expressed as a
17363 +   STRING_CST node, and assign it to DECL_SECTION_NAME (decl).
17364 +   RELOC indicates whether the initial value of EXP requires
17365 +   link-time relocations.  */
17366 +
17367 +static void 
17368 +octeon_unique_section (tree decl, int reloc)
17369 +{
17370 +  if (decl && TREE_CODE (decl) == VAR_DECL 
17371 +      && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES (decl)))
17372 +    {
17373 +      const char *sname = NULL;
17374 +
17375 +      if (! DECL_ONE_ONLY (decl))
17376 +       {
17377 +         section *sect;
17378 +         sect = octeon_select_section (decl, reloc, DECL_ALIGN (decl));
17379 +         DECL_SECTION_NAME (decl) = build_string (strlen (sect->named.name),
17380 +                                                  sect->named.name);
17381 +         return;
17382 +       }
17383 +
17384 +      switch (categorize_decl_for_section (decl, reloc))
17385 +        {
17386 +         case SECCAT_BSS:
17387 +         case SECCAT_SBSS:
17388 +           sname = ".cvmx_shared_bss.linkonce."; 
17389 +           break;
17390 +         case SECCAT_SDATA:
17391 +         case SECCAT_DATA:
17392 +         case SECCAT_DATA_REL:
17393 +         case SECCAT_DATA_REL_LOCAL:
17394 +         case SECCAT_DATA_REL_RO:
17395 +         case SECCAT_DATA_REL_RO_LOCAL:
17396 +         case SECCAT_RODATA:
17397 +         case SECCAT_SRODATA:
17398 +         case SECCAT_RODATA_MERGE_STR:
17399 +         case SECCAT_RODATA_MERGE_STR_INIT:
17400 +         case SECCAT_RODATA_MERGE_CONST:
17401 +           sname = ".cvmx_shared.linkonce.";
17402 +           break;
17403 +         case SECCAT_TEXT:
17404 +         case SECCAT_TDATA:
17405 +         case SECCAT_TBSS:
17406 +           break; 
17407 +       }
17408 +      if (sname)
17409 +        {
17410 +         const char *name;
17411 +         size_t plen, nlen;
17412 +         char *string;
17413 +         plen = strlen (sname);
17414 +
17415 +         name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
17416 +         name = targetm.strip_name_encoding (name);
17417 +         nlen = strlen (name);
17418 +
17419 +         string = alloca (plen + nlen + 1);
17420 +         memcpy (string, sname, plen);
17421 +         memcpy (string + plen, name, nlen + 1);
17422 +         DECL_SECTION_NAME (decl) = build_string (nlen + plen, string);
17423 +         return;
17424 +        }
17425 +    }
17426 +  default_unique_section (decl, reloc);
17427 +}
17428 +\f
17429 +/* Emit an uninitialized cvmx_shared variable.  */
17430 +void
17431 +octeon_output_shared_variable (FILE *stream, tree decl, const char *name,
17432 +                               unsigned HOST_WIDE_INT size, int align)
17433 +{
17434 +  switch_to_section (get_section (".cvmx_shared_bss", CVMX_SHARED_BSS_FLAGS,
17435 +                                 NULL_TREE));
17436 +  ASM_OUTPUT_ALIGN (stream, floor_log2 (align / BITS_PER_UNIT));
17437 +  ASM_DECLARE_OBJECT_NAME (stream, name, decl);
17438 +  ASM_OUTPUT_SKIP (stream, size != 0 ? size : 1);
17439 +}
17440 +#endif
17441  \f
17442  /* Initialize the GCC target structure.  */
17443  #undef TARGET_ASM_ALIGNED_HI_OP
17444 diff -Nur a/gcc/config/mips/mips-dsp.md b/gcc/config/mips/mips-dsp.md
17445 --- a/gcc/config/mips/mips-dsp.md       2008-12-21 22:43:51.000000000 +0100
17446 +++ b/gcc/config/mips/mips-dsp.md       2010-01-25 09:50:29.025687257 +0100
17447 @@ -42,9 +42,9 @@
17448                      (match_operand:DSPV 2 "register_operand" "d")))
17449       (set (reg:CCDSP CCDSP_OU_REGNUM)
17450           (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDQ))])]
17451 -  ""
17452 +  "ISA_HAS_DSP"
17453    "add<DSPV:dspfmt1>.<DSPV:dspfmt2>\t%0,%1,%2"
17454 -  [(set_attr "type"    "arith")
17455 +  [(set_attr "type"    "dspalu")
17456     (set_attr "mode"    "SI")])
17457  
17458  (define_insn "mips_add<DSP:dspfmt1>_s_<DSP:dspfmt2>"
17459 @@ -55,9 +55,9 @@
17460                       UNSPEC_ADDQ_S))
17461       (set (reg:CCDSP CCDSP_OU_REGNUM)
17462           (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDQ_S))])]
17463 -  ""
17464 +  "ISA_HAS_DSP"
17465    "add<DSP:dspfmt1>_s.<DSP:dspfmt2>\t%0,%1,%2"
17466 -  [(set_attr "type"    "arith")
17467 +  [(set_attr "type"    "dspalusat")
17468     (set_attr "mode"    "SI")])
17469  
17470  ;; SUBQ*
17471 @@ -70,7 +70,7 @@
17472           (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBQ))])]
17473    "ISA_HAS_DSP"
17474    "sub<DSPV:dspfmt1>.<DSPV:dspfmt2>\t%0,%1,%2"
17475 -  [(set_attr "type"    "arith")
17476 +  [(set_attr "type"    "dspalu")
17477     (set_attr "mode"    "SI")])
17478  
17479  (define_insn "mips_sub<DSP:dspfmt1>_s_<DSP:dspfmt2>"
17480 @@ -83,7 +83,7 @@
17481           (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBQ_S))])]
17482    "ISA_HAS_DSP"
17483    "sub<DSP:dspfmt1>_s.<DSP:dspfmt2>\t%0,%1,%2"
17484 -  [(set_attr "type"    "arith")
17485 +  [(set_attr "type"    "dspalusat")
17486     (set_attr "mode"    "SI")])
17487  
17488  ;; ADDSC
17489 @@ -97,7 +97,7 @@
17490           (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDSC))])]
17491    "ISA_HAS_DSP"
17492    "addsc\t%0,%1,%2"
17493 -  [(set_attr "type"    "arith")
17494 +  [(set_attr "type"    "dspalu")
17495     (set_attr "mode"    "SI")])
17496  
17497  ;; ADDWC
17498 @@ -112,7 +112,7 @@
17499           (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDWC))])]
17500    "ISA_HAS_DSP"
17501    "addwc\t%0,%1,%2"
17502 -  [(set_attr "type"    "arith")
17503 +  [(set_attr "type"    "dspalu")
17504     (set_attr "mode"    "SI")])
17505  
17506  ;; MODSUB
17507 @@ -123,7 +123,7 @@
17508                    UNSPEC_MODSUB))]
17509    "ISA_HAS_DSP"
17510    "modsub\t%0,%1,%2"
17511 -  [(set_attr "type"    "arith")
17512 +  [(set_attr "type"    "dspalu")
17513     (set_attr "mode"    "SI")])
17514  
17515  ;; RADDU*
17516 @@ -133,7 +133,7 @@
17517                    UNSPEC_RADDU_W_QB))]
17518    "ISA_HAS_DSP"
17519    "raddu.w.qb\t%0,%1"
17520 -  [(set_attr "type"    "arith")
17521 +  [(set_attr "type"    "dspalu")
17522     (set_attr "mode"    "SI")])
17523  
17524  ;; ABSQ*
17525 @@ -146,7 +146,7 @@
17526           (unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S))])]
17527    "ISA_HAS_DSP"
17528    "absq_s.<DSPQ:dspfmt2>\t%0,%1"
17529 -  [(set_attr "type"    "arith")
17530 +  [(set_attr "type"    "dspalusat")
17531     (set_attr "mode"    "SI")])
17532  
17533  ;; PRECRQ*
17534 @@ -157,7 +157,7 @@
17535                      UNSPEC_PRECRQ_QB_PH))]
17536    "ISA_HAS_DSP"
17537    "precrq.qb.ph\t%0,%1,%2"
17538 -  [(set_attr "type"    "arith")
17539 +  [(set_attr "type"    "dspalu")
17540     (set_attr "mode"    "SI")])
17541  
17542  (define_insn "mips_precrq_ph_w"
17543 @@ -167,7 +167,7 @@
17544                      UNSPEC_PRECRQ_PH_W))]
17545    "ISA_HAS_DSP"
17546    "precrq.ph.w\t%0,%1,%2"
17547 -  [(set_attr "type"    "arith")
17548 +  [(set_attr "type"    "dspalu")
17549     (set_attr "mode"    "SI")])
17550  
17551  (define_insn "mips_precrq_rs_ph_w"
17552 @@ -181,7 +181,7 @@
17553                         UNSPEC_PRECRQ_RS_PH_W))])]
17554    "ISA_HAS_DSP"
17555    "precrq_rs.ph.w\t%0,%1,%2"
17556 -  [(set_attr "type"    "arith")
17557 +  [(set_attr "type"    "dspalu")
17558     (set_attr "mode"    "SI")])
17559  
17560  ;; PRECRQU*
17561 @@ -196,7 +196,7 @@
17562                         UNSPEC_PRECRQU_S_QB_PH))])]
17563    "ISA_HAS_DSP"
17564    "precrqu_s.qb.ph\t%0,%1,%2"
17565 -  [(set_attr "type"    "arith")
17566 +  [(set_attr "type"    "dspalusat")
17567     (set_attr "mode"    "SI")])
17568  
17569  ;; PRECEQ*
17570 @@ -206,7 +206,7 @@
17571                    UNSPEC_PRECEQ_W_PHL))]
17572    "ISA_HAS_DSP"
17573    "preceq.w.phl\t%0,%1"
17574 -  [(set_attr "type"    "arith")
17575 +  [(set_attr "type"    "dspalu")
17576     (set_attr "mode"    "SI")])
17577  
17578  (define_insn "mips_preceq_w_phr"
17579 @@ -215,7 +215,7 @@
17580                    UNSPEC_PRECEQ_W_PHR))]
17581    "ISA_HAS_DSP"
17582    "preceq.w.phr\t%0,%1"
17583 -  [(set_attr "type"    "arith")
17584 +  [(set_attr "type"    "dspalu")
17585     (set_attr "mode"    "SI")])
17586  
17587  ;; PRECEQU*
17588 @@ -225,7 +225,7 @@
17589                      UNSPEC_PRECEQU_PH_QBL))]
17590    "ISA_HAS_DSP"
17591    "precequ.ph.qbl\t%0,%1"
17592 -  [(set_attr "type"    "arith")
17593 +  [(set_attr "type"    "dspalu")
17594     (set_attr "mode"    "SI")])
17595  
17596  (define_insn "mips_precequ_ph_qbr"
17597 @@ -234,7 +234,7 @@
17598                      UNSPEC_PRECEQU_PH_QBR))]
17599    "ISA_HAS_DSP"
17600    "precequ.ph.qbr\t%0,%1"
17601 -  [(set_attr "type"    "arith")
17602 +  [(set_attr "type"    "dspalu")
17603     (set_attr "mode"    "SI")])
17604  
17605  (define_insn "mips_precequ_ph_qbla"
17606 @@ -243,7 +243,7 @@
17607                      UNSPEC_PRECEQU_PH_QBLA))]
17608    "ISA_HAS_DSP"
17609    "precequ.ph.qbla\t%0,%1"
17610 -  [(set_attr "type"    "arith")
17611 +  [(set_attr "type"    "dspalu")
17612     (set_attr "mode"    "SI")])
17613  
17614  (define_insn "mips_precequ_ph_qbra"
17615 @@ -252,7 +252,7 @@
17616                      UNSPEC_PRECEQU_PH_QBRA))]
17617    "ISA_HAS_DSP"
17618    "precequ.ph.qbra\t%0,%1"
17619 -  [(set_attr "type"    "arith")
17620 +  [(set_attr "type"    "dspalu")
17621     (set_attr "mode"    "SI")])
17622  
17623  ;; PRECEU*
17624 @@ -262,7 +262,7 @@
17625                      UNSPEC_PRECEU_PH_QBL))]
17626    "ISA_HAS_DSP"
17627    "preceu.ph.qbl\t%0,%1"
17628 -  [(set_attr "type"    "arith")
17629 +  [(set_attr "type"    "dspalu")
17630     (set_attr "mode"    "SI")])
17631  
17632  (define_insn "mips_preceu_ph_qbr"
17633 @@ -271,7 +271,7 @@
17634                      UNSPEC_PRECEU_PH_QBR))]
17635    "ISA_HAS_DSP"
17636    "preceu.ph.qbr\t%0,%1"
17637 -  [(set_attr "type"    "arith")
17638 +  [(set_attr "type"    "dspalu")
17639     (set_attr "mode"    "SI")])
17640  
17641  (define_insn "mips_preceu_ph_qbla"
17642 @@ -280,7 +280,7 @@
17643                      UNSPEC_PRECEU_PH_QBLA))]
17644    "ISA_HAS_DSP"
17645    "preceu.ph.qbla\t%0,%1"
17646 -  [(set_attr "type"    "arith")
17647 +  [(set_attr "type"    "dspalu")
17648     (set_attr "mode"    "SI")])
17649  
17650  (define_insn "mips_preceu_ph_qbra"
17651 @@ -289,7 +289,7 @@
17652                      UNSPEC_PRECEU_PH_QBRA))]
17653    "ISA_HAS_DSP"
17654    "preceu.ph.qbra\t%0,%1"
17655 -  [(set_attr "type"    "arith")
17656 +  [(set_attr "type"    "dspalu")
17657     (set_attr "mode"    "SI")])
17658  
17659  ;; Table 2-2. MIPS DSP ASE Instructions: Shift
17660 @@ -313,7 +313,7 @@
17661      }
17662    return "shllv.<DSPV:dspfmt2>\t%0,%1,%2";
17663  }
17664 -  [(set_attr "type"    "shift")
17665 +  [(set_attr "type"    "dspalu")
17666     (set_attr "mode"    "SI")])
17667  
17668  (define_insn "mips_shll_s_<DSPQ:dspfmt2>"
17669 @@ -335,7 +335,7 @@
17670      }
17671    return "shllv_s.<DSPQ:dspfmt2>\t%0,%1,%2";
17672  }
17673 -  [(set_attr "type"    "shift")
17674 +  [(set_attr "type"    "dspalusat")
17675     (set_attr "mode"    "SI")])
17676  
17677  ;; SHRL*
17678 @@ -354,7 +354,7 @@
17679      }
17680    return "shrlv.qb\t%0,%1,%2";
17681  }
17682 -  [(set_attr "type"    "shift")
17683 +  [(set_attr "type"    "dspalu")
17684     (set_attr "mode"    "SI")])
17685  
17686  ;; SHRA*
17687 @@ -373,7 +373,7 @@
17688      }
17689    return "shrav.ph\t%0,%1,%2";
17690  }
17691 -  [(set_attr "type"    "shift")
17692 +  [(set_attr "type"    "dspalu")
17693     (set_attr "mode"    "SI")])
17694  
17695  (define_insn "mips_shra_r_<DSPQ:dspfmt2>"
17696 @@ -392,7 +392,7 @@
17697      }
17698    return "shrav_r.<DSPQ:dspfmt2>\t%0,%1,%2";
17699  }
17700 -  [(set_attr "type"    "shift")
17701 +  [(set_attr "type"    "dspalu")
17702     (set_attr "mode"    "SI")])
17703  
17704  ;; Table 2-3. MIPS DSP ASE Instructions: Multiply
17705 @@ -478,7 +478,7 @@
17706                    UNSPEC_DPAU_H_QBL))]
17707    "ISA_HAS_DSP && !TARGET_64BIT"
17708    "dpau.h.qbl\t%q0,%2,%3"
17709 -  [(set_attr "type"    "imadd")
17710 +  [(set_attr "type"    "dspmac")
17711     (set_attr "mode"    "SI")])
17712  
17713  (define_insn "mips_dpau_h_qbr"
17714 @@ -489,7 +489,7 @@
17715                    UNSPEC_DPAU_H_QBR))]
17716    "ISA_HAS_DSP && !TARGET_64BIT"
17717    "dpau.h.qbr\t%q0,%2,%3"
17718 -  [(set_attr "type"    "imadd")
17719 +  [(set_attr "type"    "dspmac")
17720     (set_attr "mode"    "SI")])
17721  
17722  ;; DPSU*
17723 @@ -501,7 +501,7 @@
17724                    UNSPEC_DPSU_H_QBL))]
17725    "ISA_HAS_DSP && !TARGET_64BIT"
17726    "dpsu.h.qbl\t%q0,%2,%3"
17727 -  [(set_attr "type"    "imadd")
17728 +  [(set_attr "type"    "dspmac")
17729     (set_attr "mode"    "SI")])
17730  
17731  (define_insn "mips_dpsu_h_qbr"
17732 @@ -512,7 +512,7 @@
17733                    UNSPEC_DPSU_H_QBR))]
17734    "ISA_HAS_DSP && !TARGET_64BIT"
17735    "dpsu.h.qbr\t%q0,%2,%3"
17736 -  [(set_attr "type"    "imadd")
17737 +  [(set_attr "type"    "dspmac")
17738     (set_attr "mode"    "SI")])
17739  
17740  ;; DPAQ*
17741 @@ -528,7 +528,7 @@
17742                         UNSPEC_DPAQ_S_W_PH))])]
17743    "ISA_HAS_DSP && !TARGET_64BIT"
17744    "dpaq_s.w.ph\t%q0,%2,%3"
17745 -  [(set_attr "type"    "imadd")
17746 +  [(set_attr "type"    "dspmac")
17747     (set_attr "mode"    "SI")])
17748  
17749  ;; DPSQ*
17750 @@ -544,7 +544,7 @@
17751                         UNSPEC_DPSQ_S_W_PH))])]
17752    "ISA_HAS_DSP && !TARGET_64BIT"
17753    "dpsq_s.w.ph\t%q0,%2,%3"
17754 -  [(set_attr "type"    "imadd")
17755 +  [(set_attr "type"    "dspmac")
17756     (set_attr "mode"    "SI")])
17757  
17758  ;; MULSAQ*
17759 @@ -560,7 +560,7 @@
17760                         UNSPEC_MULSAQ_S_W_PH))])]
17761    "ISA_HAS_DSP && !TARGET_64BIT"
17762    "mulsaq_s.w.ph\t%q0,%2,%3"
17763 -  [(set_attr "type"    "imadd")
17764 +  [(set_attr "type"    "dspmac")
17765     (set_attr "mode"    "SI")])
17766  
17767  ;; DPAQ*
17768 @@ -576,7 +576,7 @@
17769                         UNSPEC_DPAQ_SA_L_W))])]
17770    "ISA_HAS_DSP && !TARGET_64BIT"
17771    "dpaq_sa.l.w\t%q0,%2,%3"
17772 -  [(set_attr "type"    "imadd")
17773 +  [(set_attr "type"    "dspmacsat")
17774     (set_attr "mode"    "SI")])
17775  
17776  ;; DPSQ*
17777 @@ -592,7 +592,7 @@
17778                         UNSPEC_DPSQ_SA_L_W))])]
17779    "ISA_HAS_DSP && !TARGET_64BIT"
17780    "dpsq_sa.l.w\t%q0,%2,%3"
17781 -  [(set_attr "type"    "imadd")
17782 +  [(set_attr "type"    "dspmacsat")
17783     (set_attr "mode"    "SI")])
17784  
17785  ;; MAQ*
17786 @@ -608,7 +608,7 @@
17787                         UNSPEC_MAQ_S_W_PHL))])]
17788    "ISA_HAS_DSP && !TARGET_64BIT"
17789    "maq_s.w.phl\t%q0,%2,%3"
17790 -  [(set_attr "type"    "imadd")
17791 +  [(set_attr "type"    "dspmac")
17792     (set_attr "mode"    "SI")])
17793  
17794  (define_insn "mips_maq_s_w_phr"
17795 @@ -623,7 +623,7 @@
17796                         UNSPEC_MAQ_S_W_PHR))])]
17797    "ISA_HAS_DSP && !TARGET_64BIT"
17798    "maq_s.w.phr\t%q0,%2,%3"
17799 -  [(set_attr "type"    "imadd")
17800 +  [(set_attr "type"    "dspmac")
17801     (set_attr "mode"    "SI")])
17802  
17803  ;; MAQ_SA*
17804 @@ -639,7 +639,7 @@
17805                         UNSPEC_MAQ_SA_W_PHL))])]
17806    "ISA_HAS_DSP && !TARGET_64BIT"
17807    "maq_sa.w.phl\t%q0,%2,%3"
17808 -  [(set_attr "type"    "imadd")
17809 +  [(set_attr "type"    "dspmacsat")
17810     (set_attr "mode"    "SI")])
17811  
17812  (define_insn "mips_maq_sa_w_phr"
17813 @@ -654,7 +654,7 @@
17814                         UNSPEC_MAQ_SA_W_PHR))])]
17815    "ISA_HAS_DSP && !TARGET_64BIT"
17816    "maq_sa.w.phr\t%q0,%2,%3"
17817 -  [(set_attr "type"    "imadd")
17818 +  [(set_attr "type"    "dspmacsat")
17819     (set_attr "mode"    "SI")])
17820  
17821  ;; Table 2-4. MIPS DSP ASE Instructions: General Bit/Manipulation
17822 @@ -665,7 +665,7 @@
17823                    UNSPEC_BITREV))]
17824    "ISA_HAS_DSP"
17825    "bitrev\t%0,%1"
17826 -  [(set_attr "type"    "arith")
17827 +  [(set_attr "type"    "dspalu")
17828     (set_attr "mode"    "SI")])
17829  
17830  ;; INSV
17831 @@ -678,7 +678,7 @@
17832                    UNSPEC_INSV))]
17833    "ISA_HAS_DSP"
17834    "insv\t%0,%2"
17835 -  [(set_attr "type"    "arith")
17836 +  [(set_attr "type"    "dspalu")
17837     (set_attr "mode"    "SI")])
17838  
17839  ;; REPL*
17840 @@ -696,7 +696,7 @@
17841      }
17842    return "replv.qb\t%0,%1";
17843  }
17844 -  [(set_attr "type"    "arith")
17845 +  [(set_attr "type"    "dspalu")
17846     (set_attr "mode"    "SI")])
17847  
17848  (define_insn "mips_repl_ph"
17849 @@ -707,7 +707,7 @@
17850    "@
17851     repl.ph\t%0,%1
17852     replv.ph\t%0,%1"
17853 -  [(set_attr "type"    "arith")
17854 +  [(set_attr "type"    "dspalu")
17855     (set_attr "mode"    "SI")])
17856  
17857  ;; Table 2-5. MIPS DSP ASE Instructions: Compare-Pick
17858 @@ -720,7 +720,7 @@
17859                       UNSPEC_CMP_EQ))]
17860    "ISA_HAS_DSP"
17861    "cmp<DSPV:dspfmt1_1>.eq.<DSPV:dspfmt2>\t%0,%1"
17862 -  [(set_attr "type"    "arith")
17863 +  [(set_attr "type"    "dspalu")
17864     (set_attr "mode"    "SI")])
17865  
17866  (define_insn "mips_cmp<DSPV:dspfmt1_1>_lt_<DSPV:dspfmt2>"
17867 @@ -731,7 +731,7 @@
17868                       UNSPEC_CMP_LT))]
17869    "ISA_HAS_DSP"
17870    "cmp<DSPV:dspfmt1_1>.lt.<DSPV:dspfmt2>\t%0,%1"
17871 -  [(set_attr "type"    "arith")
17872 +  [(set_attr "type"    "dspalu")
17873     (set_attr "mode"    "SI")])
17874  
17875  (define_insn "mips_cmp<DSPV:dspfmt1_1>_le_<DSPV:dspfmt2>"
17876 @@ -742,7 +742,7 @@
17877                       UNSPEC_CMP_LE))]
17878    "ISA_HAS_DSP"
17879    "cmp<DSPV:dspfmt1_1>.le.<DSPV:dspfmt2>\t%0,%1"
17880 -  [(set_attr "type"    "arith")
17881 +  [(set_attr "type"    "dspalu")
17882     (set_attr "mode"    "SI")])
17883  
17884  (define_insn "mips_cmpgu_eq_qb"
17885 @@ -752,7 +752,7 @@
17886                    UNSPEC_CMPGU_EQ_QB))]
17887    "ISA_HAS_DSP"
17888    "cmpgu.eq.qb\t%0,%1,%2"
17889 -  [(set_attr "type"    "arith")
17890 +  [(set_attr "type"    "dspalu")
17891     (set_attr "mode"    "SI")])
17892  
17893  (define_insn "mips_cmpgu_lt_qb"
17894 @@ -762,7 +762,7 @@
17895                    UNSPEC_CMPGU_LT_QB))]
17896    "ISA_HAS_DSP"
17897    "cmpgu.lt.qb\t%0,%1,%2"
17898 -  [(set_attr "type"    "arith")
17899 +  [(set_attr "type"    "dspalu")
17900     (set_attr "mode"    "SI")])
17901  
17902  (define_insn "mips_cmpgu_le_qb"
17903 @@ -772,7 +772,7 @@
17904                    UNSPEC_CMPGU_LE_QB))]
17905    "ISA_HAS_DSP"
17906    "cmpgu.le.qb\t%0,%1,%2"
17907 -  [(set_attr "type"    "arith")
17908 +  [(set_attr "type"    "dspalu")
17909     (set_attr "mode"    "SI")])
17910  
17911  ;; PICK*
17912 @@ -784,7 +784,7 @@
17913                      UNSPEC_PICK))]
17914    "ISA_HAS_DSP"
17915    "pick.<DSPV:dspfmt2>\t%0,%1,%2"
17916 -  [(set_attr "type"    "arith")
17917 +  [(set_attr "type"    "dspalu")
17918     (set_attr "mode"    "SI")])
17919  
17920  ;; PACKRL*
17921 @@ -795,7 +795,7 @@
17922                      UNSPEC_PACKRL_PH))]
17923    "ISA_HAS_DSP"
17924    "packrl.ph\t%0,%1,%2"
17925 -  [(set_attr "type"    "arith")
17926 +  [(set_attr "type"    "dspalu")
17927     (set_attr "mode"    "SI")])
17928  
17929  ;; Table 2-6. MIPS DSP ASE Instructions: Accumulator and DSPControl Access
17930 @@ -818,7 +818,7 @@
17931      }
17932    return "extrv.w\t%0,%q1,%2";
17933  }
17934 -  [(set_attr "type"    "mfhilo")
17935 +  [(set_attr "type"    "accext")
17936     (set_attr "mode"    "SI")])
17937  
17938  (define_insn "mips_extr_r_w"
17939 @@ -839,7 +839,7 @@
17940      }
17941    return "extrv_r.w\t%0,%q1,%2";
17942  }
17943 -  [(set_attr "type"    "mfhilo")
17944 +  [(set_attr "type"    "accext")
17945     (set_attr "mode"    "SI")])
17946  
17947  (define_insn "mips_extr_rs_w"
17948 @@ -860,7 +860,7 @@
17949      }
17950    return "extrv_rs.w\t%0,%q1,%2";
17951  }
17952 -  [(set_attr "type"    "mfhilo")
17953 +  [(set_attr "type"    "accext")
17954     (set_attr "mode"    "SI")])
17955  
17956  ;; EXTR*_S.H
17957 @@ -882,7 +882,7 @@
17958      }
17959    return "extrv_s.h\t%0,%q1,%2";
17960  }
17961 -  [(set_attr "type"    "mfhilo")
17962 +  [(set_attr "type"    "accext")
17963     (set_attr "mode"    "SI")])
17964  
17965  ;; EXTP*
17966 @@ -905,7 +905,7 @@
17967      }
17968    return "extpv\t%0,%q1,%2";
17969  }
17970 -  [(set_attr "type"    "mfhilo")
17971 +  [(set_attr "type"    "accext")
17972     (set_attr "mode"    "SI")])
17973  
17974  (define_insn "mips_extpdp"
17975 @@ -930,7 +930,7 @@
17976      }
17977    return "extpdpv\t%0,%q1,%2";
17978  }
17979 -  [(set_attr "type"    "mfhilo")
17980 +  [(set_attr "type"    "accext")
17981     (set_attr "mode"    "SI")])
17982  
17983  ;; SHILO*
17984 @@ -949,7 +949,7 @@
17985      }
17986    return "shilov\t%q0,%2";
17987  }
17988 -  [(set_attr "type"    "mfhilo")
17989 +  [(set_attr "type"    "accmod")
17990     (set_attr "mode"    "SI")])
17991  
17992  ;; MTHLIP*
17993 @@ -965,7 +965,7 @@
17994                          (reg:CCDSP CCDSP_PO_REGNUM)] UNSPEC_MTHLIP))])]
17995    "ISA_HAS_DSP && !TARGET_64BIT"
17996    "mthlip\t%2,%q0"
17997 -  [(set_attr "type"    "mfhilo")
17998 +  [(set_attr "type"    "accmod")
17999     (set_attr "mode"    "SI")])
18000  
18001  ;; WRDSP
18002 @@ -987,7 +987,7 @@
18003           (unspec:CCDSP [(match_dup 0) (match_dup 1)] UNSPEC_WRDSP))])]
18004    "ISA_HAS_DSP"
18005    "wrdsp\t%0,%1"
18006 -  [(set_attr "type"    "arith")
18007 +  [(set_attr "type"    "dspalu")
18008     (set_attr "mode"    "SI")])
18009  
18010  ;; RDDSP
18011 @@ -1003,7 +1003,7 @@
18012                    UNSPEC_RDDSP))]
18013    "ISA_HAS_DSP"
18014    "rddsp\t%0,%1"
18015 -  [(set_attr "type"    "arith")
18016 +  [(set_attr "type"    "dspalu")
18017     (set_attr "mode"    "SI")])
18018  
18019  ;; Table 2-7. MIPS DSP ASE Instructions: Indexed-Load
18020 diff -Nur a/gcc/config/mips/mips-dspr2.md b/gcc/config/mips/mips-dspr2.md
18021 --- a/gcc/config/mips/mips-dspr2.md     2007-09-23 11:24:21.000000000 +0200
18022 +++ b/gcc/config/mips/mips-dspr2.md     2010-01-25 09:50:29.025687257 +0100
18023 @@ -9,7 +9,7 @@
18024           (unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S_QB))])]
18025    "ISA_HAS_DSPR2"
18026    "absq_s.qb\t%0,%z1"
18027 -  [(set_attr "type"    "arith")
18028 +  [(set_attr "type"    "dspalusat")
18029     (set_attr "mode"    "SI")])
18030  
18031  (define_insn "mips_addu_ph"
18032 @@ -21,7 +21,7 @@
18033           (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_PH))])]
18034    "ISA_HAS_DSPR2"
18035    "addu.ph\t%0,%z1,%z2"
18036 -  [(set_attr "type"    "arith")
18037 +  [(set_attr "type"    "dspalu")
18038     (set_attr "mode"    "SI")])
18039  
18040  (define_insn "mips_addu_s_ph"
18041 @@ -34,7 +34,7 @@
18042           (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_S_PH))])]
18043    "ISA_HAS_DSPR2"
18044    "addu_s.ph\t%0,%z1,%z2"
18045 -  [(set_attr "type"    "arith")
18046 +  [(set_attr "type"    "dspalusat")
18047     (set_attr "mode"    "SI")])
18048  
18049  (define_insn "mips_adduh_qb"
18050 @@ -44,7 +44,7 @@
18051                      UNSPEC_ADDUH_QB))]
18052    "ISA_HAS_DSPR2"
18053    "adduh.qb\t%0,%z1,%z2"
18054 -  [(set_attr "type"    "arith")
18055 +  [(set_attr "type"    "dspalu")
18056     (set_attr "mode"    "SI")])
18057  
18058  (define_insn "mips_adduh_r_qb"
18059 @@ -54,7 +54,7 @@
18060                      UNSPEC_ADDUH_R_QB))]
18061    "ISA_HAS_DSPR2"
18062    "adduh_r.qb\t%0,%z1,%z2"
18063 -  [(set_attr "type"    "arith")
18064 +  [(set_attr "type"    "dspalusat")
18065     (set_attr "mode"    "SI")])
18066  
18067  (define_insn "mips_append"
18068 @@ -69,7 +69,7 @@
18069      operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
18070    return "append\t%0,%z2,%3";
18071  }
18072 -  [(set_attr "type"    "arith")
18073 +  [(set_attr "type"    "dspalu")
18074     (set_attr "mode"    "SI")])
18075  
18076  (define_insn "mips_balign"
18077 @@ -84,7 +84,7 @@
18078      operands[2] = GEN_INT (INTVAL (operands[2]) & 3);
18079    return "balign\t%0,%z2,%3";
18080  }
18081 -  [(set_attr "type"    "arith")
18082 +  [(set_attr "type"    "dspalu")
18083     (set_attr "mode"    "SI")])
18084  
18085  (define_insn "mips_cmpgdu_eq_qb"
18086 @@ -99,7 +99,7 @@
18087                         UNSPEC_CMPGDU_EQ_QB))])]
18088    "ISA_HAS_DSPR2"
18089    "cmpgdu.eq.qb\t%0,%z1,%z2"
18090 -  [(set_attr "type"    "arith")
18091 +  [(set_attr "type"    "dspalu")
18092     (set_attr "mode"    "SI")])
18093  
18094  (define_insn "mips_cmpgdu_lt_qb"
18095 @@ -114,7 +114,7 @@
18096                         UNSPEC_CMPGDU_LT_QB))])]
18097    "ISA_HAS_DSPR2"
18098    "cmpgdu.lt.qb\t%0,%z1,%z2"
18099 -  [(set_attr "type"    "arith")
18100 +  [(set_attr "type"    "dspalu")
18101     (set_attr "mode"    "SI")])
18102  
18103  (define_insn "mips_cmpgdu_le_qb"
18104 @@ -129,7 +129,7 @@
18105                         UNSPEC_CMPGDU_LE_QB))])]
18106    "ISA_HAS_DSPR2"
18107    "cmpgdu.le.qb\t%0,%z1,%z2"
18108 -  [(set_attr "type"    "arith")
18109 +  [(set_attr "type"    "dspalu")
18110     (set_attr "mode"    "SI")])
18111  
18112  (define_insn "mips_dpa_w_ph"
18113 @@ -140,7 +140,7 @@
18114                    UNSPEC_DPA_W_PH))]
18115    "ISA_HAS_DSPR2 && !TARGET_64BIT"
18116    "dpa.w.ph\t%q0,%z2,%z3"
18117 -  [(set_attr "type"    "imadd")
18118 +  [(set_attr "type"    "dspmac")
18119     (set_attr "mode"    "SI")])
18120  
18121  (define_insn "mips_dps_w_ph"
18122 @@ -151,7 +151,7 @@
18123                    UNSPEC_DPS_W_PH))]
18124    "ISA_HAS_DSPR2 && !TARGET_64BIT"
18125    "dps.w.ph\t%q0,%z2,%z3"
18126 -  [(set_attr "type"    "imadd")
18127 +  [(set_attr "type"    "dspmac")
18128     (set_attr "mode"    "SI")])
18129  
18130  (define_expand "mips_madd<u>"
18131 @@ -247,7 +247,7 @@
18132                    UNSPEC_MULSA_W_PH))]
18133    "ISA_HAS_DSPR2 && !TARGET_64BIT"
18134    "mulsa.w.ph\t%q0,%z2,%z3"
18135 -  [(set_attr "type"    "imadd")
18136 +  [(set_attr "type"    "dspmac")
18137     (set_attr "mode"    "SI")])
18138  
18139  (define_insn "mips_mult"
18140 @@ -277,7 +277,7 @@
18141                      UNSPEC_PRECR_QB_PH))]
18142    "ISA_HAS_DSPR2"
18143    "precr.qb.ph\t%0,%z1,%z2"
18144 -  [(set_attr "type"    "arith")
18145 +  [(set_attr "type"    "dspalu")
18146     (set_attr "mode"    "SI")])
18147  
18148  (define_insn "mips_precr_sra_ph_w"
18149 @@ -292,7 +292,7 @@
18150      operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
18151    return "precr_sra.ph.w\t%0,%z2,%3";
18152  }
18153 -  [(set_attr "type"    "arith")
18154 +  [(set_attr "type"    "dspalu")
18155     (set_attr "mode"    "SI")])
18156  
18157  (define_insn "mips_precr_sra_r_ph_w"
18158 @@ -307,7 +307,7 @@
18159      operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
18160    return "precr_sra_r.ph.w\t%0,%z2,%3";
18161  }
18162 -  [(set_attr "type"    "arith")
18163 +  [(set_attr "type"    "dspalu")
18164     (set_attr "mode"    "SI")])
18165  
18166  (define_insn "mips_prepend"
18167 @@ -322,7 +322,7 @@
18168      operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
18169    return "prepend\t%0,%z2,%3";
18170  }
18171 -  [(set_attr "type"    "arith")
18172 +  [(set_attr "type"    "dspalu")
18173     (set_attr "mode"    "SI")])
18174  
18175  (define_insn "mips_shra_qb"
18176 @@ -340,7 +340,7 @@
18177      }
18178    return "shrav.qb\t%0,%z1,%2";
18179  }
18180 -  [(set_attr "type"    "shift")
18181 +  [(set_attr "type"    "dspalu")
18182     (set_attr "mode"    "SI")])
18183  
18184  
18185 @@ -359,7 +359,7 @@
18186      }
18187    return "shrav_r.qb\t%0,%z1,%2";
18188  }
18189 -  [(set_attr "type"    "shift")
18190 +  [(set_attr "type"    "dspalu")
18191     (set_attr "mode"    "SI")])
18192  
18193  (define_insn "mips_shrl_ph"
18194 @@ -377,7 +377,7 @@
18195      }
18196    return "shrlv.ph\t%0,%z1,%2";
18197  }
18198 -  [(set_attr "type"    "shift")
18199 +  [(set_attr "type"    "dspalu")
18200     (set_attr "mode"    "SI")])
18201  
18202  (define_insn "mips_subu_ph"
18203 @@ -390,7 +390,7 @@
18204           (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_PH))])]
18205    "ISA_HAS_DSPR2"
18206    "subu.ph\t%0,%z1,%z2"
18207 -  [(set_attr "type"    "arith")
18208 +  [(set_attr "type"    "dspalu")
18209     (set_attr "mode"    "SI")])
18210  
18211  (define_insn "mips_subu_s_ph"
18212 @@ -403,7 +403,7 @@
18213           (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_S_PH))])]
18214    "ISA_HAS_DSPR2"
18215    "subu_s.ph\t%0,%z1,%z2"
18216 -  [(set_attr "type"    "arith")
18217 +  [(set_attr "type"    "dspalusat")
18218     (set_attr "mode"    "SI")])
18219  
18220  (define_insn "mips_subuh_qb"
18221 @@ -413,7 +413,7 @@
18222                      UNSPEC_SUBUH_QB))]
18223    "ISA_HAS_DSPR2"
18224    "subuh.qb\t%0,%z1,%z2"
18225 -  [(set_attr "type"    "arith")
18226 +  [(set_attr "type"    "dspalu")
18227     (set_attr "mode"    "SI")])
18228  
18229  (define_insn "mips_subuh_r_qb"
18230 @@ -423,7 +423,7 @@
18231                      UNSPEC_SUBUH_R_QB))]
18232    "ISA_HAS_DSPR2"
18233    "subuh_r.qb\t%0,%z1,%z2"
18234 -  [(set_attr "type"    "arith")
18235 +  [(set_attr "type"    "dspalu")
18236     (set_attr "mode"    "SI")])
18237  
18238  (define_insn "mips_addqh_ph"
18239 @@ -433,7 +433,7 @@
18240                      UNSPEC_ADDQH_PH))]
18241    "ISA_HAS_DSPR2"
18242    "addqh.ph\t%0,%z1,%z2"
18243 -  [(set_attr "type"    "arith")
18244 +  [(set_attr "type"    "dspalu")
18245     (set_attr "mode"    "SI")])
18246  
18247  (define_insn "mips_addqh_r_ph"
18248 @@ -443,7 +443,7 @@
18249                      UNSPEC_ADDQH_R_PH))]
18250    "ISA_HAS_DSPR2"
18251    "addqh_r.ph\t%0,%z1,%z2"
18252 -  [(set_attr "type"    "arith")
18253 +  [(set_attr "type"    "dspalu")
18254     (set_attr "mode"    "SI")])
18255  
18256  (define_insn "mips_addqh_w"
18257 @@ -453,7 +453,7 @@
18258                    UNSPEC_ADDQH_W))]
18259    "ISA_HAS_DSPR2"
18260    "addqh.w\t%0,%z1,%z2"
18261 -  [(set_attr "type"    "arith")
18262 +  [(set_attr "type"    "dspalu")
18263     (set_attr "mode"    "SI")])
18264  
18265  (define_insn "mips_addqh_r_w"
18266 @@ -463,7 +463,7 @@
18267                    UNSPEC_ADDQH_R_W))]
18268    "ISA_HAS_DSPR2"
18269    "addqh_r.w\t%0,%z1,%z2"
18270 -  [(set_attr "type"    "arith")
18271 +  [(set_attr "type"    "dspalu")
18272     (set_attr "mode"    "SI")])
18273  
18274  (define_insn "mips_subqh_ph"
18275 @@ -473,7 +473,7 @@
18276                      UNSPEC_SUBQH_PH))]
18277    "ISA_HAS_DSPR2"
18278    "subqh.ph\t%0,%z1,%z2"
18279 -  [(set_attr "type"    "arith")
18280 +  [(set_attr "type"    "dspalu")
18281     (set_attr "mode"    "SI")])
18282  
18283  (define_insn "mips_subqh_r_ph"
18284 @@ -483,7 +483,7 @@
18285                      UNSPEC_SUBQH_R_PH))]
18286    "ISA_HAS_DSPR2"
18287    "subqh_r.ph\t%0,%z1,%z2"
18288 -  [(set_attr "type"    "arith")
18289 +  [(set_attr "type"    "dspalu")
18290     (set_attr "mode"    "SI")])
18291  
18292  (define_insn "mips_subqh_w"
18293 @@ -493,7 +493,7 @@
18294                    UNSPEC_SUBQH_W))]
18295    "ISA_HAS_DSPR2"
18296    "subqh.w\t%0,%z1,%z2"
18297 -  [(set_attr "type"    "arith")
18298 +  [(set_attr "type"    "dspalu")
18299     (set_attr "mode"    "SI")])
18300  
18301  (define_insn "mips_subqh_r_w"
18302 @@ -503,7 +503,7 @@
18303                    UNSPEC_SUBQH_R_W))]
18304    "ISA_HAS_DSPR2"
18305    "subqh_r.w\t%0,%z1,%z2"
18306 -  [(set_attr "type"    "arith")
18307 +  [(set_attr "type"    "dspalu")
18308     (set_attr "mode"    "SI")])
18309  
18310  (define_insn "mips_dpax_w_ph"
18311 @@ -514,7 +514,7 @@
18312                    UNSPEC_DPAX_W_PH))]
18313    "ISA_HAS_DSPR2 && !TARGET_64BIT"
18314    "dpax.w.ph\t%q0,%z2,%z3"
18315 -  [(set_attr "type"    "imadd")
18316 +  [(set_attr "type"    "dspmac")
18317     (set_attr "mode"    "SI")])
18318  
18319  (define_insn "mips_dpsx_w_ph"
18320 @@ -525,7 +525,7 @@
18321                    UNSPEC_DPSX_W_PH))]
18322    "ISA_HAS_DSPR2 && !TARGET_64BIT"
18323    "dpsx.w.ph\t%q0,%z2,%z3"
18324 -  [(set_attr "type"    "imadd")
18325 +  [(set_attr "type"    "dspmac")
18326     (set_attr "mode"    "SI")])
18327  
18328  (define_insn "mips_dpaqx_s_w_ph"
18329 @@ -540,7 +540,7 @@
18330                         UNSPEC_DPAQX_S_W_PH))])]
18331    "ISA_HAS_DSPR2 && !TARGET_64BIT"
18332    "dpaqx_s.w.ph\t%q0,%z2,%z3"
18333 -  [(set_attr "type"    "imadd")
18334 +  [(set_attr "type"    "dspmac")
18335     (set_attr "mode"    "SI")])
18336  
18337  (define_insn "mips_dpaqx_sa_w_ph"
18338 @@ -555,7 +555,7 @@
18339                         UNSPEC_DPAQX_SA_W_PH))])]
18340    "ISA_HAS_DSPR2 && !TARGET_64BIT"
18341    "dpaqx_sa.w.ph\t%q0,%z2,%z3"
18342 -  [(set_attr "type"    "imadd")
18343 +  [(set_attr "type"    "dspmacsat")
18344     (set_attr "mode"    "SI")])
18345  
18346  (define_insn "mips_dpsqx_s_w_ph"
18347 @@ -570,7 +570,7 @@
18348                         UNSPEC_DPSQX_S_W_PH))])]
18349    "ISA_HAS_DSPR2 && !TARGET_64BIT"
18350    "dpsqx_s.w.ph\t%q0,%z2,%z3"
18351 -  [(set_attr "type"    "imadd")
18352 +  [(set_attr "type"    "dspmac")
18353     (set_attr "mode"    "SI")])
18354  
18355  (define_insn "mips_dpsqx_sa_w_ph"
18356 @@ -585,5 +585,43 @@
18357                         UNSPEC_DPSQX_SA_W_PH))])]
18358    "ISA_HAS_DSPR2 && !TARGET_64BIT"
18359    "dpsqx_sa.w.ph\t%q0,%z2,%z3"
18360 -  [(set_attr "type"    "imadd")
18361 +  [(set_attr "type"    "dspmacsat")
18362 +   (set_attr "mode"    "SI")])
18363 +
18364 +;; Convert  mtlo $ac[1-3],$0  =>  mult $ac[1-3],$0,$0
18365 +;;          mthi $ac[1-3],$0
18366 +(define_peephole2
18367 +  [(set (match_operand:SI 0 "register_operand" "")
18368 +       (const_int 0))
18369 +   (set (match_operand:SI 1 "register_operand" "")
18370 +       (const_int 0))]
18371 +  "ISA_HAS_DSPR2
18372 +   && !TARGET_MIPS16
18373 +   && !TARGET_64BIT
18374 +   && (((true_regnum (operands[0]) == AC1LO_REGNUM
18375 +                    && true_regnum (operands[1]) == AC1HI_REGNUM)
18376 +       || (true_regnum (operands[0]) == AC1HI_REGNUM
18377 +                       && true_regnum (operands[1]) == AC1LO_REGNUM))
18378 +       || ((true_regnum (operands[0]) == AC2LO_REGNUM
18379 +                       && true_regnum (operands[1]) == AC2HI_REGNUM)
18380 +          || (true_regnum (operands[0]) == AC2HI_REGNUM
18381 +                       && true_regnum (operands[1]) == AC2LO_REGNUM))
18382 +       || ((true_regnum (operands[0]) == AC3LO_REGNUM
18383 +                    && true_regnum (operands[1]) == AC3HI_REGNUM)
18384 +          || (true_regnum (operands[0]) == AC3HI_REGNUM
18385 +                          && true_regnum (operands[1]) == AC3LO_REGNUM)))"
18386 +  [(parallel [(set (match_dup 0) (const_int 0))
18387 +             (set (match_dup 1) (const_int 0))])]
18388 +)
18389 +
18390 +(define_insn "*mips_acc_init"
18391 +  [(parallel [(set (match_operand:SI 0 "register_operand" "=a")
18392 +             (const_int 0))
18393 +             (set (match_operand:SI 1 "register_operand" "=a")
18394 +             (const_int 0))])]
18395 +  "ISA_HAS_DSPR2
18396 +   && !TARGET_MIPS16
18397 +   && !TARGET_64BIT"
18398 +  "mult\t%q0,$0,$0\t\t# Clear ACC HI/LO"
18399 +  [(set_attr "type"    "imul")
18400     (set_attr "mode"    "SI")])
18401 diff -Nur a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
18402 --- a/gcc/config/mips/mips.h    2009-02-20 16:20:38.000000000 +0100
18403 +++ b/gcc/config/mips/mips.h    2010-01-25 09:50:29.025687257 +0100
18404 @@ -342,6 +342,9 @@
18405  #define TARGET_IRIX       0
18406  #define TARGET_IRIX6      0
18407  
18408 +/* SDE specific stuff.  */
18409 +#define TARGET_MIPS_SDE    0
18410 +
18411  /* Define preprocessor macros for the -march and -mtune options.
18412     PREFIX is either _MIPS_ARCH or _MIPS_TUNE, INFO is the selected
18413     processor.  If INFO's canonical name is "foo", define PREFIX to
18414 @@ -708,8 +711,9 @@
18415         |march=r10000|march=r12000|march=r14000|march=r16000:-mips4} \
18416       %{march=mips32|march=4kc|march=4km|march=4kp|march=4ksc:-mips32} \
18417       %{march=mips32r2|march=m4k|march=4ke*|march=4ksd|march=24k* \
18418 -       |march=34k*|march=74k*: -mips32r2} \
18419 -     %{march=mips64|march=5k*|march=20k*|march=sb1*|march=sr71000: -mips64} \
18420 +       |march=34k*|march=74k*|march=1004k*: -mips32r2} \
18421 +     %{march=mips64|march=5k*|march=20k*|march=sb1*|march=sr71000 \
18422 +       |march=xlr: -mips64} \
18423       %{march=mips64r2|march=octeon: -mips64r2} \
18424       %{!march=*: -" MULTILIB_ISA_DEFAULT "}}"
18425  
18426 @@ -720,7 +724,8 @@
18427  #define MIPS_ARCH_FLOAT_SPEC \
18428    "%{mhard-float|msoft-float|march=mips*:; \
18429       march=vr41*|march=m4k|march=4k*|march=24kc|march=24kec \
18430 -     |march=34kc|march=74kc|march=5kc|march=octeon: -msoft-float; \
18431 +     |march=34kc|march=74kc|march=1004kc|march=5kc \
18432 +     |march=octeon|march=xlr: -msoft-float;              \
18433       march=*: -mhard-float}"
18434  
18435  /* A spec condition that matches 32-bit options.  It only works if
18436 @@ -731,8 +736,9 @@
18437  
18438  /* Support for a compile-time default CPU, et cetera.  The rules are:
18439     --with-arch is ignored if -march is specified or a -mips is specified
18440 -     (other than -mips16).
18441 -   --with-tune is ignored if -mtune is specified.
18442 +     (other than -mips16); likewise --with-arch-32 and --with-arch-64.
18443 +   --with-tune is ignored if -mtune is specified; likewise
18444 +     --with-tune-32 and --with-tune-64.
18445     --with-abi is ignored if -mabi is specified.
18446     --with-float is ignored if -mhard-float or -msoft-float are
18447       specified.
18448 @@ -740,7 +746,11 @@
18449       specified. */
18450  #define OPTION_DEFAULT_SPECS \
18451    {"arch", "%{" MIPS_ARCH_OPTION_SPEC ":;: -march=%(VALUE)}" }, \
18452 +  {"arch_32", "%{!mabi=*|mabi=32:%{" MIPS_ARCH_OPTION_SPEC ":;: -march=%(VALUE)}}" }, \
18453 +  {"arch_64", "%{mabi=n32|mabi=64:%{" MIPS_ARCH_OPTION_SPEC ":;: -march=%(VALUE)}}" }, \
18454    {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \
18455 +  {"tune_32", "%{!mabi=*|mabi=32:%{!mtune=*:-mtune=%(VALUE)}}" }, \
18456 +  {"tune_64", "%{mabi=n32|mabi=64:%{!mtune=*:-mtune=%(VALUE)}}" }, \
18457    {"abi", "%{!mabi=*:-mabi=%(VALUE)}" }, \
18458    {"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" }, \
18459    {"divide", "%{!mdivide-traps:%{!mdivide-breaks:-mdivide-%(VALUE)}}" }, \
18460 @@ -750,7 +760,7 @@
18461  
18462  /* A spec that infers the -mdsp setting from an -march argument.  */
18463  #define BASE_DRIVER_SELF_SPECS \
18464 -  "%{!mno-dsp:%{march=24ke*|march=34k*|march=74k*: -mdsp}}"
18465 +  "%{!mno-dsp:%{march=24ke*|march=34k*|march=74k*|march=1004k*: -mdsp}}"
18466  
18467  #define DRIVER_SELF_SPECS BASE_DRIVER_SELF_SPECS
18468  
18469 @@ -1038,6 +1048,11 @@
18470  /* ISA includes the bbit* instructions.  */
18471  #define ISA_HAS_BBIT           (TARGET_OCTEON && !TARGET_MIPS16)
18472  
18473 +/* ISA has single-instruction unaligned load/store support.  */
18474 +#define ISA_HAS_UL_US          (TARGET_OCTEON \
18475 +                                && TARGET_OCTEON_UNALIGNED \
18476 +                                && !TARGET_MIPS16)
18477
18478  /* ISA includes the cins instruction.  */
18479  #define ISA_HAS_CINS           (TARGET_OCTEON && !TARGET_MIPS16)
18480  
18481 @@ -1055,6 +1070,7 @@
18482  
18483  /* The CACHE instruction is available.  */
18484  #define ISA_HAS_CACHE (TARGET_CACHE_BUILTIN && !TARGET_MIPS16)
18485
18486  \f
18487  /* Add -G xx support.  */
18488  
18489 @@ -1152,6 +1168,7 @@
18490  %{mshared} %{mno-shared} \
18491  %{msym32} %{mno-sym32} \
18492  %{mtune=*} %{v} \
18493 +%{mocteon-useun} %{mno-octeon-useun} \
18494  %(subtarget_asm_spec)"
18495  
18496  /* Extra switches sometimes passed to the linker.  */
18497 @@ -1622,6 +1639,9 @@
18498  #define GP_REG_LAST  31
18499  #define GP_REG_NUM   (GP_REG_LAST - GP_REG_FIRST + 1)
18500  #define GP_DBX_FIRST 0
18501 +#define K0_REG_NUM   (GP_REG_FIRST + 26)
18502 +#define K1_REG_NUM   (GP_REG_FIRST + 27)
18503 +#define KERNEL_REG_P(REGNO)    (IN_RANGE (REGNO, K0_REG_NUM, K1_REG_NUM))
18504  
18505  #define FP_REG_FIRST 32
18506  #define FP_REG_LAST  63
18507 @@ -1649,6 +1669,10 @@
18508  #define COP0_REG_LAST 111
18509  #define COP0_REG_NUM (COP0_REG_LAST - COP0_REG_FIRST + 1)
18510  
18511 +#define COP0_STATUS_REG_NUM    (COP0_REG_FIRST + 12)
18512 +#define COP0_CAUSE_REG_NUM     (COP0_REG_FIRST + 13)
18513 +#define COP0_EPC_REG_NUM       (COP0_REG_FIRST + 14)
18514 +
18515  #define COP2_REG_FIRST 112
18516  #define COP2_REG_LAST 143
18517  #define COP2_REG_NUM (COP2_REG_LAST - COP2_REG_FIRST + 1)
18518 @@ -1666,6 +1690,29 @@
18519  #define AT_REGNUM      (GP_REG_FIRST + 1)
18520  #define HI_REGNUM      (TARGET_BIG_ENDIAN ? MD_REG_FIRST : MD_REG_FIRST + 1)
18521  #define LO_REGNUM      (TARGET_BIG_ENDIAN ? MD_REG_FIRST + 1 : MD_REG_FIRST)
18522 +#define AC1HI_REGNUM   (TARGET_BIG_ENDIAN \
18523 +                        ? DSP_ACC_REG_FIRST : DSP_ACC_REG_FIRST + 1)
18524 +#define AC1LO_REGNUM   (TARGET_BIG_ENDIAN \
18525 +                        ? DSP_ACC_REG_FIRST + 1 : DSP_ACC_REG_FIRST)
18526 +#define AC2HI_REGNUM   (TARGET_BIG_ENDIAN \
18527 +                        ? DSP_ACC_REG_FIRST + 2 : DSP_ACC_REG_FIRST + 3)
18528 +#define AC2LO_REGNUM   (TARGET_BIG_ENDIAN \
18529 +                        ? DSP_ACC_REG_FIRST + 3 : DSP_ACC_REG_FIRST + 2)
18530 +#define AC3HI_REGNUM   (TARGET_BIG_ENDIAN \
18531 +                        ? DSP_ACC_REG_FIRST + 4 : DSP_ACC_REG_FIRST + 5)
18532 +#define AC3LO_REGNUM   (TARGET_BIG_ENDIAN \
18533 +                        ? DSP_ACC_REG_FIRST + 5 : DSP_ACC_REG_FIRST + 4)
18534 +
18535 +/* A few bitfield locations for the coprocessor registers.  */
18536 +/* Request Interrupt Priority Level is from bit 10 to bit 15 of
18537 +   the cause register for the EIC interrupt mode.  */
18538 +#define CAUSE_IPL      10
18539 +/* Interrupt Priority Level is from bit 10 to bit 15 of the status register.  */
18540 +#define SR_IPL         10
18541 +/* Exception Level is at bit 1 of the status register.  */
18542 +#define SR_EXL         1
18543 +/* Interrupt Enable is at bit 0 of the status register.  */
18544 +#define SR_IE          0
18545  
18546  /* FPSW_REGNUM is the single condition code used if !ISA_HAS_8CC.
18547     If ISA_HAS_8CC, it should not be used, and an arbitrary ST_REG
18548 @@ -1754,11 +1801,18 @@
18549     incoming arguments, the static chain pointer, or the frame pointer.
18550     The epilogue temporary mustn't conflict with the return registers,
18551     the PIC call register ($25), the frame pointer, the EH stack adjustment,
18552 -   or the EH data registers.  */
18553 +   or the EH data registers.
18554 +
18555 +   If we're generating interrupt handlers, we use K0 as a temporary register
18556 +   in prologue/epilogue code.  */
18557  
18558  #define MIPS16_PIC_TEMP_REGNUM (GP_REG_FIRST + 2)
18559 -#define MIPS_PROLOGUE_TEMP_REGNUM (GP_REG_FIRST + 3)
18560 -#define MIPS_EPILOGUE_TEMP_REGNUM (GP_REG_FIRST + (TARGET_MIPS16 ? 6 : 8))
18561 +#define MIPS_PROLOGUE_TEMP_REGNUM \
18562 +  (cfun->machine->interrupt_handler_p ? K0_REG_NUM : GP_REG_FIRST + 3)
18563 +#define MIPS_EPILOGUE_TEMP_REGNUM              \
18564 +  (cfun->machine->interrupt_handler_p          \
18565 +   ? K0_REG_NUM                                        \
18566 +   : GP_REG_FIRST + (TARGET_MIPS16 ? 6 : 8))
18567  
18568  #define MIPS16_PIC_TEMP gen_rtx_REG (Pmode, MIPS16_PIC_TEMP_REGNUM)
18569  #define MIPS_PROLOGUE_TEMP(MODE) gen_rtx_REG (MODE, MIPS_PROLOGUE_TEMP_REGNUM)
18570 @@ -2284,14 +2338,7 @@
18571         (mips_abi == ABI_EABI && UNITS_PER_FPVALUE >= UNITS_PER_DOUBLE)
18572  
18573  \f
18574 -/* Say that the epilogue uses the return address register.  Note that
18575 -   in the case of sibcalls, the values "used by the epilogue" are
18576 -   considered live at the start of the called function.
18577 -
18578 -   If using a GOT, say that the epilogue also uses GOT_VERSION_REGNUM.
18579 -   See the comment above load_call<mode> for details.  */
18580 -#define EPILOGUE_USES(REGNO) \
18581 -  ((REGNO) == 31 || (TARGET_USE_GOT && (REGNO) == GOT_VERSION_REGNUM))
18582 +#define EPILOGUE_USES(REGNO)   mips_epilogue_uses (REGNO)
18583  
18584  /* Treat LOC as a byte offset from the stack pointer and round it up
18585     to the next fully-aligned offset.  */
18586 diff -Nur a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
18587 --- a/gcc/config/mips/mips.md   2009-02-20 16:20:38.000000000 +0100
18588 +++ b/gcc/config/mips/mips.md   2010-01-25 09:50:29.035686224 +0100
18589 @@ -67,7 +67,16 @@
18590     (UNSPEC_SET_GOT_VERSION     46)
18591     (UNSPEC_UPDATE_GOT_VERSION  47)
18592     (UNSPEC_COPYGP              48)
18593 +   (UNSPEC_ERET                        49)
18594 +   (UNSPEC_DERET               50)
18595 +   (UNSPEC_DI                  51)
18596 +   (UNSPEC_EHB                 52)
18597 +   (UNSPEC_RDPGPR              53)
18598 +   (UNSPEC_COP0                        54)
18599     
18600 +   (UNSPEC_UNALIGNED_LOAD      60)
18601 +   (UNSPEC_UNALIGNED_STORE     61)
18602 +
18603     (UNSPEC_ADDRESS_FIRST       100)
18604  
18605     (TLS_GET_TP_REGNUM          3)
18606 @@ -372,6 +381,12 @@
18607  ;; frsqrt       floating point reciprocal square root
18608  ;; frsqrt1      floating point reciprocal square root step1
18609  ;; frsqrt2      floating point reciprocal square root step2
18610 +;; dspmac       DSP MAC instructions not saturating the accumulator
18611 +;; dspmacsat    DSP MAC instructions that saturate the accumulator
18612 +;; accext       DSP accumulator extract instructions
18613 +;; accmod       DSP accumulator modify instructions
18614 +;; dspalu       DSP ALU instructions not saturating the result
18615 +;; dspalusat    DSP ALU instructions that saturate the result
18616  ;; multi       multiword sequence (or user asm statements)
18617  ;; nop         no operation
18618  ;; ghost       an instruction that produces no real code
18619 @@ -380,7 +395,7 @@
18620     prefetch,prefetchx,condmove,mtc,mfc,mthilo,mfhilo,const,arith,logical,
18621     shift,slt,signext,clz,pop,trap,imul,imul3,imul3nc,imadd,idiv,idiv3,move,
18622     fmove,fadd,fmul,fmadd,fdiv,frdiv,frdiv1,frdiv2,fabs,fneg,fcmp,fcvt,fsqrt,
18623 -   frsqrt,frsqrt1,frsqrt2,multi,nop,ghost"
18624 +   frsqrt,frsqrt1,frsqrt2,dspmac,dspmacsat,accext,accmod,dspalu,dspalusat,multi,nop,ghost"
18625    (cond [(eq_attr "jal" "!unset") (const_string "call")
18626          (eq_attr "got" "load") (const_string "load")
18627  
18628 @@ -3565,7 +3580,9 @@
18629         (unspec:GPR [(match_operand:BLK 1 "memory_operand" "m")
18630                      (match_operand:QI 2 "memory_operand" "m")]
18631                     UNSPEC_LOAD_LEFT))]
18632 -  "!TARGET_MIPS16 && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
18633 +  "!TARGET_MIPS16
18634 +   && !ISA_HAS_UL_US
18635 +   && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
18636    "<load>l\t%0,%2"
18637    [(set_attr "move_type" "load")
18638     (set_attr "mode" "<MODE>")])
18639 @@ -3576,7 +3593,9 @@
18640                      (match_operand:QI 2 "memory_operand" "m")
18641                      (match_operand:GPR 3 "register_operand" "0")]
18642                     UNSPEC_LOAD_RIGHT))]
18643 -  "!TARGET_MIPS16 && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
18644 +  "!TARGET_MIPS16
18645 +   && !ISA_HAS_UL_US
18646 +   && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
18647    "<load>r\t%0,%2"
18648    [(set_attr "move_type" "load")
18649     (set_attr "mode" "<MODE>")])
18650 @@ -3586,7 +3605,9 @@
18651         (unspec:BLK [(match_operand:GPR 1 "reg_or_0_operand" "dJ")
18652                      (match_operand:QI 2 "memory_operand" "m")]
18653                     UNSPEC_STORE_LEFT))]
18654 -  "!TARGET_MIPS16 && mips_mem_fits_mode_p (<MODE>mode, operands[0])"
18655 +  "!TARGET_MIPS16
18656 +   && !ISA_HAS_UL_US
18657 +   && mips_mem_fits_mode_p (<MODE>mode, operands[0])"
18658    "<store>l\t%z1,%2"
18659    [(set_attr "move_type" "store")
18660     (set_attr "mode" "<MODE>")])
18661 @@ -3602,6 +3623,28 @@
18662    [(set_attr "move_type" "store")
18663     (set_attr "mode" "<MODE>")])
18664  
18665 +;; Unaligned load and store patterns.
18666 +
18667 +(define_insn "mov_u<load>"
18668 +  [(set (match_operand:GPR 0 "register_operand" "=d")
18669 +       (unspec:GPR [(match_operand:BLK 1 "memory_operand" "m")
18670 +                    (match_operand:QI 2 "memory_operand" "m")]
18671 +                   UNSPEC_UNALIGNED_LOAD))]
18672 +  "ISA_HAS_UL_US && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
18673 +  "u<load>\t%0,%2"
18674 +  [(set_attr "type" "load")
18675 +   (set_attr "mode" "<MODE>")])
18676 +
18677 +(define_insn "mov_u<store>"
18678 +  [(set (match_operand:BLK 0 "memory_operand" "=m")
18679 +       (unspec:BLK [(match_operand:GPR 1 "reg_or_0_operand" "dJ")
18680 +                    (match_operand:QI 2 "memory_operand" "m")]
18681 +                   UNSPEC_UNALIGNED_STORE))]
18682 +  "ISA_HAS_UL_US && mips_mem_fits_mode_p (<MODE>mode, operands[0])"
18683 +  "u<store>\t%z1,%2"
18684 +  [(set_attr "type" "store")
18685 +   (set_attr "mode" "<MODE>")])
18686 +
18687  ;; An instruction to calculate the high part of a 64-bit SYMBOL_ABSOLUTE.
18688  ;; The required value is:
18689  ;;
18690 @@ -5472,6 +5515,26 @@
18691         return "%*b\t%l0%/";
18692        else
18693         {
18694 +         if (final_sequence && (mips_abi == ABI_32 || mips_abi == ABI_O64))
18695 +           {
18696 +              /* If the delay slot contains a $gp restore, we need to
18697 +                 do that first, because we need it for the load
18698 +                label.  Other ABIs do not have caller-save $gp.  */
18699 +             rtx next = NEXT_INSN (insn);
18700 +             if (INSN_P (next) && !INSN_DELETED_P (next))
18701 +               {
18702 +                 rtx pat = PATTERN (next);
18703 +                 if (GET_CODE (pat) == SET
18704 +                     && REG_P (SET_DEST (pat))
18705 +                     && REGNO (SET_DEST (pat)) == PIC_OFFSET_TABLE_REGNUM)
18706 +                   {
18707 +                     rtx ops[2];
18708 +                     ops[0] = SET_DEST (pat);
18709 +                     ops[1] = SET_SRC (pat);
18710 +                     output_asm_insn (mips_output_move (ops[0], ops[1]), ops);
18711 +                   }
18712 +               }
18713 +           }
18714           output_asm_insn (mips_output_load_label (), operands);
18715           return "%*jr\t%@%/%]";
18716         }
18717 @@ -5490,7 +5553,13 @@
18718               (lt (abs (minus (match_dup 0)
18719                               (plus (pc) (const_int 4))))
18720                   (const_int 131072)))
18721 -        (const_int 4) (const_int 16)))])
18722 +        (const_int 4)
18723 +         (if_then_else
18724 +           ;; for these two ABIs we may need to move a restore of $gp
18725 +           (ior (eq (symbol_ref "mips_abi") (symbol_ref "ABI_32"))
18726 +                (eq (symbol_ref "mips_abi") (symbol_ref "ABI_O64")))
18727 +           (const_int 20)
18728 +           (const_int 16))))])
18729  
18730  ;; We need a different insn for the mips16, because a mips16 branch
18731  ;; does not have a delay slot.
18732 @@ -5679,6 +5748,60 @@
18733    [(set_attr "type"    "jump")
18734     (set_attr "mode"    "none")])
18735  
18736 +;; Exception return.
18737 +(define_insn "mips_eret"
18738 +  [(return)
18739 +   (unspec_volatile [(const_int 0)] UNSPEC_ERET)]
18740 +  ""
18741 +  "eret"
18742 +  [(set_attr "type"    "trap")
18743 +   (set_attr "mode"    "none")])
18744 +
18745 +;; Debug exception return.
18746 +(define_insn "mips_deret"
18747 +  [(return)
18748 +   (unspec_volatile [(const_int 0)] UNSPEC_DERET)]
18749 +  ""
18750 +  "deret"
18751 +  [(set_attr "type"    "trap")
18752 +   (set_attr "mode"    "none")])
18753 +
18754 +;; Disable interrupts.
18755 +(define_insn "mips_di"
18756 +  [(unspec_volatile [(const_int 0)] UNSPEC_DI)]
18757 +  ""
18758 +  "di"
18759 +  [(set_attr "type"    "trap")
18760 +   (set_attr "mode"    "none")])
18761 +
18762 +;; Execution hazard barrier.
18763 +(define_insn "mips_ehb"
18764 +  [(unspec_volatile [(const_int 0)] UNSPEC_EHB)]
18765 +  ""
18766 +  "ehb"
18767 +  [(set_attr "type"    "trap")
18768 +   (set_attr "mode"    "none")])
18769 +
18770 +;; Read GPR from previous shadow register set.
18771 +(define_insn "mips_rdpgpr"
18772 +  [(set (match_operand:SI 0 "register_operand" "=d")
18773 +       (unspec_volatile:SI [(match_operand:SI 1 "register_operand" "d")]
18774 +                           UNSPEC_RDPGPR))]
18775 +  ""
18776 +  "rdpgpr\t%0,%1"
18777 +  [(set_attr "type"    "move")
18778 +   (set_attr "mode"    "SI")])
18779 +
18780 +;; Move involving COP0 registers.
18781 +(define_insn "cop0_move"
18782 +  [(set (match_operand:SI 0 "register_operand" "=B,d")
18783 +       (unspec_volatile:SI [(match_operand:SI 1 "register_operand" "d,B")]
18784 +                           UNSPEC_COP0))]
18785 +  ""
18786 +{ return mips_output_move (operands[0], operands[1]); }
18787 +  [(set_attr "type"    "mtc,mfc")
18788 +   (set_attr "mode"    "SI")])
18789 +
18790  ;; This is used in compiling the unwind routines.
18791  (define_expand "eh_return"
18792    [(use (match_operand 0 "general_operand"))]
18793 diff -Nur a/gcc/config/mips/mips.opt b/gcc/config/mips/mips.opt
18794 --- a/gcc/config/mips/mips.opt  2009-02-20 16:20:38.000000000 +0100
18795 +++ b/gcc/config/mips/mips.opt  2010-01-25 09:50:29.035686224 +0100
18796 @@ -184,6 +184,10 @@
18797  Target Report RejectNegative Mask(MIPS16)
18798  Generate MIPS16 code
18799  
18800 +mips16e
18801 +Target Report RejectNegative Mask(MIPS16) MaskExists
18802 +Deprecated; alias for -mips16
18803 +
18804  mips3d
18805  Target Report RejectNegative Mask(MIPS3D)
18806  Use MIPS-3D instructions
18807 @@ -236,6 +240,10 @@
18808  Target Report RejectNegative InverseMask(MIPS3D)
18809  Do not use MIPS-3D instructions
18810  
18811 +mocteon-useun
18812 +Target Report Mask(OCTEON_UNALIGNED)
18813 +Use Octeon-specific unaligned loads/stores for 32/64-bit data
18814 +
18815  mpaired-single
18816  Target Report Mask(PAIRED_SINGLE_FLOAT)
18817  Use paired-single floating-point instructions
18818 diff -Nur a/gcc/config/mips/mips-protos.h b/gcc/config/mips/mips-protos.h
18819 --- a/gcc/config/mips/mips-protos.h     2009-02-20 16:20:38.000000000 +0100
18820 +++ b/gcc/config/mips/mips-protos.h     2010-01-25 09:50:29.035686224 +0100
18821 @@ -261,6 +261,8 @@
18822  extern void mips_output_external (FILE *, tree, const char *);
18823  extern void mips_output_filename (FILE *, const char *);
18824  extern void mips_output_ascii (FILE *, const char *, size_t);
18825 +extern void octeon_output_shared_variable (FILE *, tree, const char *,
18826 +                                          unsigned HOST_WIDE_INT, int);
18827  extern void mips_output_aligned_decl_common (FILE *, tree, const char *,
18828                                              unsigned HOST_WIDE_INT,
18829                                              unsigned int);
18830 @@ -307,6 +309,8 @@
18831  extern bool mips_linked_madd_p (rtx, rtx);
18832  extern bool mips_store_data_bypass_p (rtx, rtx);
18833  extern rtx mips_prefetch_cookie (rtx, rtx);
18834 +extern int mips_mult_madd_chain_bypass_p (rtx, rtx);
18835 +extern int mips_dspalu_bypass_p (rtx, rtx);
18836  
18837  extern void irix_asm_output_align (FILE *, unsigned);
18838  extern const char *current_section_name (void);
18839 @@ -332,4 +336,6 @@
18840  
18841  extern void mips_expand_vector_init (rtx, rtx);
18842  
18843 +extern bool mips_epilogue_uses (unsigned int);
18844 +
18845  #endif /* ! GCC_MIPS_PROTOS_H */
18846 diff -Nur a/gcc/config/mips/montavista-linux.h b/gcc/config/mips/montavista-linux.h
18847 --- a/gcc/config/mips/montavista-linux.h        1970-01-01 01:00:00.000000000 +0100
18848 +++ b/gcc/config/mips/montavista-linux.h        2010-01-25 09:50:29.035686224 +0100
18849 @@ -0,0 +1,54 @@
18850 +/* MontaVista GNU/Linux Configuration.
18851 +   Copyright (C) 2009
18852 +   Free Software Foundation, Inc.
18853 +
18854 +This file is part of GCC.
18855 +
18856 +GCC is free software; you can redistribute it and/or modify
18857 +it under the terms of the GNU General Public License as published by
18858 +the Free Software Foundation; either version 3, or (at your option)
18859 +any later version.
18860 +
18861 +GCC is distributed in the hope that it will be useful,
18862 +but WITHOUT ANY WARRANTY; without even the implied warranty of
18863 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18864 +GNU General Public License for more details.
18865 +
18866 +You should have received a copy of the GNU General Public License
18867 +along with GCC; see the file COPYING3.  If not see
18868 +<http://www.gnu.org/licenses/>.  */
18869 +
18870 +/* Override linux64.h to default to O32.  */
18871 +#undef SUBTARGET_SELF_SPECS
18872 +#define SUBTARGET_SELF_SPECS \
18873 +NO_SHARED_SPECS, \
18874 +"%{!EB:%{!EL:%(endian_spec)}}", \
18875 +"%{!mabi=*: -mabi=32}"
18876 +
18877 +/* We do not need to provide an explicit big-endian multilib.  */
18878 +#undef MULTILIB_DEFAULTS
18879 +#define MULTILIB_DEFAULTS \
18880 +  { "meb", "mabi=32" }
18881 +
18882 +/* The various C libraries each have their own subdirectory.  */
18883 +#undef SYSROOT_SUFFIX_SPEC
18884 +#define SYSROOT_SUFFIX_SPEC                    \
18885 +  "%{mel:%{msoft-float:/mel/soft-float ;       \
18886 +           :/mel} ;                            \
18887 +     msoft-float:/soft-float}"
18888 +
18889 +/* MULTILIB_OSDIRNAMES provides directory names used in two ways:
18890 +   relative to $target/lib/ in the GCC installation, and relative to
18891 +   lib/ and usr/lib/ in a sysroot.  For the latter, we want names such
18892 +   as plain ../lib64, but these cannot be used outside the sysroot
18893 +   because different multilibs would be mapped to the same directory.
18894 +   Directories are searched both with and without the multilib suffix,
18895 +   so it suffices if the directory without the suffix is correct
18896 +   within the sysroot while the directory with the suffix doesn't
18897 +   exist.  We use STARTFILE_PREFIX_SPEC to achieve the desired
18898 +   effect.  */
18899 +#undef STARTFILE_PREFIX_SPEC
18900 +#define STARTFILE_PREFIX_SPEC                          \
18901 +  "%{mabi=32: /usr/local/lib/ /lib/ /usr/lib/}                 \
18902 +   %{mabi=n32: /usr/local/lib32/ /lib32/ /usr/lib32/}  \
18903 +   %{mabi=64: /usr/local/lib64/ /lib64/ /usr/lib64/}"
18904 diff -Nur a/gcc/config/mips/octeon-elf.h b/gcc/config/mips/octeon-elf.h
18905 --- a/gcc/config/mips/octeon-elf.h      1970-01-01 01:00:00.000000000 +0100
18906 +++ b/gcc/config/mips/octeon-elf.h      2010-01-25 09:50:29.035686224 +0100
18907 @@ -0,0 +1,98 @@
18908 +/* Macros for mips*-octeon-elf target.
18909 +   Copyright (C) 2004, 2005, 2006 Cavium Networks.
18910 +
18911 +This file is part of GCC.
18912 +
18913 +GCC is free software; you can redistribute it and/or modify
18914 +it under the terms of the GNU General Public License as published by
18915 +the Free Software Foundation; either version 2, or (at your option)
18916 +any later version.
18917 +
18918 +GCC is distributed in the hope that it will be useful,
18919 +but WITHOUT ANY WARRANTY; without even the implied warranty of
18920 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18921 +GNU General Public License for more details.
18922 +
18923 +You should have received a copy of the GNU General Public License
18924 +along with GCC; see the file COPYING.  If not, write to
18925 +the Free Software Foundation, 51 Franklin Street, Fifth Floor,
18926 +Boston, MA 02110-1301, USA.  */
18927 +
18928 +/* Add MASK_SOFT_FLOAT and MASK_OCTEON_UNALIGNED.  */
18929 +
18930 +#undef TARGET_DEFAULT
18931 +#define TARGET_DEFAULT (MASK_SOFT_FLOAT_ABI | MASK_OCTEON_UNALIGNED)
18932 +
18933 +/* Forward -m*octeon-useun.  */
18934 +
18935 +#undef SUBTARGET_ASM_SPEC
18936 +#define SUBTARGET_ASM_SPEC "%{mno-octeon-useun} %{!mno-octeon-useun:-mocteon-useun}"
18937 +
18938 +/* Enable backtrace including on machine exceptions by default.  */
18939 +
18940 +#undef SUBTARGET_CC1_SPEC
18941 +#define SUBTARGET_CC1_SPEC "%{!fno-asynchronous-unwind-tables:-fasynchronous-unwind-tables}"
18942 +
18943 +/* Without ASM_PREFERRED_EH_DATA_FORMAT, output_call_frame_info emits
18944 +   pointer-sized addresses for FDE addresses.  For 64-bit targets, it does
18945 +   it without properly "switching over" to 64-bit as described in the DWARF3
18946 +   spec. GDB can fall back on .eh_frames and misinterpret FDE addresses.
18947 +   Instead let's be explicit and use augmentation to describe the encoding if
18948 +   pointer size is 64.  */
18949 +
18950 +#undef ASM_PREFERRED_EH_DATA_FORMAT
18951 +#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
18952 +  ((CODE) == 1 && POINTER_SIZE == 64                                    \
18953 +   ? (ABI_HAS_64BIT_SYMBOLS ? DW_EH_PE_udata8 : DW_EH_PE_udata4)        \
18954 +   : DW_EH_PE_absptr)
18955 +
18956 +/* Link to libc library.  */
18957 +
18958 +#undef LIB_SPEC
18959 +#define LIB_SPEC "-lc"
18960 +
18961 +/* Link to startup file.  */
18962 +
18963 +#undef STARTFILE_SPEC
18964 +#define STARTFILE_SPEC "crti%O%s crtbegin%O%s crt0%O%s"
18965 +
18966 +/* Default our test-only n64 configuration to -G0 since that is what
18967 +   the kernel uses.  */
18968 +
18969 +#undef SUBTARGET_SELF_SPECS
18970 +#define SUBTARGET_SELF_SPECS \
18971 +"%{mabi=64:%{!G*: -G0}}"
18972 +
18973 +/* Pass linker emulation mode for N32.  */
18974 +
18975 +#undef LINK_SPEC
18976 +#define LINK_SPEC "\
18977 +%(endian_spec) \
18978 +%{G*} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips32r2} %{mips64} \
18979 +%{mips64r2} %{bestGnum} %{shared} %{non_shared} \
18980 +%{mabi=n32:-melf32e%{!EL:b}%{EL:l}octeonn32} \
18981 +%{mabi=64:-melf64e%{!EL:b}%{EL:l}octeon}"
18982 +
18983 +/* Override because of N32.  */
18984 +
18985 +#undef LOCAL_LABEL_PREFIX
18986 +#define LOCAL_LABEL_PREFIX ((mips_abi == ABI_N32) ? "." : "$")
18987 +
18988 +/* Append the core number to the GCOV filename FN.  */
18989 +
18990 +#define GCOV_TARGET_SUFFIX_LENGTH 2
18991 +#define ADD_GCOV_TARGET_SUFFIX(FN)             \
18992 +do                                             \
18993 +  {                                            \
18994 +    char *fn = FN;                             \
18995 +    int core;                                  \
18996 +    char s[3];                                 \
18997 +                                               \
18998 +    asm ("rdhwr %0, $0" : "=r"(core));         \
18999 +    sprintf (s, "%d", core);                   \
19000 +    strcat (fn, s);                            \
19001 +  }                                            \
19002 +while (0)
19003 +
19004 +/* Code to unwind through the exception frame.  */
19005 +#define MD_UNWIND_SUPPORT "config/mips/octeon-elf-unwind.h"
19006 diff -Nur a/gcc/config/mips/octeon-elf-unwind.h b/gcc/config/mips/octeon-elf-unwind.h
19007 --- a/gcc/config/mips/octeon-elf-unwind.h       1970-01-01 01:00:00.000000000 +0100
19008 +++ b/gcc/config/mips/octeon-elf-unwind.h       2010-01-25 09:50:29.035686224 +0100
19009 @@ -0,0 +1,57 @@
19010 +/* Stack unwinding support through the first exception frame.
19011 +   Copyright (C) 2007 Cavium Networks.
19012 +
19013 +This file is part of GCC.
19014 +
19015 +GCC is free software; you can redistribute it and/or modify
19016 +it under the terms of the GNU General Public License as published by
19017 +the Free Software Foundation; either version 2, or (at your option)
19018 +any later version.
19019 +
19020 +GCC is distributed in the hope that it will be useful,
19021 +but WITHOUT ANY WARRANTY; without even the implied warranty of
19022 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19023 +GNU General Public License for more details.
19024 +
19025 +You should have received a copy of the GNU General Public License
19026 +along with GCC; see the file COPYING.  If not, write to
19027 +the Free Software Foundation, 51 Franklin Street, Fifth Floor,
19028 +Boston, MA 02110-1301, USA.  */
19029 +
19030 +#define MD_FALLBACK_FRAME_STATE_FOR octeon_elf_fallback_frame_state
19031 +
19032 +/* Check whether this is the cvmx_interrupt_stage2 frame.  If the
19033 +   function call was dispatched via k0 assume we are in
19034 +   cvmx_interrupt_stage2.  In this case the sp in point to the saved
19035 +   register array.  */
19036 +
19037 +static _Unwind_Reason_Code
19038 +octeon_elf_fallback_frame_state (struct _Unwind_Context *context,
19039 +                                _Unwind_FrameState *fs)
19040 +{
19041 +  unsigned i;
19042 +  unsigned *pc = context->ra;
19043 +
19044 +  /* Look for "jalr k0".  */
19045 +  if (pc[-2] != 0x0340f809)
19046 +    return _URC_END_OF_STACK;
19047 +  
19048 +  for (i = 0; i < 32; i++)
19049 +    {
19050 +      fs->regs.reg[i].how = REG_SAVED_OFFSET;
19051 +      fs->regs.reg[i].loc.offset = 8 * i;
19052 +    }
19053 +
19054 +  /* Keep the next frame's sp.  This way we have a CFA that points
19055 +     exactly to the register array.  */
19056 +  fs->regs.cfa_how = CFA_REG_OFFSET;
19057 +  fs->regs.cfa_reg = STACK_POINTER_REGNUM;
19058 +  fs->regs.cfa_offset = 0;
19059 +
19060 +  /* DEPC is saved as the 35. register.  */
19061 +  fs->regs.reg[DWARF_ALT_FRAME_RETURN_COLUMN].how = REG_SAVED_OFFSET;
19062 +  fs->regs.reg[DWARF_ALT_FRAME_RETURN_COLUMN].loc.offset = 8 * 35;
19063 +  fs->retaddr_column = DWARF_ALT_FRAME_RETURN_COLUMN;
19064 +
19065 +  return _URC_NO_REASON;
19066 +}
19067 diff -Nur a/gcc/config/mips/octeon.h b/gcc/config/mips/octeon.h
19068 --- a/gcc/config/mips/octeon.h  1970-01-01 01:00:00.000000000 +0100
19069 +++ b/gcc/config/mips/octeon.h  2010-01-25 09:50:29.035686224 +0100
19070 @@ -0,0 +1,68 @@
19071 +/* Macros for mips*-octeon-* target.
19072 +   Copyright (C) 2004, 2005, 2006 Cavium Networks.
19073 +
19074 +This file is part of GCC.
19075 +
19076 +GCC is free software; you can redistribute it and/or modify
19077 +it under the terms of the GNU General Public License as published by
19078 +the Free Software Foundation; either version 2, or (at your option)
19079 +any later version.
19080 +
19081 +GCC is distributed in the hope that it will be useful,
19082 +but WITHOUT ANY WARRANTY; without even the implied warranty of
19083 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19084 +GNU General Public License for more details.
19085 +
19086 +You should have received a copy of the GNU General Public License
19087 +along with GCC; see the file COPYING.  If not, write to
19088 +the Free Software Foundation, 51 Franklin Street, Fifth Floor,
19089 +Boston, MA 02110-1301, USA.  */
19090 +
19091 +#define CVMX_SHARED_BSS_FLAGS (SECTION_WRITE | SECTION_BSS)
19092 +
19093 +#undef TARGET_ASM_SELECT_SECTION
19094 +#define TARGET_ASM_SELECT_SECTION octeon_select_section
19095 +
19096 +#undef TARGET_ASM_UNIQUE_SECTION
19097 +#define TARGET_ASM_UNIQUE_SECTION octeon_unique_section
19098 +
19099 +/* Implement ASM_OUTPUT_ALIGNED_DECL_LOCAL. This differs from the 
19100 +   generic version only in the use of cvmx_shared attribute.  */
19101
19102 +#undef ASM_OUTPUT_ALIGNED_DECL_LOCAL
19103 +#define ASM_OUTPUT_ALIGNED_DECL_LOCAL(STREAM, DECL, NAME, SIZE, ALIGN) \
19104 +  do                                                                   \
19105 +    {                                                                  \
19106 +      if ((DECL) && TREE_CODE ((DECL)) == VAR_DECL                     \
19107 +         && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES (DECL)))  \
19108 +       {                                                               \
19109 +           fprintf ((STREAM), "%s", LOCAL_ASM_OP);                     \
19110 +           assemble_name ((STREAM), (NAME));                           \
19111 +           fprintf ((STREAM), "\n");                                   \
19112 +          octeon_output_shared_variable ((STREAM), (DECL), (NAME),     \
19113 +                                         (SIZE), (ALIGN));             \
19114 +        }                                                              \
19115 +      else                                                             \
19116 +       ASM_OUTPUT_ALIGNED_LOCAL (STREAM, NAME, SIZE, ALIGN);           \
19117 +    }                                                                  \
19118 +  while (0) 
19119 +
19120 +\f
19121 +/* Implement ASM_OUTPUT_ALIGNED_DECL_COMMON.  This differs from the mips 
19122 +   version only in the use of cvmx_shared attribute.  */
19123 +
19124 +#undef ASM_OUTPUT_ALIGNED_DECL_COMMON
19125 +#define ASM_OUTPUT_ALIGNED_DECL_COMMON(STREAM, DECL, NAME, SIZE, ALIGN)           \
19126 +  {                                                                       \
19127 +    if (TREE_CODE ((DECL)) == VAR_DECL                                    \
19128 +        && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES ((DECL))))    \
19129 +      {                                                                           \
19130 +       if (TREE_PUBLIC ((DECL)) && DECL_NAME ((DECL)))                    \
19131 +         targetm.asm_out.globalize_label (asm_out_file, (NAME));          \
19132 +       octeon_output_shared_variable ((STREAM), (DECL), (NAME),           \
19133 +                                      (SIZE), (ALIGN));                   \
19134 +      }                                                                           \
19135 +    else                                                                  \
19136 +      mips_output_aligned_decl_common ((STREAM), (DECL), (NAME), (SIZE),   \
19137 +                                      (ALIGN));                           \
19138 +   }
19139 diff -Nur a/gcc/config/mips/predicates.md b/gcc/config/mips/predicates.md
19140 --- a/gcc/config/mips/predicates.md     2009-02-20 16:20:38.000000000 +0100
19141 +++ b/gcc/config/mips/predicates.md     2010-01-25 09:50:29.035686224 +0100
19142 @@ -211,6 +211,20 @@
19143      }
19144  })
19145  
19146 +(define_predicate "mask_low_and_shift_operator"
19147 +  (and (match_code "and")
19148 +       (match_test "GET_CODE (XEXP (op, 0)) == ASHIFT
19149 +                   && GET_CODE (XEXP (op, 1)) == CONST_INT
19150 +                   && GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST_INT"))
19151 +{
19152 +  int len;
19153 +
19154 +  len = mask_low_and_shift_len (GET_MODE (op),
19155 +                               INTVAL (XEXP (XEXP (op, 0), 1)),
19156 +                               INTVAL (XEXP (op, 1)));
19157 +  return 0 < len && len <= 32;
19158 +})
19159 +
19160  (define_predicate "consttable_operand"
19161    (match_test "CONSTANT_P (op)"))
19162  
19163 diff -Nur a/gcc/config/mips/sde.h b/gcc/config/mips/sde.h
19164 --- a/gcc/config/mips/sde.h     2009-02-20 16:20:38.000000000 +0100
19165 +++ b/gcc/config/mips/sde.h     2010-01-25 09:50:29.035686224 +0100
19166 @@ -19,6 +19,9 @@
19167  along with GCC; see the file COPYING3.  If not see
19168  <http://www.gnu.org/licenses/>.  */
19169  
19170 +#undef TARGET_MIPS_SDE
19171 +#define TARGET_MIPS_SDE 1
19172 +
19173  #undef DRIVER_SELF_SPECS
19174  #define DRIVER_SELF_SPECS                                              \
19175    /* Make sure a -mips option is present.  This helps us to pick       \
19176 @@ -90,7 +93,8 @@
19177  
19178  /* Use $5 as a temporary for both MIPS16 and non-MIPS16.  */
19179  #undef MIPS_EPILOGUE_TEMP_REGNUM
19180 -#define MIPS_EPILOGUE_TEMP_REGNUM (GP_REG_FIRST + 5)
19181 +#define MIPS_EPILOGUE_TEMP_REGNUM \
19182 +  (cfun->machine->interrupt_handler_p ? K0_REG_NUM : GP_REG_FIRST + 5)
19183  
19184  /* Using long will always be right for size_t and ptrdiff_t, since
19185     sizeof(long) must equal sizeof(void *), following from the setting
19186 diff -Nur a/gcc/config/mips/sdemtk.h b/gcc/config/mips/sdemtk.h
19187 --- a/gcc/config/mips/sdemtk.h  2009-02-20 16:20:38.000000000 +0100
19188 +++ b/gcc/config/mips/sdemtk.h  2010-01-25 09:50:29.035686224 +0100
19189 @@ -19,6 +19,8 @@
19190  along with GCC; see the file COPYING3.  If not see
19191  <http://www.gnu.org/licenses/>.  */
19192  
19193 +#define TARGET_MIPS_SDEMTK     1
19194 +
19195  #define TARGET_OS_CPP_BUILTINS()                       \
19196    do                                                   \
19197      {                                                  \
19198 @@ -113,3 +115,12 @@
19199  /* ...nor does the call sequence preserve $31.  */
19200  #undef MIPS_SAVE_REG_FOR_PROFILING_P
19201  #define MIPS_SAVE_REG_FOR_PROFILING_P(REGNO) ((REGNO) == GP_REG_FIRST + 31)
19202 +
19203 +/* From mips.h, with mno-float option added.  */
19204 +
19205 +#undef MIPS_ARCH_FLOAT_SPEC
19206 +#define MIPS_ARCH_FLOAT_SPEC \
19207 +  "%{mhard-float|msoft-float|mno-float|march=mips*:; \
19208 +     march=vr41*|march=m4k|march=4k*|march=24kc|march=24kec \
19209 +     |march=34kc|march=74kc|march=1004kc|march=5kc|march=octeon|march=xlr: -msoft-float; \
19210 +     march=*: -mhard-float}"
19211 diff -Nur a/gcc/config/mips/t-crtfm b/gcc/config/mips/t-crtfm
19212 --- a/gcc/config/mips/t-crtfm   1970-01-01 01:00:00.000000000 +0100
19213 +++ b/gcc/config/mips/t-crtfm   2010-01-25 09:50:29.035686224 +0100
19214 @@ -0,0 +1,9 @@
19215 +
19216 +EXTRA_MULTILIB_PARTS += crtfastmath.o
19217 +
19218 +EXTRA_PARTS += crtfastmath.o
19219 +
19220 +$(T)crtfastmath.o: $(srcdir)/config/mips/crtfastmath.c $(GCC_PASSES)
19221 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
19222 +       -c -o $(T)crtfastmath.o $(srcdir)/config/mips/crtfastmath.c
19223 +
19224 diff -Nur a/gcc/config/mips/t-montavista-elf b/gcc/config/mips/t-montavista-elf
19225 --- a/gcc/config/mips/t-montavista-elf  1970-01-01 01:00:00.000000000 +0100
19226 +++ b/gcc/config/mips/t-montavista-elf  2010-01-25 09:50:29.035686224 +0100
19227 @@ -0,0 +1,22 @@
19228 +# MontaVista ELF Configuration.
19229 +# Copyright (C) 2009
19230 +# Free Software Foundation, Inc.
19231 +#
19232 +# This file is part of GCC.
19233 +#
19234 +# GCC is free software; you can redistribute it and/or modify
19235 +# it under the terms of the GNU General Public License as published by
19236 +# the Free Software Foundation; either version 3, or (at your option)
19237 +# any later version.
19238 +# 
19239 +# GCC is distributed in the hope that it will be useful,
19240 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
19241 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19242 +# GNU General Public License for more details.
19243 +#
19244 +# You should have received a copy of the GNU General Public License
19245 +# along with GCC; see the file COPYING3.  If not see
19246 +# <http://www.gnu.org/licenses/>.
19247 +
19248 +MULTILIB_OPTIONS =
19249 +MULTILIB_DIRNAMES =
19250 diff -Nur a/gcc/config/mips/t-montavista-linux b/gcc/config/mips/t-montavista-linux
19251 --- a/gcc/config/mips/t-montavista-linux        1970-01-01 01:00:00.000000000 +0100
19252 +++ b/gcc/config/mips/t-montavista-linux        2010-01-25 09:50:29.035686224 +0100
19253 @@ -0,0 +1,43 @@
19254 +# MontaVista GNU/Linux Configuration.
19255 +# Copyright (C) 2009
19256 +# Free Software Foundation, Inc.
19257 +#
19258 +# This file is part of GCC.
19259 +#
19260 +# GCC is free software; you can redistribute it and/or modify
19261 +# it under the terms of the GNU General Public License as published by
19262 +# the Free Software Foundation; either version 3, or (at your option)
19263 +# any later version.
19264 +# 
19265 +# GCC is distributed in the hope that it will be useful,
19266 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
19267 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19268 +# GNU General Public License for more details.
19269 +#
19270 +# You should have received a copy of the GNU General Public License
19271 +# along with GCC; see the file COPYING3.  If not see
19272 +# <http://www.gnu.org/licenses/>.
19273 +
19274 +# Build big-endian and little-endian support libraries.
19275 +MULTILIB_OPTIONS = mel msoft-float march=octeon mabi=n32/mabi=64
19276 +MULTILIB_DIRNAMES = mel soft-float octeon n32 64
19277 +MULTILIB_EXCEPTIONS = *mel*/*mabi=n32* *mel*/*mabi=64*
19278 +MULTILIB_EXCEPTIONS += *mel*/*march=octeon* march=octeon march=octeon/mabi=n32
19279 +MULTILIB_EXCEPTIONS += march=octeon/mabi=64 msoft-float/march=octeon
19280 +
19281 +# These files must be built for each multilib.
19282 +EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
19283 +
19284 +# See comment in montavista-linux.h on STARTFILE_PREFIX_SPEC for how the real
19285 +# directories used in the sysroots are determined.  These directories
19286 +# are specified so that (a) they are distinct and (b) removing the
19287 +# components that form part of the sysroot suffix leaves the real
19288 +# directory within the sysroot.
19289 +MULTILIB_OSDIRNAMES = msoft-float/mabi.n32=../lib32/soft-float
19290 +MULTILIB_OSDIRNAMES += msoft-float/mabi.64=../lib64/soft-float
19291 +MULTILIB_OSDIRNAMES += msoft-float/march.octeon/mabi.n32=../lib32/soft-float/octeon
19292 +MULTILIB_OSDIRNAMES += msoft-float/march.octeon/mabi.64=../lib64/soft-float/octeon
19293 +MULTILIB_OSDIRNAMES += mel/msoft-float=!mel/soft-float
19294 +MULTILIB_OSDIRNAMES += msoft-float=!soft-float
19295 +MULTILIB_OSDIRNAMES += mabi.64=../lib64
19296 +MULTILIB_OSDIRNAMES += mabi.n32=../lib32
19297 diff -Nur a/gcc/config/mips/t-octeon-elf b/gcc/config/mips/t-octeon-elf
19298 --- a/gcc/config/mips/t-octeon-elf      1970-01-01 01:00:00.000000000 +0100
19299 +++ b/gcc/config/mips/t-octeon-elf      2010-01-25 09:50:29.035686224 +0100
19300 @@ -0,0 +1,41 @@
19301 +# Don't let CTOR_LIST end up in sdata section.
19302 +
19303 +CRTSTUFF_T_CFLAGS = -G 0 -fno-asynchronous-unwind-tables
19304 +
19305 +# Assemble startup files.
19306 +
19307 +$(T)crti.o: $(srcdir)/config/mips/crti.asm $(GCC_PASSES)
19308 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
19309 +       -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/mips/crti.asm
19310 +
19311 +$(T)crtn.o: $(srcdir)/config/mips/crtn.asm $(GCC_PASSES)
19312 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
19313 +       -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/mips/crtn.asm
19314 +
19315 +# N32 uses TFmode for long double.
19316 +
19317 +TPBIT = tp-bit.c
19318 +
19319 +tp-bit.c: $(srcdir)/config/fp-bit.c
19320 +       echo '#ifdef __MIPSEL__' > tp-bit.c
19321 +       echo '# define FLOAT_BIT_ORDER_MISMATCH' >> tp-bit.c
19322 +       echo '#endif' >> tp-bit.c
19323 +       echo '#if __LDBL_MANT_DIG__ == 113' >> tp-bit.c
19324 +       echo '#define QUIET_NAN_NEGATED' >> tp-bit.c
19325 +       echo '# define TFLOAT' >> tp-bit.c
19326 +       cat $(srcdir)/config/fp-bit.c >> tp-bit.c
19327 +       echo '#endif' >> tp-bit.c
19328 +
19329 +# We must build libgcc2.a with -G 0, in case the user wants to link
19330 +# without the $gp register.
19331 +
19332 +TARGET_LIBGCC2_CFLAGS = -G 0
19333
19334 +# Build both ABIs.
19335 +
19336 +MULTILIB_OPTIONS = mabi=n32/mabi=eabi/mabi=64
19337 +MULTILIB_DIRNAMES = n32 eabi n64
19338 +EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o
19339 +
19340 +LIBGCC = stmp-multilib
19341 +INSTALL_LIBGCC = install-multilib
19342 diff -Nur a/gcc/config/mips/t-sgxx-linux b/gcc/config/mips/t-sgxx-linux
19343 --- a/gcc/config/mips/t-sgxx-linux      1970-01-01 01:00:00.000000000 +0100
19344 +++ b/gcc/config/mips/t-sgxx-linux      2010-01-25 09:50:29.035686224 +0100
19345 @@ -0,0 +1,13 @@
19346 +MULTILIB_OPTIONS = muclibc march=mips2/march=mips32 msoft-float EL/EB
19347 +MULTILIB_DIRNAMES = uclibc mips2 mips32 soft-float el eb
19348 +MULTILIB_MATCHES := EL=mel EB=meb \
19349 +  march?mips2=mips2 march?mips2=mips3 march?mips2=mips4 \
19350 +  $(foreach cpu,mips3 mips4 r6000 r4000 vr4100 vr4111 vr4120 vr4130 vr4300 \
19351 +                r4400 r4600 orion r4650 loongson2e loongson2f r8000 r10000 \
19352 +                r12000 r14000 r16000 vr5000 vr5400 vr5500 rm7000 \
19353 +                rm9000,march?mips2=march?$(cpu)) \
19354 +  march?mips32=mips32 march?mips32=mips64 \
19355 +  $(foreach cpu,4kc 4km 4kp 4ksc mips64 5kc 5kf 20kc sb1 sb1a sr71000 \
19356 +                xlr,march?mips32=march?$(cpu))
19357 +MULTILIB_EXCEPTIONS = *muclibc*/*march?mips2* *muclibc*/*march?mips32*
19358 +EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o 
19359 diff -Nur a/gcc/config/mips/t-sgxxlite-linux b/gcc/config/mips/t-sgxxlite-linux
19360 --- a/gcc/config/mips/t-sgxxlite-linux  1970-01-01 01:00:00.000000000 +0100
19361 +++ b/gcc/config/mips/t-sgxxlite-linux  2010-01-25 09:50:29.035686224 +0100
19362 @@ -0,0 +1,5 @@
19363 +MULTILIB_OPTIONS = muclibc msoft-float EL/EB
19364 +MULTILIB_DIRNAMES = uclibc soft-float el eb
19365 +MULTILIB_MATCHES := EL=mel EB=meb
19366 +EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
19367 +
19368 diff -Nur a/gcc/config/mips/t-sgxx-sde b/gcc/config/mips/t-sgxx-sde
19369 --- a/gcc/config/mips/t-sgxx-sde        1970-01-01 01:00:00.000000000 +0100
19370 +++ b/gcc/config/mips/t-sgxx-sde        2010-01-25 09:50:29.035686224 +0100
19371 @@ -0,0 +1,15 @@
19372 +# SourceryG++ overrides for SDE builds
19373 +
19374 +# We must build libgcc2.a with -G 0, in case the user wants to link
19375 +# without the $gp register. Use -fno-optimize-sibling-calls in case
19376 +# we have a mixed mips16/non-mips16 environment where a plain "jump"
19377 +# instuction won't work across the divide (no jx instruction).
19378 +# Compile libraries with -mcode-xonly, so that they are link-compatible
19379 +# with both -mcode-readable=pcrel and -mcode-readable=yes.
19380 +TARGET_LIBGCC2_CFLAGS = -G 0 -fno-optimize-sibling-calls -mcode-xonly
19381 +
19382 +MULTILIB_OPTIONS = EL/EB mips16 mfp64/msoft-float/mno-float mcode-readable=no
19383 +MULTILIB_DIRNAMES = el eb mips16 fp64 sof nof spram
19384 +MULTILIB_MATCHES = EL=mel EB=meb mips16=mips16e
19385 +MULTILIB_EXCLUSIONS = mcode-readable=no/!mips16
19386 +MULTILIB_EXCEPTIONS = 
19387 diff -Nur a/gcc/config/mips/t-wrs-linux b/gcc/config/mips/t-wrs-linux
19388 --- a/gcc/config/mips/t-wrs-linux       1970-01-01 01:00:00.000000000 +0100
19389 +++ b/gcc/config/mips/t-wrs-linux       2010-01-25 09:50:29.035686224 +0100
19390 @@ -0,0 +1,55 @@
19391 +# Wind River GNU/Linux Configuration.
19392 +# Copyright (C) 2006, 2007
19393 +# Free Software Foundation, Inc.
19394 +#
19395 +# This file is part of GCC.
19396 +#
19397 +# GCC is free software; you can redistribute it and/or modify
19398 +# it under the terms of the GNU General Public License as published by
19399 +# the Free Software Foundation; either version 3, or (at your option)
19400 +# any later version.
19401 +# 
19402 +# GCC is distributed in the hope that it will be useful,
19403 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
19404 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19405 +# GNU General Public License for more details.
19406 +#
19407 +# You should have received a copy of the GNU General Public License
19408 +# along with GCC; see the file COPYING3.  If not see
19409 +# <http://www.gnu.org/licenses/>.
19410 +
19411 +# Build big-endian and little-endian support libraries.
19412 +MULTILIB_OPTIONS = muclibc mel mhard-float march=octeon/march=vr5500 mabi=n32/mabi=64
19413 +MULTILIB_DIRNAMES = uclibc mel hard-float octeon vr5500 n32 64
19414 +MULTILIB_EXCEPTIONS = *muclibc*/*mhard-float*
19415 +MULTILIB_EXCEPTIONS += *muclibc*/*mabi=n32*
19416 +MULTILIB_EXCEPTIONS += *muclibc*/*mabi=64*
19417 +MULTILIB_EXCEPTIONS += *muclibc*/*march=vr5500*
19418 +MULTILIB_EXCEPTIONS += *mel*/*march=vr5500*
19419 +MULTILIB_EXCEPTIONS += march=vr5500*
19420 +MULTILIB_EXCEPTIONS += mhard-float/march=vr5500/*
19421 +MULTILIB_EXCEPTIONS += */march=octeon*
19422 +MULTILIB_EXCEPTIONS += march=octeon march=octeon/mabi=32
19423 +MULTILIB_EXCEPTIONS += mel/mabi=n32 mel/mabi=64
19424 +MULTILIB_EXCEPTIONS += mabi=n32
19425 +# These files must be built for each multilib.
19426 +EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
19427 +
19428 +# See comment in wrs-linux.h on STARTFILE_PREFIX_SPEC for how the real
19429 +# directories used in the sysroots are determined.  These directories
19430 +# are specified so that (a) they are distinct and (b) removing the
19431 +# components that form part of the sysroot suffix leaves the real
19432 +# directory within the sysroot.
19433 +MULTILIB_OSDIRNAMES = mel/mhard-float/mabi.n32=../lib32/mel/hard-float
19434 +MULTILIB_OSDIRNAMES += mel/mhard-float/mabi.64=../lib64/mel/hard-float
19435 +MULTILIB_OSDIRNAMES += mhard-float/mabi.n32=../lib32/hard-float
19436 +MULTILIB_OSDIRNAMES += mhard-float/mabi.64=../lib64/hard-float
19437 +MULTILIB_OSDIRNAMES += mel/mhard-float=!mel/hard-float
19438 +MULTILIB_OSDIRNAMES += mhard-float/march.vr5500=!hard-float/vr5500
19439 +MULTILIB_OSDIRNAMES += mhard-float=!hard-float
19440 +MULTILIB_OSDIRNAMES += mabi.64=../lib64
19441 +MULTILIB_OSDIRNAMES += march.octeon/mabi.n32=../lib32/octeon
19442 +MULTILIB_OSDIRNAMES += march.octeon/mabi.64=../lib64/octeon
19443 +MULTILIB_OSDIRNAMES += muclibc/mel=!uclibc/mel
19444 +MULTILIB_OSDIRNAMES += muclibc=!uclibc
19445 +
19446 diff -Nur a/gcc/config/mips/wrs-linux.h b/gcc/config/mips/wrs-linux.h
19447 --- a/gcc/config/mips/wrs-linux.h       1970-01-01 01:00:00.000000000 +0100
19448 +++ b/gcc/config/mips/wrs-linux.h       2010-01-25 09:50:29.035686224 +0100
19449 @@ -0,0 +1,65 @@
19450 +/* Wind River GNU/Linux Configuration.
19451 +   Copyright (C) 2006, 2007
19452 +   Free Software Foundation, Inc.
19453 +
19454 +This file is part of GCC.
19455 +
19456 +GCC is free software; you can redistribute it and/or modify
19457 +it under the terms of the GNU General Public License as published by
19458 +the Free Software Foundation; either version 3, or (at your option)
19459 +any later version.
19460 +
19461 +GCC is distributed in the hope that it will be useful,
19462 +but WITHOUT ANY WARRANTY; without even the implied warranty of
19463 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19464 +GNU General Public License for more details.
19465 +
19466 +You should have received a copy of the GNU General Public License
19467 +along with GCC; see the file COPYING3.  If not see
19468 +<http://www.gnu.org/licenses/>.  */
19469 +
19470 +/* Override linux64.h to default to O32.  */
19471 +#undef DRIVER_SELF_SPECS
19472 +#define DRIVER_SELF_SPECS \
19473 +  BASE_DRIVER_SELF_SPECS, \
19474 +  LINUX_DRIVER_SELF_SPECS \
19475 +  " %{!EB:%{!EL:%(endian_spec)}}" \
19476 +  " %{!mabi=*: -mabi=32}"
19477 +
19478 +/* We do not need to provide an explicit big-endian multilib.  */
19479 +#undef MULTILIB_DEFAULTS
19480 +#define MULTILIB_DEFAULTS \
19481 +  { "meb", "mabi=32" }
19482 +
19483 +/* The GLIBC headers are in /usr/include, relative to the sysroot; the
19484 +   uClibc headers are in /uclibc/usr/include.  */
19485 +#undef SYSROOT_HEADERS_SUFFIX_SPEC
19486 +#define SYSROOT_HEADERS_SUFFIX_SPEC            \
19487 +  "%{muclibc:/uclibc}" 
19488 +
19489 +/* The various C libraries each have their own subdirectory.  */
19490 +#undef SYSROOT_SUFFIX_SPEC
19491 +#define SYSROOT_SUFFIX_SPEC                            \
19492 +  "%{muclibc:%{mel:/uclibc/mel ;                       \
19493 +               :/uclibc} ;                             \
19494 +     mel:%{mhard-float:/mel/hard-float ;               \
19495 +           :/mel} ;                                    \
19496 +     march=octeon:/octeon ;                            \
19497 +     march=vr5500:%{mhard-float:/hard-float/vr5500} ;  \
19498 +     mhard-float:/hard-float}"
19499 +
19500 +/* MULTILIB_OSDIRNAMES provides directory names used in two ways:
19501 +   relative to $target/lib/ in the GCC installation, and relative to
19502 +   lib/ and usr/lib/ in a sysroot.  For the latter, we want names such
19503 +   as plain ../lib64, but these cannot be used outside the sysroot
19504 +   because different multilibs would be mapped to the same directory.
19505 +   Directories are searched both with and without the multilib suffix,
19506 +   so it suffices if the directory without the suffix is correct
19507 +   within the sysroot while the directory with the suffix doesn't
19508 +   exist.  We use STARTFILE_PREFIX_SPEC to achieve the desired
19509 +   effect.  */
19510 +#undef STARTFILE_PREFIX_SPEC
19511 +#define STARTFILE_PREFIX_SPEC                          \
19512 +  "%{mabi=32: /usr/local/lib/ /lib/ /usr/lib/}                 \
19513 +   %{mabi=n32: /usr/local/lib32/ /lib32/ /usr/lib32/}  \
19514 +   %{mabi=64: /usr/local/lib64/ /lib64/ /usr/lib64/}"
19515 diff -Nur a/gcc/config/mips/xlr.md b/gcc/config/mips/xlr.md
19516 --- a/gcc/config/mips/xlr.md    2008-06-06 16:24:57.000000000 +0200
19517 +++ b/gcc/config/mips/xlr.md    2010-01-25 09:50:29.035686224 +0100
19518 @@ -1,5 +1,5 @@
19519  ;; DFA-based pipeline description for the XLR.
19520 -;;   Copyright (C) 2008 Free Software Foundation, Inc.
19521 +;;   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
19522  ;;
19523  ;; xlr.md   Machine Description for the RMI XLR Microprocessor
19524  ;; This file is part of GCC.
19525 @@ -31,7 +31,7 @@
19526  ;; Integer arithmetic instructions.
19527  (define_insn_reservation "ir_xlr_alu" 1
19528    (and (eq_attr "cpu" "xlr") 
19529 -       (eq_attr "type" "arith,shift,clz,const,unknown,multi,nop,trap"))
19530 +       (eq_attr "type" "move,arith,shift,clz,logical,signext,const,unknown,multi,nop,trap"))
19531    "xlr_main_pipe")
19532  
19533  ;; Integer arithmetic instructions.
19534 diff -Nur a/gcc/config/print-sysroot-suffix.sh b/gcc/config/print-sysroot-suffix.sh
19535 --- a/gcc/config/print-sysroot-suffix.sh        1970-01-01 01:00:00.000000000 +0100
19536 +++ b/gcc/config/print-sysroot-suffix.sh        2010-01-25 09:50:29.035686224 +0100
19537 @@ -0,0 +1,154 @@
19538 +#! /bin/sh
19539 +# Script to generate SYSROOT_SUFFIX_SPEC equivalent to MULTILIB_OSDIRNAMES
19540 +# Arguments are MULTILIB_OSDIRNAMES, MULTILIB_OPTIONS, MULTILIB_MATCHES
19541 +# and MULTILIB_ALIASES.
19542 +
19543 +# Copyright (C) 2009 Free Software Foundation, Inc.
19544 +
19545 +# This file is part of GCC.
19546 +
19547 +# GCC is free software; you can redistribute it and/or modify it under
19548 +# the terms of the GNU General Public License as published by the Free
19549 +# Software Foundation; either version 3, or (at your option) any later
19550 +# version.
19551 +
19552 +# GCC is distributed in the hope that it will be useful, but WITHOUT
19553 +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19554 +# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19555 +# for more details.
19556 +
19557 +# You should have received a copy of the GNU General Public License
19558 +# along with GCC; see the file COPYING3.  If not see
19559 +# <http://www.gnu.org/licenses/>.  
19560 +
19561 +# This shell script produces a header file fragment that defines
19562 +# SYSROOT_SUFFIX_SPEC.  It assumes that the sysroots will have the same
19563 +# structure and names used by the multilibs.
19564 +
19565 +# Invocation:
19566 +#   print-sysroot-suffix.sh \
19567 +#          MULTILIB_OSDIRNAMES \
19568 +#          MULTILIB_OPTIONS \
19569 +#          MULTILIB_MATCHES \
19570 +#      > t-sysroot-suffix.h
19571 +
19572 +# The three options exactly correspond to the variables of the same
19573 +# names defined in the tmake_file fragments.
19574 +
19575 +# Example:
19576 +#   sh ./gcc/config/print-sysroot-suffix.sh "a=A" "a b/c/d" ""
19577 +# =>
19578 +#   #undef SYSROOT_SUFFIX_SPEC
19579 +#   #define SYSROOT_SUFFIX_SPEC "" \
19580 +#   "%{a:" \
19581 +#     "%{b:A/b/;" \
19582 +#     "c:A/c/;" \
19583 +#     "d:A/d/;" \
19584 +#     ":A/};" \
19585 +#   ":}"
19586 +
19587 +# The script uses temporary subscripts in order to permit a recursive
19588 +# algorithm without the use of functions.
19589 +
19590 +set -e
19591 +
19592 +dirnames="$1"
19593 +options="$2"
19594 +matches="$3"
19595 +aliases="$4"
19596 +
19597 +cat > print-sysroot-suffix3.sh <<\EOF
19598 +#! /bin/sh
19599 +# Print all the multilib matches for this option
19600 +result="$1"
19601 +EOF
19602 +for x in $matches; do
19603 +  l=`echo $x | sed -e 's/=.*$//' -e 's/?/=/g'`
19604 +  r=`echo $x | sed -e 's/^.*=//' -e 's/?/=/g'`
19605 +  echo "[ \"\$1\" = \"$l\" ] && result=\"\$result|$r\"" >> print-sysroot-suffix3.sh
19606 +done
19607 +echo 'echo $result' >> print-sysroot-suffix3.sh
19608 +chmod +x print-sysroot-suffix3.sh
19609 +
19610 +cat > print-sysroot-suffix2.sh <<\EOF
19611 +#! /bin/sh
19612 +# Recursive script to enumerate all multilib combinations, match against
19613 +# multilib directories and output a spec string of the result.
19614 +# Will fold identical trees.
19615 +
19616 +padding="$1"
19617 +optstring="$2"
19618 +shift 2
19619 +n="\" \\
19620 +$padding\""
19621 +if [ $# = 0 ]; then
19622 +  case $optstring in
19623 +EOF
19624 +for x in $aliases; do
19625 +  l=`echo $x | sed -e 's/=.*$//' -e 's/?/=/g'`
19626 +  r=`echo $x | sed -e 's/^.*=//' -e 's/?/=/g'`
19627 +  echo "/$r/) optstring=\"/$l/\" ;;" >> print-sysroot-suffix2.sh
19628 +done
19629 +echo "  esac" >> print-sysroot-suffix2.sh
19630 +
19631 +pat=
19632 +for x in $dirnames; do
19633 +  p=`echo $x | sed -e 's,=!,/$=/,'`
19634 +  pat="$pat -e 's=^//$p='"
19635 +done
19636 +echo '  optstring=`echo "/$optstring" | sed '"$pat\`" >> print-sysroot-suffix2.sh
19637 +cat >> print-sysroot-suffix2.sh <<\EOF
19638 +  case $optstring in
19639 +  //*)
19640 +    ;;
19641 +  *)
19642 +    echo "$optstring"
19643 +    ;;
19644 +  esac
19645 +else
19646 +  thisopt="$1"
19647 +  shift
19648 +  bit=
19649 +  lastcond=
19650 +  result=
19651 +  for x in `echo "$thisopt" | sed -e 's,/, ,g'`; do
19652 +    case $x in
19653 +EOF
19654 +for x in `echo "$options" | sed -e 's,/, ,g'`; do
19655 +  match=`./print-sysroot-suffix3.sh "$x"`
19656 +  echo "$x) optmatch=\"$match\" ;;" >> print-sysroot-suffix2.sh
19657 +done
19658 +cat >> print-sysroot-suffix2.sh <<\EOF
19659 +    esac
19660 +    bit=`"$0" "$padding  " "$optstring$x/" "$@"`
19661 +    if [ -z "$lastopt" ]; then
19662 +      lastopt="$optmatch"
19663 +    else
19664 +      if [ "$lastbit" = "$bit" ]; then
19665 +       lastopt="$lastopt|$optmatch"
19666 +      else
19667 +       result="$result$lastopt:$lastbit;$n"
19668 +       lastopt="$optmatch"
19669 +      fi
19670 +    fi
19671 +    lastbit="$bit"
19672 +  done
19673 +  bit=`"$0" "$padding  " "$optstring" "$@"`
19674 +  if [ "$bit" = "$lastbit" ]; then
19675 +    if [ -z "$result" ]; then
19676 +      echo "$bit"
19677 +    else
19678 +      echo "$n%{$result:$bit}"
19679 +    fi
19680 +  else
19681 +    echo "$n%{$result$lastopt:$lastbit;$n:$bit}"
19682 +  fi
19683 +fi
19684 +EOF
19685 +
19686 +chmod +x ./print-sysroot-suffix2.sh
19687 +result=`./print-sysroot-suffix2.sh "" "/" $options`
19688 +echo "#undef SYSROOT_SUFFIX_SPEC"
19689 +echo "#define SYSROOT_SUFFIX_SPEC \"$result\""
19690 +rm print-sysroot-suffix2.sh
19691 +rm print-sysroot-suffix3.sh
19692 diff -Nur a/gcc/config/rs6000/e500mc.h b/gcc/config/rs6000/e500mc.h
19693 --- a/gcc/config/rs6000/e500mc.h        1970-01-01 01:00:00.000000000 +0100
19694 +++ b/gcc/config/rs6000/e500mc.h        2010-01-25 09:50:29.035686224 +0100
19695 @@ -0,0 +1,46 @@
19696 +/* Core target definitions for GNU compiler
19697 +   for IBM RS/6000 PowerPC targeted to embedded ELF systems.
19698 +   Copyright (C) 1995, 1996, 2000, 2003, 2004, 2007 Free Software Foundation, Inc.
19699 +   Contributed by Cygnus Support.
19700 +
19701 +   This file is part of GCC.
19702 +
19703 +   GCC is free software; you can redistribute it and/or modify it
19704 +   under the terms of the GNU General Public License as published
19705 +   by the Free Software Foundation; either version 3, or (at your
19706 +   option) any later version.
19707 +
19708 +   GCC is distributed in the hope that it will be useful, but WITHOUT
19709 +   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
19710 +   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
19711 +   License for more details.
19712 +
19713 +   You should have received a copy of the GNU General Public License
19714 +   along with GCC; see the file COPYING3.  If not see
19715 +   <http://www.gnu.org/licenses/>.  */
19716 +
19717 +/* Add -meabi to target flags.  */
19718 +#undef TARGET_DEFAULT
19719 +#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_EABI)
19720 +
19721 +#undef TARGET_VERSION
19722 +#define TARGET_VERSION fprintf (stderr, " (PowerPC Embedded)");
19723 +
19724 +#undef TARGET_OS_CPP_BUILTINS
19725 +#define TARGET_OS_CPP_BUILTINS()          \
19726 +  do                                      \
19727 +    {                                     \
19728 +      builtin_define_std ("PPC");         \
19729 +      builtin_define ("__embedded__");    \
19730 +      builtin_assert ("system=embedded"); \
19731 +      builtin_assert ("cpu=powerpc");     \
19732 +      builtin_assert ("machine=powerpc"); \
19733 +      TARGET_OS_SYSV_CPP_BUILTINS ();     \
19734 +    }                                     \
19735 +  while (0)
19736 +
19737 +#undef CC1_EXTRA_SPEC
19738 +#define CC1_EXTRA_SPEC "-maix-struct-return"
19739 +
19740 +#undef ASM_DEFAULT_SPEC
19741 +#define ASM_DEFAULT_SPEC "-mppc%{m64:64} -me500mc"
19742 diff -Nur a/gcc/config/rs6000/eabi.asm b/gcc/config/rs6000/eabi.asm
19743 --- a/gcc/config/rs6000/eabi.asm        2009-04-10 01:23:07.000000000 +0200
19744 +++ b/gcc/config/rs6000/eabi.asm        2010-01-25 09:50:29.035686224 +0100
19745 @@ -230,7 +230,7 @@
19746     r11         has the address of .LCTOC1 in it.
19747     r12         has the value to add to each pointer
19748     r13 .. r31  are unchanged */
19749 -       
19750 +#ifdef _RELOCATABLE
19751  FUNC_START(__eabi_convert)
19752          cmplw  1,3,4                           /* any pointers to convert? */
19753          subf   5,3,4                           /* calculate number of words to convert */
19754 @@ -285,5 +285,5 @@
19755          blr
19756  
19757  FUNC_END(__eabi_uconvert)
19758 -
19759 +#endif
19760  #endif
19761 diff -Nur a/gcc/config/rs6000/eabi-ci.asm b/gcc/config/rs6000/eabi-ci.asm
19762 --- a/gcc/config/rs6000/eabi-ci.asm     2009-04-10 01:23:07.000000000 +0200
19763 +++ b/gcc/config/rs6000/eabi-ci.asm     2010-01-25 09:50:29.035686224 +0100
19764 @@ -98,6 +98,7 @@
19765  /* Head of __init function used for static constructors.  */
19766         .section ".init","ax"
19767         .align 2
19768 +FUNC_START(_init)
19769  FUNC_START(__init)
19770         stwu 1,-16(1)
19771         mflr 0
19772 @@ -106,6 +107,7 @@
19773  /* Head of __fini function used for static destructors.  */
19774         .section ".fini","ax"
19775         .align 2
19776 +FUNC_START(_fini)
19777  FUNC_START(__fini)
19778         stwu 1,-16(1)
19779         mflr 0
19780 diff -Nur a/gcc/config/rs6000/eabi.h b/gcc/config/rs6000/eabi.h
19781 --- a/gcc/config/rs6000/eabi.h  2007-08-02 12:49:31.000000000 +0200
19782 +++ b/gcc/config/rs6000/eabi.h  2010-01-25 09:50:29.035686224 +0100
19783 @@ -23,10 +23,6 @@
19784  #undef TARGET_DEFAULT
19785  #define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_EABI)
19786  
19787 -/* Invoke an initializer function to set up the GOT.  */
19788 -#define NAME__MAIN "__eabi"
19789 -#define INVOKE__main
19790 -
19791  #undef TARGET_VERSION
19792  #define TARGET_VERSION fprintf (stderr, " (PowerPC Embedded)");
19793  
19794 @@ -42,3 +38,20 @@
19795        TARGET_OS_SYSV_CPP_BUILTINS ();     \
19796      }                                     \
19797    while (0)
19798 +
19799 +/* Add -te500v1 and -te500v2 options for convenience in generating
19800 +   multilibs.  */
19801 +#undef CC1_EXTRA_SPEC
19802 +#define CC1_EXTRA_SPEC \
19803 +  "%{te500v1: -mcpu=8540 -mfloat-gprs=single -mspe=yes -mabi=spe} " \
19804 +  "%{te500v2: -mcpu=8548 -mfloat-gprs=double -mspe=yes -mabi=spe} " \
19805 +  "%{te600: -mcpu=7400 -maltivec -mabi=altivec}"                   \
19806 +  "%{te500mc: -mcpu=e500mc -maix-struct-return}"
19807 +
19808 +#undef ASM_DEFAULT_SPEC
19809 +#define ASM_DEFAULT_SPEC                       \
19810 +  "%{te500v1:-mppc -mspe -me500 ;              \
19811 +     te500v2:-mppc -mspe -me500 ;              \
19812 +     te600:-mppc -maltivec ;                   \
19813 +     te500mc:-mppc -me500mc ;                  \
19814 +     :-mppc%{m64:64}}"
19815 diff -Nur a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h
19816 --- a/gcc/config/rs6000/linux.h 2007-08-02 12:49:31.000000000 +0200
19817 +++ b/gcc/config/rs6000/linux.h 2010-01-25 09:50:29.035686224 +0100
19818 @@ -128,3 +128,29 @@
19819  #ifdef TARGET_DEFAULT_LONG_DOUBLE_128
19820  #define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
19821  #endif
19822 +
19823 +/* Add -te500v1 and -te500v2 options for convenience in generating
19824 +   multilibs.  */
19825 +#undef CC1_EXTRA_SPEC
19826 +#define CC1_EXTRA_SPEC \
19827 +  "%{te500v1: -mcpu=8540 -mfloat-gprs=single -mspe=yes -mabi=spe} " \
19828 +  "%{te500v2: -mcpu=8548 -mfloat-gprs=double -mspe=yes -mabi=spe} " \
19829 +  "%{te600: -mcpu=7400 -maltivec -mabi=altivec}" \
19830 +  "%{te500mc: -mcpu=e500mc}"
19831 +
19832 +#undef ASM_DEFAULT_SPEC
19833 +#define ASM_DEFAULT_SPEC                       \
19834 +  "%{te500v1:-mppc -mspe -me500 ;              \
19835 +     te500v2:-mppc -mspe -me500 ;              \
19836 +     te600:-mppc -maltivec ;                   \
19837 +     te500mc:-me500mc ;                                \
19838 +     :-mppc%{m64:64}}"
19839 +
19840 +/* The various C libraries each have their own subdirectory.  */
19841 +#undef SYSROOT_SUFFIX_SPEC
19842 +#define SYSROOT_SUFFIX_SPEC                    \
19843 +  "%{msoft-float:/nof ;                                \
19844 +     te600:/te600 ;                            \
19845 +     te500v1:/te500v1 ;                                \
19846 +     te500v2:/te500v2 ;                                \
19847 +     te500mc:/te500mc}"
19848 diff -Nur a/gcc/config/rs6000/montavista-linux.h b/gcc/config/rs6000/montavista-linux.h
19849 --- a/gcc/config/rs6000/montavista-linux.h      1970-01-01 01:00:00.000000000 +0100
19850 +++ b/gcc/config/rs6000/montavista-linux.h      2010-01-25 09:50:29.035686224 +0100
19851 @@ -0,0 +1,41 @@
19852 +/* MontaVista GNU/Linux Configuration.
19853 +   Copyright (C) 2009
19854 +   Free Software Foundation, Inc.
19855 +
19856 +This file is part of GCC.
19857 +
19858 +GCC is free software; you can redistribute it and/or modify
19859 +it under the terms of the GNU General Public License as published by
19860 +the Free Software Foundation; either version 3, or (at your option)
19861 +any later version.
19862 +
19863 +GCC is distributed in the hope that it will be useful,
19864 +but WITHOUT ANY WARRANTY; without even the implied warranty of
19865 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19866 +GNU General Public License for more details.
19867 +
19868 +You should have received a copy of the GNU General Public License
19869 +along with GCC; see the file COPYING3.  If not see
19870 +<http://www.gnu.org/licenses/>.  */
19871 +
19872 +/* Add -te500v2 option for convenience in generating multilibs.  */
19873 +#undef CC1_EXTRA_SPEC
19874 +#define CC1_EXTRA_SPEC \
19875 +  "%{te500v2: -mcpu=8548 -mfloat-gprs=double -mspe=yes -mabi=spe} " \
19876 +  "%{te600: -mcpu=7400 -maltivec -mabi=altivec}" \
19877 +  "%{te500mc: -mcpu=e500mc}"
19878 +
19879 +#undef ASM_DEFAULT_SPEC
19880 +#define ASM_DEFAULT_SPEC                        \
19881 +  "%{te500v2:-mppc -mspe -me500 ;               \
19882 +     te600:-mppc -maltivec ;                    \
19883 +     te500mc:-me500mc ;                         \
19884 +     :-mppc}"
19885 +
19886 +/* The various C libraries each have their own subdirectory.  */
19887 +#undef SYSROOT_SUFFIX_SPEC
19888 +#define SYSROOT_SUFFIX_SPEC                    \
19889 +  "%{msoft-float:/soft-float ;                 \
19890 +     te600:/te600 ;                             \
19891 +     te500v2:/te500v2 ;                         \
19892 +     te500mc:/te500mc}"
19893 diff -Nur a/gcc/config/rs6000/option-defaults.h b/gcc/config/rs6000/option-defaults.h
19894 --- a/gcc/config/rs6000/option-defaults.h       1970-01-01 01:00:00.000000000 +0100
19895 +++ b/gcc/config/rs6000/option-defaults.h       2010-01-25 09:50:29.035686224 +0100
19896 @@ -0,0 +1,64 @@
19897 +/* Definitions of default options for config/rs6000 configurations.
19898 +   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
19899 +   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
19900 +   Free Software Foundation, Inc.
19901 +
19902 +   This file is part of GCC.
19903 +
19904 +   GCC is free software; you can redistribute it and/or modify it
19905 +   under the terms of the GNU General Public License as published
19906 +   by the Free Software Foundation; either version 3, or (at your
19907 +   option) any later version.
19908 +
19909 +   GCC is distributed in the hope that it will be useful, but WITHOUT
19910 +   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
19911 +   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
19912 +   License for more details.
19913 +
19914 +   Under Section 7 of GPL version 3, you are granted additional
19915 +   permissions described in the GCC Runtime Library Exception, version
19916 +   3.1, as published by the Free Software Foundation.
19917 +
19918 +   You should have received a copy of the GNU General Public License and
19919 +   a copy of the GCC Runtime Library Exception along with this program;
19920 +   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
19921 +   <http://www.gnu.org/licenses/>.  */
19922 +
19923 +/* This header needs to be included after any other headers affecting
19924 +   TARGET_DEFAULT.  */
19925 +
19926 +#if TARGET_AIX
19927 +#define OPT_64 "maix64"
19928 +#define OPT_32 "maix32"
19929 +#else
19930 +#define OPT_64 "m64"
19931 +#define OPT_32 "m32"
19932 +#endif
19933 +
19934 +#ifndef MASK_64BIT
19935 +#define MASK_64BIT 0
19936 +#endif
19937 +
19938 +#if TARGET_DEFAULT & MASK_64BIT
19939 +#define OPT_ARCH64 "!"OPT_32
19940 +#define OPT_ARCH32 OPT_32
19941 +#else
19942 +#define OPT_ARCH64 OPT_64
19943 +#define OPT_ARCH32 "!"OPT_64
19944 +#endif
19945 +
19946 +/* Support for a compile-time default CPU, et cetera.  The rules are:
19947 +   --with-cpu is ignored if -mcpu is specified; likewise --with-cpu-32
19948 +     and --with-cpu-64.
19949 +   --with-tune is ignored if -mtune is specified; likewise --with-tune-32
19950 +     and --with-tune-64.
19951 +   --with-float is ignored if -mhard-float or -msoft-float are
19952 +    specified.  */
19953 +#define OPTION_DEFAULT_SPECS \
19954 +  {"cpu", "%{mcpu=*|te500mc|te500v1|te500v2|te600:;:-mcpu=%(VALUE)}" }, \
19955 +  {"cpu_32", "%{" OPT_ARCH32 ":%{mcpu=*|te500mc|te500v1|te500v2|te600:;:-mcpu=%(VALUE)}}" }, \
19956 +  {"cpu_64", "%{" OPT_ARCH64 ":%{mcpu=*|te500mc|te500v1|te500v2|te600:;:-mcpu=%(VALUE)}}" }, \
19957 +  {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \
19958 +  {"tune_32", "%{" OPT_ARCH32 ":%{!mtune=*:-mtune=%(VALUE)}}" }, \
19959 +  {"tune_64", "%{" OPT_ARCH64 ":%{!mtune=*:-mtune=%(VALUE)}}" }, \
19960 +  {"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" }
19961 diff -Nur a/gcc/config/rs6000/paired.md b/gcc/config/rs6000/paired.md
19962 --- a/gcc/config/rs6000/paired.md       2009-04-10 01:23:07.000000000 +0200
19963 +++ b/gcc/config/rs6000/paired.md       2010-01-25 09:50:29.035686224 +0100
19964 @@ -27,7 +27,7 @@
19965   (UNSPEC_EXTODD_V2SF      333)
19966  ])
19967  
19968 -(define_insn "negv2sf2"
19969 +(define_insn "paired_negv2sf2"
19970    [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
19971         (neg:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "f")))]
19972    "TARGET_PAIRED_FLOAT"
19973 @@ -41,7 +41,7 @@
19974    "ps_rsqrte %0,%1"
19975    [(set_attr "type" "fp")])
19976  
19977 -(define_insn "absv2sf2"
19978 +(define_insn "paired_absv2sf2"
19979    [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
19980         (abs:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "f")))]
19981    "TARGET_PAIRED_FLOAT"
19982 @@ -55,7 +55,7 @@
19983    "ps_nabs %0,%1"
19984    [(set_attr "type" "fp")])
19985  
19986 -(define_insn "addv2sf3"
19987 +(define_insn "paired_addv2sf3"
19988    [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
19989         (plus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "%f")
19990                    (match_operand:V2SF 2 "gpc_reg_operand" "f")))]
19991 @@ -63,7 +63,7 @@
19992    "ps_add %0,%1,%2"
19993    [(set_attr "type" "fp")])
19994  
19995 -(define_insn "subv2sf3"
19996 +(define_insn "paired_subv2sf3"
19997    [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
19998          (minus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "f")
19999                      (match_operand:V2SF 2 "gpc_reg_operand" "f")))]
20000 @@ -71,7 +71,7 @@
20001    "ps_sub %0,%1,%2"
20002    [(set_attr "type" "fp")])
20003  
20004 -(define_insn "mulv2sf3"
20005 +(define_insn "paired_mulv2sf3"
20006    [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
20007         (mult:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "%f")
20008                    (match_operand:V2SF 2 "gpc_reg_operand" "f")))]
20009 @@ -86,7 +86,7 @@
20010    "ps_res %0,%1"
20011    [(set_attr "type" "fp")])
20012  
20013 -(define_insn "divv2sf3"
20014 +(define_insn "paired_divv2sf3"
20015    [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
20016         (div:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "f")
20017                   (match_operand:V2SF 2 "gpc_reg_operand" "f")))]
20018 diff -Nur a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
20019 --- a/gcc/config/rs6000/rs6000.c        2009-03-17 21:18:21.000000000 +0100
20020 +++ b/gcc/config/rs6000/rs6000.c        2010-01-25 09:50:29.035686224 +0100
20021 @@ -919,6 +919,7 @@
20022  static bool rs6000_is_opaque_type (const_tree);
20023  static rtx rs6000_dwarf_register_span (rtx);
20024  static void rs6000_init_dwarf_reg_sizes_extra (tree);
20025 +static int rs6000_commutative_operand_precedence (const_rtx, int);
20026  static rtx rs6000_legitimize_tls_address (rtx, enum tls_model);
20027  static void rs6000_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
20028  static rtx rs6000_tls_get_addr (void);
20029 @@ -1194,6 +1195,10 @@
20030  #undef TARGET_VECTOR_OPAQUE_P
20031  #define TARGET_VECTOR_OPAQUE_P rs6000_is_opaque_type
20032  
20033 +#undef TARGET_COMMUTATIVE_OPERAND_PRECEDENCE
20034 +#define TARGET_COMMUTATIVE_OPERAND_PRECEDENCE \
20035 +  rs6000_commutative_operand_precedence
20036 +
20037  #undef TARGET_DWARF_REGISTER_SPAN
20038  #define TARGET_DWARF_REGISTER_SPAN rs6000_dwarf_register_span
20039  
20040 @@ -4682,16 +4687,19 @@
20041    if (TARGET_ALTIVEC)
20042      global_regs[VSCR_REGNO] = 1;
20043  
20044 -  if (TARGET_ALTIVEC_ABI)
20045 -    {
20046 -      for (i = FIRST_ALTIVEC_REGNO; i < FIRST_ALTIVEC_REGNO + 20; ++i)
20047 -       call_used_regs[i] = call_really_used_regs[i] = 1;
20048 +  /* If we are not using the AltiVec ABI, pretend that the normally
20049 +     call-saved registers are also call-used.  We could use them
20050 +     normally if we saved and restored them in the prologue; that
20051 +     would require using the alignment padding around the register
20052 +     save area, and some care with unwinding information.  */
20053 +  if (! TARGET_ALTIVEC_ABI)
20054 +    for (i = FIRST_ALTIVEC_REGNO + 20; i <= LAST_ALTIVEC_REGNO; ++i)
20055 +      call_used_regs[i] = call_really_used_regs[i] = 1;
20056  
20057 -      /* AIX reserves VR20:31 in non-extended ABI mode.  */
20058 -      if (TARGET_XCOFF)
20059 -       for (i = FIRST_ALTIVEC_REGNO + 20; i < FIRST_ALTIVEC_REGNO + 32; ++i)
20060 -         fixed_regs[i] = call_used_regs[i] = call_really_used_regs[i] = 1;
20061 -    }
20062 +  if (TARGET_ALTIVEC_ABI && TARGET_XCOFF)
20063 +    /* AIX reserves VR20:31 in non-extended ABI mode.  */
20064 +    for (i = FIRST_ALTIVEC_REGNO + 20; i < FIRST_ALTIVEC_REGNO + 32; ++i)
20065 +      fixed_regs[i] = call_used_regs[i] = call_really_used_regs[i] = 1;
20066  }
20067  \f
20068  /* Try to output insns to set TARGET equal to the constant C if it can
20069 @@ -7507,10 +7515,10 @@
20070    { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sums", ALTIVEC_BUILTIN_VEC_SUMS },
20071    { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_xor", ALTIVEC_BUILTIN_VEC_XOR },
20072  
20073 -  { 0, CODE_FOR_divv2sf3, "__builtin_paired_divv2sf3", PAIRED_BUILTIN_DIVV2SF3 },
20074 -  { 0, CODE_FOR_addv2sf3, "__builtin_paired_addv2sf3", PAIRED_BUILTIN_ADDV2SF3 },
20075 -  { 0, CODE_FOR_subv2sf3, "__builtin_paired_subv2sf3", PAIRED_BUILTIN_SUBV2SF3 },
20076 -  { 0, CODE_FOR_mulv2sf3, "__builtin_paired_mulv2sf3", PAIRED_BUILTIN_MULV2SF3 },
20077 +  { 0, CODE_FOR_paired_divv2sf3, "__builtin_paired_divv2sf3", PAIRED_BUILTIN_DIVV2SF3 },
20078 +  { 0, CODE_FOR_paired_addv2sf3, "__builtin_paired_addv2sf3", PAIRED_BUILTIN_ADDV2SF3 },
20079 +  { 0, CODE_FOR_paired_subv2sf3, "__builtin_paired_subv2sf3", PAIRED_BUILTIN_SUBV2SF3 },
20080 +  { 0, CODE_FOR_paired_mulv2sf3, "__builtin_paired_mulv2sf3", PAIRED_BUILTIN_MULV2SF3 },
20081    { 0, CODE_FOR_paired_muls0, "__builtin_paired_muls0", PAIRED_BUILTIN_MULS0 },
20082    { 0, CODE_FOR_paired_muls1, "__builtin_paired_muls1", PAIRED_BUILTIN_MULS1 },
20083    { 0, CODE_FOR_paired_merge00, "__builtin_paired_merge00", PAIRED_BUILTIN_MERGE00 },
20084 @@ -7519,10 +7527,10 @@
20085    { 0, CODE_FOR_paired_merge11, "__builtin_paired_merge11", PAIRED_BUILTIN_MERGE11 },
20086  
20087    /* Place holder, leave as first spe builtin.  */
20088 -  { 0, CODE_FOR_spe_evaddw, "__builtin_spe_evaddw", SPE_BUILTIN_EVADDW },
20089 -  { 0, CODE_FOR_spe_evand, "__builtin_spe_evand", SPE_BUILTIN_EVAND },
20090 +  { 0, CODE_FOR_addv2si3, "__builtin_spe_evaddw", SPE_BUILTIN_EVADDW },
20091 +  { 0, CODE_FOR_andv2si3, "__builtin_spe_evand", SPE_BUILTIN_EVAND },
20092    { 0, CODE_FOR_spe_evandc, "__builtin_spe_evandc", SPE_BUILTIN_EVANDC },
20093 -  { 0, CODE_FOR_spe_evdivws, "__builtin_spe_evdivws", SPE_BUILTIN_EVDIVWS },
20094 +  { 0, CODE_FOR_divv2si3, "__builtin_spe_evdivws", SPE_BUILTIN_EVDIVWS },
20095    { 0, CODE_FOR_spe_evdivwu, "__builtin_spe_evdivwu", SPE_BUILTIN_EVDIVWU },
20096    { 0, CODE_FOR_spe_eveqv, "__builtin_spe_eveqv", SPE_BUILTIN_EVEQV },
20097    { 0, CODE_FOR_spe_evfsadd, "__builtin_spe_evfsadd", SPE_BUILTIN_EVFSADD },
20098 @@ -7798,7 +7806,7 @@
20099  
20100    /* The SPE unary builtins must start with SPE_BUILTIN_EVABS and
20101       end with SPE_BUILTIN_EVSUBFUSIAAW.  */
20102 -  { 0, CODE_FOR_spe_evabs, "__builtin_spe_evabs", SPE_BUILTIN_EVABS },
20103 +  { 0, CODE_FOR_absv2si2, "__builtin_spe_evabs", SPE_BUILTIN_EVABS },
20104    { 0, CODE_FOR_spe_evaddsmiaaw, "__builtin_spe_evaddsmiaaw", SPE_BUILTIN_EVADDSMIAAW },
20105    { 0, CODE_FOR_spe_evaddssiaaw, "__builtin_spe_evaddssiaaw", SPE_BUILTIN_EVADDSSIAAW },
20106    { 0, CODE_FOR_spe_evaddumiaaw, "__builtin_spe_evaddumiaaw", SPE_BUILTIN_EVADDUMIAAW },
20107 @@ -7830,9 +7838,9 @@
20108    /* Place-holder.  Leave as last unary SPE builtin.  */
20109    { 0, CODE_FOR_spe_evsubfusiaaw, "__builtin_spe_evsubfusiaaw", SPE_BUILTIN_EVSUBFUSIAAW },
20110  
20111 -  { 0, CODE_FOR_absv2sf2, "__builtin_paired_absv2sf2", PAIRED_BUILTIN_ABSV2SF2 },
20112 +  { 0, CODE_FOR_paired_absv2sf2, "__builtin_paired_absv2sf2", PAIRED_BUILTIN_ABSV2SF2 },
20113    { 0, CODE_FOR_nabsv2sf2, "__builtin_paired_nabsv2sf2", PAIRED_BUILTIN_NABSV2SF2 },
20114 -  { 0, CODE_FOR_negv2sf2, "__builtin_paired_negv2sf2", PAIRED_BUILTIN_NEGV2SF2 },
20115 +  { 0, CODE_FOR_paired_negv2sf2, "__builtin_paired_negv2sf2", PAIRED_BUILTIN_NEGV2SF2 },
20116    { 0, CODE_FOR_sqrtv2sf2, "__builtin_paired_sqrtv2sf2", PAIRED_BUILTIN_SQRTV2SF2 },
20117    { 0, CODE_FOR_resv2sf2, "__builtin_paired_resv2sf2", PAIRED_BUILTIN_RESV2SF2 }
20118  };
20119 @@ -9370,6 +9378,8 @@
20120  static void
20121  rs6000_init_builtins (void)
20122  {
20123 +  tree tdecl;
20124 +  
20125    V2SI_type_node = build_vector_type (intSI_type_node, 2);
20126    V2SF_type_node = build_vector_type (float_type_node, 2);
20127    V4HI_type_node = build_vector_type (intHI_type_node, 4);
20128 @@ -9407,60 +9417,75 @@
20129    float_type_internal_node = float_type_node;
20130    void_type_internal_node = void_type_node;
20131  
20132 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20133 -                                           get_identifier ("__bool char"),
20134 -                                           bool_char_type_node));
20135 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20136 -                                           get_identifier ("__bool short"),
20137 -                                           bool_short_type_node));
20138 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20139 -                                           get_identifier ("__bool int"),
20140 -                                           bool_int_type_node));
20141 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20142 -                                           get_identifier ("__pixel"),
20143 -                                           pixel_type_node));
20144 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__bool char"),
20145 +                     bool_char_type_node);
20146 +  TYPE_NAME (bool_char_type_node) = tdecl;
20147 +  (*lang_hooks.decls.pushdecl) (tdecl);
20148 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__bool short"),
20149 +                     bool_short_type_node);
20150 +  TYPE_NAME (bool_short_type_node) = tdecl;
20151 +  (*lang_hooks.decls.pushdecl) (tdecl);
20152 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__bool int"),
20153 +                     bool_int_type_node);
20154 +  TYPE_NAME (bool_int_type_node) = tdecl;
20155 +  (*lang_hooks.decls.pushdecl) (tdecl);
20156 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__pixel"),
20157 +                     pixel_type_node);
20158 +  TYPE_NAME (pixel_type_node) = tdecl;
20159 +  (*lang_hooks.decls.pushdecl) (tdecl);
20160  
20161    bool_V16QI_type_node = build_vector_type (bool_char_type_node, 16);
20162    bool_V8HI_type_node = build_vector_type (bool_short_type_node, 8);
20163    bool_V4SI_type_node = build_vector_type (bool_int_type_node, 4);
20164    pixel_V8HI_type_node = build_vector_type (pixel_type_node, 8);
20165  
20166 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20167 -                                           get_identifier ("__vector unsigned char"),
20168 -                                           unsigned_V16QI_type_node));
20169 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20170 -                                           get_identifier ("__vector signed char"),
20171 -                                           V16QI_type_node));
20172 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20173 -                                           get_identifier ("__vector __bool char"),
20174 -                                           bool_V16QI_type_node));
20175 -
20176 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20177 -                                           get_identifier ("__vector unsigned short"),
20178 -                                           unsigned_V8HI_type_node));
20179 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20180 -                                           get_identifier ("__vector signed short"),
20181 -                                           V8HI_type_node));
20182 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20183 -                                           get_identifier ("__vector __bool short"),
20184 -                                           bool_V8HI_type_node));
20185 -
20186 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20187 -                                           get_identifier ("__vector unsigned int"),
20188 -                                           unsigned_V4SI_type_node));
20189 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20190 -                                           get_identifier ("__vector signed int"),
20191 -                                           V4SI_type_node));
20192 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20193 -                                           get_identifier ("__vector __bool int"),
20194 -                                           bool_V4SI_type_node));
20195 -
20196 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20197 -                                           get_identifier ("__vector float"),
20198 -                                           V4SF_type_node));
20199 -  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
20200 -                                           get_identifier ("__vector __pixel"),
20201 -                                           pixel_V8HI_type_node));
20202 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector unsigned char"),
20203 +                     unsigned_V16QI_type_node);
20204 +  TYPE_NAME (unsigned_V16QI_type_node) = tdecl;
20205 +  (*lang_hooks.decls.pushdecl) (tdecl);
20206 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector signed char"),
20207 +                     V16QI_type_node);
20208 +  TYPE_NAME (V16QI_type_node) = tdecl;
20209 +  (*lang_hooks.decls.pushdecl) (tdecl);
20210 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __bool char"),
20211 +                     bool_V16QI_type_node);
20212 +  TYPE_NAME ( bool_V16QI_type_node) = tdecl;
20213 +  (*lang_hooks.decls.pushdecl) (tdecl);
20214 +
20215 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector unsigned short"),
20216 +                     unsigned_V8HI_type_node);
20217 +  TYPE_NAME (unsigned_V8HI_type_node) = tdecl;
20218 +  (*lang_hooks.decls.pushdecl) (tdecl);
20219 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector signed short"),
20220 +                     V8HI_type_node);
20221 +  TYPE_NAME (V8HI_type_node) = tdecl;
20222 +  (*lang_hooks.decls.pushdecl) (tdecl);
20223 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __bool short"),
20224 +                     bool_V8HI_type_node);
20225 +  TYPE_NAME (bool_V8HI_type_node) = tdecl;
20226 +  (*lang_hooks.decls.pushdecl) (tdecl);
20227 +
20228 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector unsigned int"),
20229 +                     unsigned_V4SI_type_node);
20230 +  TYPE_NAME (unsigned_V4SI_type_node) = tdecl;
20231 +  (*lang_hooks.decls.pushdecl) (tdecl);
20232 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector signed int"),
20233 +                     V4SI_type_node);
20234 +  TYPE_NAME (V4SI_type_node) = tdecl;
20235 +  (*lang_hooks.decls.pushdecl) (tdecl);
20236 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __bool int"),
20237 +                     bool_V4SI_type_node);
20238 +  TYPE_NAME (bool_V4SI_type_node) = tdecl;
20239 +  (*lang_hooks.decls.pushdecl) (tdecl);
20240 +
20241 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector float"),
20242 +                     V4SF_type_node);
20243 +  TYPE_NAME (V4SF_type_node) = tdecl;
20244 +  (*lang_hooks.decls.pushdecl) (tdecl);
20245 +  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __pixel"),
20246 +                     pixel_V8HI_type_node);
20247 +  TYPE_NAME (pixel_V8HI_type_node) = tdecl;
20248 +  (*lang_hooks.decls.pushdecl) (tdecl);
20249  
20250    if (TARGET_PAIRED_FLOAT)
20251      paired_init_builtins ();
20252 @@ -15843,7 +15868,7 @@
20253  no_global_regs_above (int first, bool gpr)
20254  {
20255    int i;
20256 -  for (i = first; i < gpr ? 32 : 64 ; i++)
20257 +  for (i = first; i < (gpr ? 32 : 64); i++)
20258      if (global_regs[i])
20259        return false;
20260    return true;
20261 @@ -15869,11 +15894,11 @@
20262    int regno = gpr ? info->first_gp_reg_save : (info->first_fp_reg_save - 32);
20263    rtx sym;
20264    int select = ((savep ? 1 : 0) << 2
20265 -               | (gpr
20266 +               | (TARGET_SPE_ABI
20267                    /* On the SPE, we never have any FPRs, but we do have
20268                       32/64-bit versions of the routines.  */
20269 -                  ? (TARGET_SPE_ABI && info->spe_64bit_regs_used ? 1 : 0)
20270 -                  : 0) << 1
20271 +                  ? (info->spe_64bit_regs_used ? 1 : 0)
20272 +                  : (gpr ? 1 : 0)) << 1
20273                 | (exitp ? 1: 0));
20274  
20275    /* Don't generate bogus routine names.  */
20276 @@ -15908,6 +15933,7 @@
20277  
20278        sym = savres_routine_syms[regno-FIRST_SAVRES_REGISTER][select]
20279         = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
20280 +      SYMBOL_REF_FLAGS (sym) |= SYMBOL_FLAG_FUNCTION;
20281      }
20282  
20283    return sym;
20284 @@ -16098,6 +16124,14 @@
20285         savres_gprs_inline = savres_gprs_inline || using_multiple_p;
20286      }
20287  
20288 +  /* Code intended for use in shared libraries cannot be reliably linked
20289 +     with out-of-line prologues and epilogues.  */
20290 +  if (flag_pic)
20291 +    {
20292 +      savres_gprs_inline = 1;
20293 +      savres_fprs_inline = 1;
20294 +    }
20295 +
20296    return (using_multiple_p
20297           | (savres_fprs_inline << 1)
20298           | (savres_gprs_inline << 2));
20299 @@ -16122,7 +16156,7 @@
20300    int using_store_multiple;
20301    int using_static_chain_p = (cfun->static_chain_decl != NULL_TREE
20302                                && df_regs_ever_live_p (STATIC_CHAIN_REGNUM)
20303 -                              && !call_used_regs[STATIC_CHAIN_REGNUM]);
20304 +                              && call_used_regs[STATIC_CHAIN_REGNUM]);
20305    HOST_WIDE_INT sp_offset = 0;
20306  
20307    if (TARGET_FIX_AND_CONTINUE)
20308 @@ -16924,8 +16958,9 @@
20309                                  || (cfun->calls_alloca
20310                                      && !frame_pointer_needed));
20311    restore_lr = (info->lr_save_p
20312 -               && restoring_GPRs_inline
20313 -               && restoring_FPRs_inline);
20314 +               && (restoring_GPRs_inline
20315 +                   || (restoring_FPRs_inline
20316 +                       && info->first_fp_reg_save < 64)));
20317  
20318    if (WORLD_SAVE_P (info))
20319      {
20320 @@ -17197,7 +17232,7 @@
20321  
20322    /* Get the old lr if we saved it.  If we are restoring registers
20323       out-of-line, then the out-of-line routines can do this for us.  */
20324 -  if (restore_lr)
20325 +  if (restore_lr && restoring_GPRs_inline)
20326      {
20327        rtx mem = gen_frame_mem_offset (Pmode, frame_reg_rtx,
20328                                       info->lr_save_offset + sp_offset);
20329 @@ -17216,7 +17251,7 @@
20330      }
20331  
20332    /* Set LR here to try to overlap restores below.  */
20333 -  if (restore_lr)
20334 +  if (restore_lr && restoring_GPRs_inline)
20335      emit_move_insn (gen_rtx_REG (Pmode, LR_REGNO),
20336                     gen_rtx_REG (Pmode, 0));
20337  
20338 @@ -17396,6 +17431,18 @@
20339            }
20340      }
20341  
20342 +  if (restore_lr && !restoring_GPRs_inline)
20343 +    {
20344 +      rtx mem = gen_frame_mem_offset (Pmode, frame_reg_rtx,
20345 +                                     info->lr_save_offset + sp_offset);
20346 +
20347 +      emit_move_insn (gen_rtx_REG (Pmode, 0), mem);
20348 +    }
20349 +
20350 +  if (restore_lr && !restoring_GPRs_inline)
20351 +    emit_move_insn (gen_rtx_REG (Pmode, LR_REGNO),
20352 +                   gen_rtx_REG (Pmode, 0));
20353 +
20354    /* Restore fpr's if we need to do it without calling a function.  */
20355    if (restoring_FPRs_inline)
20356      for (i = 0; i < 64 - info->first_fp_reg_save; i++)
20357 @@ -22163,6 +22210,30 @@
20358      return 4 + rs6000_register_move_cost (mode, rclass, GENERAL_REGS);
20359  }
20360  
20361 +/* Return a value indicating whether OP, an operand of a commutative
20362 +   operation, is preferred as the first or second operand.  The higher
20363 +   the value, the stronger the preference for being the first operand.
20364 +   We use negative values to indicate a preference for the first operand
20365 +   and positive values for the second operand.
20366 +   VALUE is the default precedence for OP; see rtlanal.c:
20367 +   commutative_operand_precendece.  */
20368 +
20369 +static int
20370 +rs6000_commutative_operand_precedence (const_rtx op, int value)
20371 +{
20372 +  /* Prefer pointer objects over non pointer objects.
20373 +     For rationale see PR28690.  */
20374 +  if (GET_RTX_CLASS (GET_CODE (op)) == RTX_OBJ
20375 +      && ((REG_P (op) && REG_POINTER (op))
20376 +         || (MEM_P (op) && MEM_POINTER (op))))
20377 +    /* value = -1 */;
20378 +  else
20379 +    /* value = -2 */
20380 +    --value;
20381 +
20382 +  return value;
20383 +}
20384 +
20385  /* Returns a code for a target-specific builtin that implements
20386     reciprocal of the function, or NULL_TREE if not available.  */
20387  
20388 @@ -22686,12 +22757,16 @@
20389  static rtx
20390  rs6000_dwarf_register_span (rtx reg)
20391  {
20392 -  unsigned regno;
20393 +  rtx parts[8];
20394 +  int i, words;
20395 +  unsigned regno = REGNO (reg);
20396 +  enum machine_mode mode = GET_MODE (reg);
20397  
20398    if (TARGET_SPE
20399 +      && regno < 32
20400        && (SPE_VECTOR_MODE (GET_MODE (reg))
20401 -         || (TARGET_E500_DOUBLE
20402 -             && (GET_MODE (reg) == DFmode || GET_MODE (reg) == DDmode))))
20403 +         || (TARGET_E500_DOUBLE && FLOAT_MODE_P (mode)
20404 +             && mode != SFmode && mode != SDmode && mode != SCmode)))
20405      ;
20406    else
20407      return NULL_RTX;
20408 @@ -22701,15 +22776,23 @@
20409    /* The duality of the SPE register size wreaks all kinds of havoc.
20410       This is a way of distinguishing r0 in 32-bits from r0 in
20411       64-bits.  */
20412 -  return
20413 -    gen_rtx_PARALLEL (VOIDmode,
20414 -                     BYTES_BIG_ENDIAN
20415 -                     ? gen_rtvec (2,
20416 -                                  gen_rtx_REG (SImode, regno + 1200),
20417 -                                  gen_rtx_REG (SImode, regno))
20418 -                     : gen_rtvec (2,
20419 -                                  gen_rtx_REG (SImode, regno),
20420 -                                  gen_rtx_REG (SImode, regno + 1200)));
20421 +  words = (GET_MODE_SIZE (mode) + UNITS_PER_FP_WORD - 1) / UNITS_PER_FP_WORD;
20422 +  gcc_assert (words <= 4);
20423 +  for (i = 0; i < words; i++, regno++)
20424 +    {
20425 +      if (BYTES_BIG_ENDIAN)
20426 +       {
20427 +         parts[2 * i] = gen_rtx_REG (SImode, regno + 1200);
20428 +         parts[2 * i + 1] = gen_rtx_REG (SImode, regno);
20429 +       }
20430 +      else
20431 +       {
20432 +         parts[2 * i] = gen_rtx_REG (SImode, regno);
20433 +         parts[2 * i + 1] = gen_rtx_REG (SImode, regno + 1200);
20434 +       }
20435 +    }
20436 +
20437 +  return gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (words * 2, parts));
20438  }
20439  
20440  /* Fill in sizes for SPE register high parts in table used by unwinder.  */
20441 diff -Nur a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
20442 --- a/gcc/config/rs6000/rs6000.h        2009-04-10 01:23:07.000000000 +0200
20443 +++ b/gcc/config/rs6000/rs6000.h        2010-01-25 09:50:29.045688403 +0100
20444 @@ -368,16 +368,6 @@
20445      previous_group
20446    };
20447  
20448 -/* Support for a compile-time default CPU, et cetera.  The rules are:
20449 -   --with-cpu is ignored if -mcpu is specified.
20450 -   --with-tune is ignored if -mtune is specified.
20451 -   --with-float is ignored if -mhard-float or -msoft-float are
20452 -    specified.  */
20453 -#define OPTION_DEFAULT_SPECS \
20454 -  {"cpu", "%{!mcpu=*:-mcpu=%(VALUE)}" }, \
20455 -  {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \
20456 -  {"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" }
20457 -
20458  /* rs6000_select[0] is reserved for the default cpu defined via --with-cpu */
20459  struct rs6000_cpu_select
20460  {
20461 @@ -794,8 +784,8 @@
20462     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
20463     1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,         \
20464     /* AltiVec registers.  */                      \
20465 -   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
20466 -   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
20467 +   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
20468 +   1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
20469     1, 1                                                   \
20470     , 1, 1, 1                                       \
20471  }
20472 @@ -813,8 +803,8 @@
20473     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
20474     1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,         \
20475     /* AltiVec registers.  */                      \
20476 -   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
20477 -   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
20478 +   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
20479 +   1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
20480     0, 0                                                   \
20481     , 0, 0, 0                                       \
20482  }
20483 diff -Nur a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
20484 --- a/gcc/config/rs6000/rs6000.md       2009-04-01 18:22:17.000000000 +0200
20485 +++ b/gcc/config/rs6000/rs6000.md       2010-01-25 09:50:29.045688403 +0100
20486 @@ -14703,9 +14703,9 @@
20487    [(match_parallel 0 "any_parallel_operand"
20488                    [(clobber (reg:P 65))
20489                     (use (match_operand:P 1 "symbol_ref_operand" "s"))
20490 -                    (use (match_operand:P 2 "gpc_reg_operand" "r"))
20491 -                   (set (match_operand:P 3 "memory_operand" "=m")
20492 -                        (match_operand:P 4 "gpc_reg_operand" "r"))])]
20493 +                    (use (reg:P 11))
20494 +                   (set (match_operand:P 2 "memory_operand" "=m")
20495 +                        (match_operand:P 3 "gpc_reg_operand" "r"))])]
20496    ""
20497    "bl %z1"
20498    [(set_attr "type" "branch")
20499 @@ -14715,9 +14715,9 @@
20500    [(match_parallel 0 "any_parallel_operand"
20501                    [(clobber (reg:P 65))
20502                     (use (match_operand:P 1 "symbol_ref_operand" "s"))
20503 -                    (use (match_operand:P 2 "gpc_reg_operand" "r"))
20504 -                   (set (match_operand:DF 3 "memory_operand" "=m")
20505 -                        (match_operand:DF 4 "gpc_reg_operand" "f"))])]
20506 +                    (use (reg:P 11))
20507 +                   (set (match_operand:DF 2 "memory_operand" "=m")
20508 +                        (match_operand:DF 3 "gpc_reg_operand" "f"))])]
20509    ""
20510    "bl %z1"
20511    [(set_attr "type" "branch")
20512 @@ -14810,9 +14810,9 @@
20513   [(match_parallel 0 "any_parallel_operand"
20514                    [(clobber (match_operand:P 1 "register_operand" "=l"))
20515                     (use (match_operand:P 2 "symbol_ref_operand" "s"))
20516 -                   (use (match_operand:P 3 "gpc_reg_operand" "r"))
20517 -                  (set (match_operand:P 4 "gpc_reg_operand" "=r")
20518 -                       (match_operand:P 5 "memory_operand" "m"))])]
20519 +                   (use (reg:P 11))
20520 +                  (set (match_operand:P 3 "gpc_reg_operand" "=r")
20521 +                       (match_operand:P 4 "memory_operand" "m"))])]
20522   ""
20523   "bl %z2"
20524   [(set_attr "type" "branch")
20525 @@ -14823,9 +14823,9 @@
20526                    [(return)
20527                    (clobber (match_operand:P 1 "register_operand" "=l"))
20528                    (use (match_operand:P 2 "symbol_ref_operand" "s"))
20529 -                   (use (match_operand:P 3 "gpc_reg_operand" "r"))
20530 -                  (set (match_operand:P 4 "gpc_reg_operand" "=r")
20531 -                       (match_operand:P 5 "memory_operand" "m"))])]
20532 +                   (use (reg:P 11))
20533 +                  (set (match_operand:P 3 "gpc_reg_operand" "=r")
20534 +                       (match_operand:P 4 "memory_operand" "m"))])]
20535   ""
20536   "b %z2"
20537   [(set_attr "type" "branch")
20538 @@ -14836,9 +14836,9 @@
20539                    [(return)
20540                    (clobber (match_operand:P 1 "register_operand" "=l"))
20541                    (use (match_operand:P 2 "symbol_ref_operand" "s"))
20542 -                   (use (match_operand:P 3 "gpc_reg_operand" "r"))
20543 -                  (set (match_operand:DF 4 "gpc_reg_operand" "=f")
20544 -                       (match_operand:DF 5 "memory_operand" "m"))])]
20545 +                   (use (reg:P 11))
20546 +                  (set (match_operand:DF 3 "gpc_reg_operand" "=f")
20547 +                       (match_operand:DF 4 "memory_operand" "m"))])]
20548   ""
20549   "b %z2"
20550   [(set_attr "type" "branch")
20551 @@ -14889,6 +14889,120 @@
20552  }"
20553    [(set_attr "type" "load")])
20554  \f
20555 +;;; Expanders for vector insn patterns shared between the SPE and TARGET_PAIRED systems.
20556 +
20557 +(define_expand "absv2sf2"
20558 +  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
20559 +       (abs:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")))]
20560 +  "TARGET_PAIRED_FLOAT || TARGET_SPE"
20561 +  "
20562 +{
20563 +  if (TARGET_SPE)
20564 +    {
20565 +      /* We need to make a note that we clobber SPEFSCR.  */
20566 +      emit_insn (gen_rtx_SET (VOIDmode, operands[0],
20567 +                              gen_rtx_ABS (V2SFmode, operands[1])));
20568 +      emit_insn (gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO)));
20569 +      DONE;
20570 +    }
20571 +}")
20572 +
20573 +(define_expand "negv2sf2"
20574 +  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
20575 +       (neg:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")))]
20576 +  "TARGET_PAIRED_FLOAT || TARGET_SPE"
20577 +  "
20578 +{
20579 +  if (TARGET_SPE)
20580 +    {
20581 +      /* We need to make a note that we clobber SPEFSCR.  */
20582 +      emit_insn (gen_rtx_SET (VOIDmode, operands[0],
20583 +                              gen_rtx_NEG (V2SFmode, operands[1])));
20584 +      emit_insn (gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO)));
20585 +      DONE;
20586 +    }
20587 +}")
20588 +
20589 +(define_expand "addv2sf3"
20590 +  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
20591 +       (plus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")
20592 +                  (match_operand:V2SF 2 "gpc_reg_operand" "")))]
20593 +  "TARGET_PAIRED_FLOAT || TARGET_SPE"
20594 +  "
20595 +{
20596 +  if (TARGET_SPE)
20597 +    {
20598 +      /* We need to make a note that we clobber SPEFSCR.  */
20599 +      rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
20600 +
20601 +      XVECEXP (par, 0, 0) = gen_rtx_SET (VOIDmode, operands[0],
20602 +                                         gen_rtx_PLUS (V2SFmode, operands[1], operands[2]));
20603 +      XVECEXP (par, 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO));
20604 +      emit_insn (par);
20605 +      DONE;
20606 +    }
20607 +}")
20608 +
20609 +(define_expand "subv2sf3"
20610 +  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
20611 +       (minus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")
20612 +                   (match_operand:V2SF 2 "gpc_reg_operand" "")))]
20613 +  "TARGET_PAIRED_FLOAT || TARGET_SPE"
20614 +  "
20615 +{
20616 +  if (TARGET_SPE)
20617 +    {
20618 +      /* We need to make a note that we clobber SPEFSCR.  */
20619 +      rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
20620 +
20621 +      XVECEXP (par, 0, 0) = gen_rtx_SET (VOIDmode, operands[0],
20622 +                                         gen_rtx_MINUS (V2SFmode, operands[1], operands[2]));
20623 +      XVECEXP (par, 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO));
20624 +      emit_insn (par);
20625 +      DONE;
20626 +    }
20627 +}")
20628 +
20629 +(define_expand "mulv2sf3"
20630 +  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
20631 +       (mult:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")
20632 +                  (match_operand:V2SF 2 "gpc_reg_operand" "")))]
20633 +  "TARGET_PAIRED_FLOAT || TARGET_SPE"
20634 +  "
20635 +{
20636 +  if (TARGET_SPE)
20637 +    {
20638 +      /* We need to make a note that we clobber SPEFSCR.  */
20639 +      rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
20640 +
20641 +      XVECEXP (par, 0, 0) = gen_rtx_SET (VOIDmode, operands[0],
20642 +                                         gen_rtx_MULT (V2SFmode, operands[1], operands[2]));
20643 +      XVECEXP (par, 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO));
20644 +      emit_insn (par);
20645 +      DONE;
20646 +    }
20647 +}")
20648 +
20649 +(define_expand "divv2sf3"
20650 +  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
20651 +       (div:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")
20652 +                 (match_operand:V2SF 2 "gpc_reg_operand" "")))]
20653 +  "TARGET_PAIRED_FLOAT || TARGET_SPE"
20654 +  "
20655 +{
20656 +  if (TARGET_SPE)
20657 +    {
20658 +      /* We need to make a note that we clobber SPEFSCR.  */
20659 +      rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
20660 +
20661 +      XVECEXP (par, 0, 0) = gen_rtx_SET (VOIDmode, operands[0],
20662 +                                         gen_rtx_DIV (V2SFmode, operands[1], operands[2]));
20663 +      XVECEXP (par, 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO));
20664 +      emit_insn (par);
20665 +      DONE;
20666 +    }
20667 +}")
20668 +\f
20669  
20670  (include "sync.md")
20671  (include "altivec.md")
20672 diff -Nur a/gcc/config/rs6000/spe.md b/gcc/config/rs6000/spe.md
20673 --- a/gcc/config/rs6000/spe.md  2009-02-20 16:20:38.000000000 +0100
20674 +++ b/gcc/config/rs6000/spe.md  2010-01-25 09:50:29.045688403 +0100
20675 @@ -164,7 +164,7 @@
20676  
20677  ;; SPE SIMD instructions
20678  
20679 -(define_insn "spe_evabs"
20680 +(define_insn "absv2si2"
20681    [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
20682         (abs:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
20683    "TARGET_SPE"
20684 @@ -181,7 +181,7 @@
20685    [(set_attr "type" "vecsimple")
20686     (set_attr  "length" "4")])
20687  
20688 -(define_insn "spe_evand"
20689 +(define_insn "andv2si3"
20690    [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
20691          (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
20692                   (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
20693 @@ -1898,7 +1898,7 @@
20694    [(set_attr "type" "veccomplex")
20695     (set_attr  "length" "4")])
20696  
20697 -(define_insn "spe_evaddw"
20698 +(define_insn "addv2si3"
20699    [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
20700          (plus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
20701                    (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
20702 @@ -2028,7 +2028,7 @@
20703    [(set_attr "type" "veccomplex")
20704     (set_attr  "length" "4")])
20705  
20706 -(define_insn "spe_evdivws"
20707 +(define_insn "divv2si3"
20708    [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
20709          (div:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
20710                   (match_operand:V2SI 2 "gpc_reg_operand" "r")))
20711 @@ -3156,9 +3156,9 @@
20712    [(match_parallel 0 "any_parallel_operand"
20713                    [(clobber (reg:P 65))
20714                     (use (match_operand:P 1 "symbol_ref_operand" "s"))
20715 -                   (use (match_operand:P 2 "gpc_reg_operand" "r"))
20716 -                   (set (match_operand:V2SI 3 "memory_operand" "=m")
20717 -                        (match_operand:V2SI 4 "gpc_reg_operand" "r"))])]
20718 +                   (use (reg:P 11))
20719 +                   (set (match_operand:V2SI 2 "memory_operand" "=m")
20720 +                        (match_operand:V2SI 3 "gpc_reg_operand" "r"))])]
20721    "TARGET_SPE_ABI"
20722    "bl %z1"
20723    [(set_attr "type" "branch")
20724 @@ -3168,9 +3168,9 @@
20725   [(match_parallel 0 "any_parallel_operand"
20726                   [(clobber (reg:P 65))
20727                    (use (match_operand:P 1 "symbol_ref_operand" "s"))
20728 -                  (use (match_operand:P 2 "gpc_reg_operand" "r"))
20729 -                  (set (match_operand:V2SI 3 "gpc_reg_operand" "=r")
20730 -                       (match_operand:V2SI 4 "memory_operand" "m"))])]
20731 +                  (use (reg:P 11))
20732 +                  (set (match_operand:V2SI 2 "gpc_reg_operand" "=r")
20733 +                       (match_operand:V2SI 3 "memory_operand" "m"))])]
20734   "TARGET_SPE_ABI"
20735   "bl %z1"
20736   [(set_attr "type" "branch")
20737 @@ -3181,9 +3181,9 @@
20738                   [(return)
20739                    (clobber (reg:P 65))
20740                    (use (match_operand:P 1 "symbol_ref_operand" "s"))
20741 -                  (use (match_operand:P 2 "gpc_reg_operand" "r"))
20742 -                  (set (match_operand:V2SI 3 "gpc_reg_operand" "=r")
20743 -                       (match_operand:V2SI 4 "memory_operand" "m"))])]
20744 +                  (use (reg:P 11))
20745 +                  (set (match_operand:V2SI 2 "gpc_reg_operand" "=r")
20746 +                       (match_operand:V2SI 3 "memory_operand" "m"))])]
20747   "TARGET_SPE_ABI"
20748   "b %z1"
20749   [(set_attr "type" "branch")
20750 diff -Nur a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
20751 --- a/gcc/config/rs6000/sysv4.h 2009-04-10 01:23:07.000000000 +0200
20752 +++ b/gcc/config/rs6000/sysv4.h 2010-01-25 09:50:29.045688403 +0100
20753 @@ -619,6 +619,9 @@
20754  #define CC1_SECURE_PLT_DEFAULT_SPEC ""
20755  #endif
20756  
20757 +#undef CC1_EXTRA_SPEC
20758 +#define CC1_EXTRA_SPEC ""
20759 +
20760  /* Pass -G xxx to the compiler and set correct endian mode.  */
20761  #define        CC1_SPEC "%{G*} %(cc1_cpu) \
20762  %{mlittle|mlittle-endian: %(cc1_endian_little);           \
20763 @@ -643,7 +646,7 @@
20764  %{msdata: -msdata=default} \
20765  %{mno-sdata: -msdata=none} \
20766  %{!mbss-plt: %{!msecure-plt: %(cc1_secure_plt_default)}} \
20767 -%{profile: -p}"
20768 +%{profile: -p}" CC1_EXTRA_SPEC
20769  
20770  /* Don't put -Y P,<path> for cross compilers.  */
20771  #ifndef CROSS_DIRECTORY_STRUCTURE
20772 @@ -843,15 +846,15 @@
20773  #define CPP_OS_MVME_SPEC ""
20774  
20775  /* PowerPC simulator based on netbsd system calls support.  */
20776 -#define LIB_SIM_SPEC "--start-group -lsim -lc --end-group"
20777 +#define LIB_SIM_SPEC LIB_DEFAULT_SPEC
20778  
20779 -#define        STARTFILE_SIM_SPEC "ecrti.o%s sim-crt0.o%s crtbegin.o%s"
20780 +#define        STARTFILE_SIM_SPEC "ecrti.o%s crtbegin.o%s"
20781  
20782 -#define        ENDFILE_SIM_SPEC "crtend.o%s ecrtn.o%s"
20783 +#define        ENDFILE_SIM_SPEC "crtend.o%s ecrtn.o%s -Tsim-hosted.ld"
20784  
20785  #define LINK_START_SIM_SPEC ""
20786  
20787 -#define LINK_OS_SIM_SPEC "-m elf32ppcsim"
20788 +#define LINK_OS_SIM_SPEC ""
20789  
20790  #define CPP_OS_SIM_SPEC ""
20791  
20792 diff -Nur a/gcc/config/rs6000/t-cs-eabi b/gcc/config/rs6000/t-cs-eabi
20793 --- a/gcc/config/rs6000/t-cs-eabi       1970-01-01 01:00:00.000000000 +0100
20794 +++ b/gcc/config/rs6000/t-cs-eabi       2010-01-25 09:50:29.045688403 +0100
20795 @@ -0,0 +1,17 @@
20796 +# Multilibs for powerpc embedded ELF targets.
20797 +
20798 +MULTILIB_OPTIONS       = te500v1/te500v2/te600/te500mc \
20799 +                         msoft-float
20800 +
20801 +MULTILIB_DIRNAMES      = te500v1 te500v2 te600 te500mc \
20802 +                         nof
20803 +
20804 +MULTILIB_EXCEPTIONS    = *te600*/*msoft-float* \
20805 +                         *te500v1*/*msoft-float* \
20806 +                         *te500v2*/*msoft-float* \
20807 +                         *te500mc*/*msoft-float*
20808 +
20809 +MULTILIB_EXTRA_OPTS    = mno-eabi mstrict-align
20810 +
20811 +MULTILIB_MATCHES       = ${MULTILIB_MATCHES_FLOAT} \
20812 +                         ${MULTILIB_MATCHES_ENDIAN}
20813 diff -Nur a/gcc/config/rs6000/t-cs-eabi-lite b/gcc/config/rs6000/t-cs-eabi-lite
20814 --- a/gcc/config/rs6000/t-cs-eabi-lite  1970-01-01 01:00:00.000000000 +0100
20815 +++ b/gcc/config/rs6000/t-cs-eabi-lite  2010-01-25 09:50:29.045688403 +0100
20816 @@ -0,0 +1,16 @@
20817 +# Multilibs for powerpc embedded ELF targets.
20818 +
20819 +MULTILIB_OPTIONS       = te500v1/te500v2/te600 \
20820 +                         msoft-float
20821 +
20822 +MULTILIB_DIRNAMES      = te500v1 te500v2 te600 \
20823 +                         nof
20824 +
20825 +MULTILIB_EXCEPTIONS    = *te600*/*msoft-float* \
20826 +                         *te500v1*/*msoft-float* \
20827 +                         *te500v2*/*msoft-float*
20828 +
20829 +MULTILIB_EXTRA_OPTS    = mno-eabi mstrict-align
20830 +
20831 +MULTILIB_MATCHES       = ${MULTILIB_MATCHES_FLOAT} \
20832 +                         ${MULTILIB_MATCHES_ENDIAN}
20833 diff -Nur a/gcc/config/rs6000/t-cs-linux b/gcc/config/rs6000/t-cs-linux
20834 --- a/gcc/config/rs6000/t-cs-linux      1970-01-01 01:00:00.000000000 +0100
20835 +++ b/gcc/config/rs6000/t-cs-linux      2010-01-25 09:50:29.045688403 +0100
20836 @@ -0,0 +1,12 @@
20837 +# Multilibs for powerpc-linux-gnu targets.
20838 +
20839 +MULTILIB_OPTIONS       = te500v1/te500v2/te600/te500mc \
20840 +                         msoft-float
20841 +
20842 +MULTILIB_DIRNAMES      = te500v1 te500v2 te600 te500mc \
20843 +                         nof
20844 +
20845 +MULTILIB_EXCEPTIONS    = *te600*/*msoft-float* \
20846 +                         *te500v1*/*msoft-float* \
20847 +                         *te500v2*/*msoft-float* \
20848 +                         *te500mc*/*msoft-float*
20849 diff -Nur a/gcc/config/rs6000/t-montavista-linux b/gcc/config/rs6000/t-montavista-linux
20850 --- a/gcc/config/rs6000/t-montavista-linux      1970-01-01 01:00:00.000000000 +0100
20851 +++ b/gcc/config/rs6000/t-montavista-linux      2010-01-25 09:50:29.045688403 +0100
20852 @@ -0,0 +1,26 @@
20853 +# MontaVista GNU/Linux Configuration.
20854 +# Copyright (C) 2009
20855 +# Free Software Foundation, Inc.
20856 +#
20857 +# This file is part of GCC.
20858 +#
20859 +# GCC is free software; you can redistribute it and/or modify
20860 +# it under the terms of the GNU General Public License as published by
20861 +# the Free Software Foundation; either version 3, or (at your option)
20862 +# any later version.
20863 +# 
20864 +# GCC is distributed in the hope that it will be useful,
20865 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
20866 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20867 +# GNU General Public License for more details.
20868 +#
20869 +# You should have received a copy of the GNU General Public License
20870 +# along with GCC; see the file COPYING3.  If not see
20871 +# <http://www.gnu.org/licenses/>.
20872 +
20873 +# Build hard-float, soft-float, E500mc, E500v2 and E600
20874 +# libraries.
20875 +MULTILIB_OPTIONS = msoft-float/te500mc/te500v2/te600
20876 +MULTILIB_DIRNAMES = soft-float te500mc te500v2 te600
20877 +MULTILIB_EXCEPTIONS =
20878 +MULTILIB_OSDIRNAMES = msoft-float=!soft-float
20879 diff -Nur a/gcc/config/rs6000/t-ppccomm b/gcc/config/rs6000/t-ppccomm
20880 --- a/gcc/config/rs6000/t-ppccomm       2008-06-26 22:12:41.000000000 +0200
20881 +++ b/gcc/config/rs6000/t-ppccomm       2010-01-25 09:50:29.045688403 +0100
20882 @@ -3,10 +3,23 @@
20883  LIB2FUNCS_EXTRA += tramp.S $(srcdir)/config/rs6000/darwin-ldouble.c
20884  
20885  # These can't end up in shared libgcc
20886 -LIB2FUNCS_STATIC_EXTRA = eabi.S
20887 -
20888 -eabi.S: $(srcdir)/config/rs6000/eabi.asm
20889 -       cat $(srcdir)/config/rs6000/eabi.asm > eabi.S
20890 +LIB2FUNCS_STATIC_EXTRA = \
20891 +  crtsavfpr.S crtresfpr.S \
20892 +  crtsavgpr.S crtresgpr.S \
20893 +  crtresxfpr.S crtresxgpr.S \
20894 +  e500crtres32gpr.S \
20895 +  e500crtres64gpr.S \
20896 +  e500crtres64gprctr.S \
20897 +  e500crtrest32gpr.S \
20898 +  e500crtrest64gpr.S \
20899 +  e500crtresx32gpr.S \
20900 +  e500crtresx64gpr.S \
20901 +  e500crtsav32gpr.S \
20902 +  e500crtsav64gpr.S \
20903 +  e500crtsav64gprctr.S \
20904 +  e500crtsavg32gpr.S \
20905 +  e500crtsavg64gpr.S \
20906 +  e500crtsavg64gprctr.S
20907  
20908  tramp.S: $(srcdir)/config/rs6000/tramp.asm
20909         cat $(srcdir)/config/rs6000/tramp.asm > tramp.S
20910 @@ -36,6 +49,63 @@
20911  ncrtn.S: $(srcdir)/config/rs6000/sol-cn.asm
20912         cat $(srcdir)/config/rs6000/sol-cn.asm >ncrtn.S
20913  
20914 +crtsavfpr.S: $(srcdir)/config/rs6000/crtsavfpr.asm
20915 +       cat $(srcdir)/config/rs6000/crtsavfpr.asm >crtsavfpr.S
20916 +
20917 +crtresfpr.S: $(srcdir)/config/rs6000/crtresfpr.asm
20918 +       cat $(srcdir)/config/rs6000/crtresfpr.asm >crtresfpr.S
20919 +
20920 +crtsavgpr.S: $(srcdir)/config/rs6000/crtsavgpr.asm
20921 +       cat $(srcdir)/config/rs6000/crtsavgpr.asm >crtsavgpr.S
20922 +
20923 +crtresgpr.S: $(srcdir)/config/rs6000/crtresgpr.asm
20924 +       cat $(srcdir)/config/rs6000/crtresgpr.asm >crtresgpr.S
20925 +
20926 +crtresxfpr.S: $(srcdir)/config/rs6000/crtresxfpr.asm
20927 +       cat $(srcdir)/config/rs6000/crtresxfpr.asm >crtresxfpr.S
20928 +
20929 +crtresxgpr.S: $(srcdir)/config/rs6000/crtresxgpr.asm
20930 +       cat $(srcdir)/config/rs6000/crtresxgpr.asm >crtresxgpr.S
20931 +
20932 +e500crtres32gpr.S: $(srcdir)/config/rs6000/e500crtres32gpr.asm
20933 +       cat $(srcdir)/config/rs6000/e500crtres32gpr.asm >e500crtres32gpr.S
20934 +
20935 +e500crtres64gpr.S: $(srcdir)/config/rs6000/e500crtres64gpr.asm
20936 +       cat $(srcdir)/config/rs6000/e500crtres64gpr.asm >e500crtres64gpr.S
20937 +
20938 +e500crtres64gprctr.S: $(srcdir)/config/rs6000/e500crtres64gprctr.asm
20939 +       cat $(srcdir)/config/rs6000/e500crtres64gprctr.asm >e500crtres64gprctr.S
20940 +
20941 +e500crtrest32gpr.S: $(srcdir)/config/rs6000/e500crtrest32gpr.asm
20942 +       cat $(srcdir)/config/rs6000/e500crtrest32gpr.asm >e500crtrest32gpr.S
20943 +
20944 +e500crtrest64gpr.S: $(srcdir)/config/rs6000/e500crtrest64gpr.asm
20945 +       cat $(srcdir)/config/rs6000/e500crtrest64gpr.asm >e500crtrest64gpr.S
20946 +
20947 +e500crtresx32gpr.S: $(srcdir)/config/rs6000/e500crtresx32gpr.asm
20948 +       cat $(srcdir)/config/rs6000/e500crtresx32gpr.asm >e500crtresx32gpr.S
20949 +
20950 +e500crtresx64gpr.S: $(srcdir)/config/rs6000/e500crtresx64gpr.asm
20951 +       cat $(srcdir)/config/rs6000/e500crtresx64gpr.asm >e500crtresx64gpr.S
20952 +
20953 +e500crtsav32gpr.S: $(srcdir)/config/rs6000/e500crtsav32gpr.asm
20954 +       cat $(srcdir)/config/rs6000/e500crtsav32gpr.asm >e500crtsav32gpr.S
20955 +
20956 +e500crtsav64gpr.S: $(srcdir)/config/rs6000/e500crtsav64gpr.asm
20957 +       cat $(srcdir)/config/rs6000/e500crtsav64gpr.asm >e500crtsav64gpr.S
20958 +
20959 +e500crtsav64gprctr.S: $(srcdir)/config/rs6000/e500crtsav64gprctr.asm
20960 +       cat $(srcdir)/config/rs6000/e500crtsav64gprctr.asm >e500crtsav64gprctr.S
20961 +
20962 +e500crtsavg32gpr.S: $(srcdir)/config/rs6000/e500crtsavg32gpr.asm
20963 +       cat $(srcdir)/config/rs6000/e500crtsavg32gpr.asm >e500crtsavg32gpr.S
20964 +
20965 +e500crtsavg64gpr.S: $(srcdir)/config/rs6000/e500crtsavg64gpr.asm
20966 +       cat $(srcdir)/config/rs6000/e500crtsavg64gpr.asm >e500crtsavg64gpr.S
20967 +
20968 +e500crtsavg64gprctr.S: $(srcdir)/config/rs6000/e500crtsavg64gprctr.asm
20969 +       cat $(srcdir)/config/rs6000/e500crtsavg64gprctr.asm >e500crtsavg64gprctr.S
20970 +
20971  # Build multiple copies of ?crt{i,n}.o, one for each target switch.
20972  $(T)ecrti$(objext): ecrti.S
20973         $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c ecrti.S -o $(T)ecrti$(objext)
20974 @@ -49,6 +119,63 @@
20975  $(T)ncrtn$(objext): ncrtn.S
20976         $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c ncrtn.S -o $(T)ncrtn$(objext)
20977  
20978 +$(T)crtsavfpr$(objext): crtsavfpr.S
20979 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtsavfpr.S -o $(T)crtsavfpr$(objext)
20980 +
20981 +$(T)crtresfpr$(objext): crtresfpr.S
20982 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresfpr.S -o $(T)crtresfpr$(objext)
20983 +
20984 +$(T)crtsavgpr$(objext): crtsavgpr.S
20985 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtsavgpr.S -o $(T)crtsavgpr$(objext)
20986 +
20987 +$(T)crtresgpr$(objext): crtresgpr.S
20988 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresgpr.S -o $(T)crtresgpr$(objext)
20989 +
20990 +$(T)crtresxfpr$(objext): crtresxfpr.S
20991 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresxfpr.S -o $(T)crtresxfpr$(objext)
20992 +
20993 +$(T)crtresxgpr$(objext): crtresxgpr.S
20994 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresxgpr.S -o $(T)crtresxgpr$(objext)
20995 +
20996 +$(T)e500crtres32gpr$(objext): e500crtres32gpr.S
20997 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtres32gpr.S -o $(T)e500crtres32gpr$(objext)
20998 +
20999 +$(T)e500crtres64gpr$(objext): e500crtres64gpr.S
21000 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtres64gpr.S -o $(T)e500crtres64gpr$(objext)
21001 +
21002 +$(T)e500crtres64gprctr$(objext): e500crtres64gprctr.S
21003 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtres64gprctr.S -o $(T)e500crtres64gprctr$(objext)
21004 +
21005 +$(T)e500crtrest32gpr$(objext): e500crtrest32gpr.S
21006 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtrest32gpr.S -o $(T)e500crtrest32gpr$(objext)
21007 +
21008 +$(T)e500crtrest64gpr$(objext): e500crtrest64gpr.S
21009 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtrest64gpr.S -o $(T)e500crtrest64gpr$(objext)
21010 +
21011 +$(T)e500crtresx32gpr$(objext): e500crtresx32gpr.S
21012 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtresx32gpr.S -o $(T)e500crtresx32gpr$(objext)
21013 +
21014 +$(T)e500crtresx64gpr$(objext): e500crtresx64gpr.S
21015 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtresx64gpr.S -o $(T)e500crtresx64gpr$(objext)
21016 +
21017 +$(T)e500crtsav32gpr$(objext): e500crtsav32gpr.S
21018 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsav32gpr.S -o $(T)e500crtsav32gpr$(objext)
21019 +
21020 +$(T)e500crtsav64gpr$(objext): e500crtsav64gpr.S
21021 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsav64gpr.S -o $(T)e500crtsav64gpr$(objext)
21022 +
21023 +$(T)e500crtsav64gprctr$(objext): e500crtsav64gprctr.S
21024 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsav64gprctr.S -o $(T)e500crtsav64gprctr$(objext)
21025 +
21026 +$(T)e500crtsavg32gpr$(objext): e500crtsavg32gpr.S
21027 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsavg32gpr.S -o $(T)e500crtsavg32gpr$(objext)
21028 +
21029 +$(T)e500crtsavg64gpr$(objext): e500crtsavg64gpr.S
21030 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsavg64gpr.S -o $(T)e500crtsavg64gpr$(objext)
21031 +
21032 +$(T)e500crtsavg64gprctr$(objext): e500crtsavg64gprctr.S
21033 +       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsavg64gprctr.S -o $(T)e500crtsavg64gprctr$(objext)
21034 +
21035  # It is important that crtbegin.o, etc., aren't surprised by stuff in .sdata.
21036  CRTSTUFF_T_CFLAGS = -msdata=none
21037  # Make sure crt*.o are built with -fPIC even if configured with 
21038 diff -Nur a/gcc/config/rs6000/t-ppc-e500mc b/gcc/config/rs6000/t-ppc-e500mc
21039 --- a/gcc/config/rs6000/t-ppc-e500mc    1970-01-01 01:00:00.000000000 +0100
21040 +++ b/gcc/config/rs6000/t-ppc-e500mc    2010-01-25 09:50:29.045688403 +0100
21041 @@ -0,0 +1,12 @@
21042 +# Multilibs for powerpc embedded ELF targets.
21043 +
21044 +MULTILIB_OPTIONS       = 
21045 +
21046 +MULTILIB_DIRNAMES      = 
21047 +
21048 +MULTILIB_EXCEPTIONS    = 
21049 +
21050 +MULTILIB_EXTRA_OPTS    = mno-eabi mstrict-align
21051 +
21052 +MULTILIB_MATCHES       = ${MULTILIB_MATCHES_FLOAT} \
21053 +                         ${MULTILIB_MATCHES_ENDIAN}
21054 diff -Nur a/gcc/config/rs6000/t-wrs-linux b/gcc/config/rs6000/t-wrs-linux
21055 --- a/gcc/config/rs6000/t-wrs-linux     1970-01-01 01:00:00.000000000 +0100
21056 +++ b/gcc/config/rs6000/t-wrs-linux     2010-01-25 09:50:29.045688403 +0100
21057 @@ -0,0 +1,30 @@
21058 +# Wind River GNU/Linux Configuration.
21059 +# Copyright (C) 2006, 2007
21060 +# Free Software Foundation, Inc.
21061 +#
21062 +# This file is part of GCC.
21063 +#
21064 +# GCC is free software; you can redistribute it and/or modify
21065 +# it under the terms of the GNU General Public License as published by
21066 +# the Free Software Foundation; either version 3, or (at your option)
21067 +# any later version.
21068 +# 
21069 +# GCC is distributed in the hope that it will be useful,
21070 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
21071 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21072 +# GNU General Public License for more details.
21073 +#
21074 +# You should have received a copy of the GNU General Public License
21075 +# along with GCC; see the file COPYING3.  If not see
21076 +# <http://www.gnu.org/licenses/>.
21077 +
21078 +# Build hard-float (32-bit and 64-bit), soft-float, E500v1 and E500v2
21079 +# libraries.
21080 +MULTILIB_OPTIONS = muclibc m64 msoft-float te500v1 te500v2
21081 +MULTILIB_DIRNAMES = uclibc 64 soft-float te500v1 te500v2
21082 +MULTILIB_EXCEPTIONS = *muclibc*/*m64* *muclibc*/*msoft-float*
21083 +MULTILIB_EXCEPTIONS += *muclibc*/*te500v1* *muclibc*/*te500v2*
21084 +MULTILIB_EXCEPTIONS += *m64*/*msoft-float* *m64*/*te500v1* *m64*/*te500v2*
21085 +MULTILIB_EXCEPTIONS += *msoft-float*/*te500v1* *msoft-float*/*te500v2*
21086 +MULTILIB_EXCEPTIONS += *te500v1*/*te500v2*
21087 +MULTILIB_OSDIRNAMES = muclibc=!uclibc m64=../lib64 msoft-float=!soft-float
21088 diff -Nur a/gcc/config/rs6000/wrs-linux.h b/gcc/config/rs6000/wrs-linux.h
21089 --- a/gcc/config/rs6000/wrs-linux.h     1970-01-01 01:00:00.000000000 +0100
21090 +++ b/gcc/config/rs6000/wrs-linux.h     2010-01-25 09:50:29.045688403 +0100
21091 @@ -0,0 +1,44 @@
21092 +/* Wind River GNU/Linux Configuration.
21093 +   Copyright (C) 2006, 2007
21094 +   Free Software Foundation, Inc.
21095 +
21096 +This file is part of GCC.
21097 +
21098 +GCC is free software; you can redistribute it and/or modify
21099 +it under the terms of the GNU General Public License as published by
21100 +the Free Software Foundation; either version 3, or (at your option)
21101 +any later version.
21102 +
21103 +GCC is distributed in the hope that it will be useful,
21104 +but WITHOUT ANY WARRANTY; without even the implied warranty of
21105 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21106 +GNU General Public License for more details.
21107 +
21108 +You should have received a copy of the GNU General Public License
21109 +along with GCC; see the file COPYING3.  If not see
21110 +<http://www.gnu.org/licenses/>.  */
21111 +
21112 +/* Add -te500v1 and -te500v2 options for convenience in generating
21113 +   multilibs.  */
21114 +#undef CC1_EXTRA_SPEC
21115 +#define CC1_EXTRA_SPEC "%{te500v1: -mcpu=8540 -mfloat-gprs=single -mspe=yes -mabi=spe} %{te500v2: -mcpu=8548 -mfloat-gprs=double -mspe=yes -mabi=spe}"
21116 +
21117 +#undef ASM_DEFAULT_SPEC
21118 +#define ASM_DEFAULT_SPEC                       \
21119 +  "%{te500v1:-mppc -mspe -me500 ;              \
21120 +     te500v2:-mppc -mspe -me500 ;              \
21121 +     :-mppc%{m64:64}}"
21122 +
21123 +/* The GLIBC headers are in /usr/include, relative to the sysroot; the
21124 +   uClibc headers are in /uclibc/usr/include.  */
21125 +#undef SYSROOT_HEADERS_SUFFIX_SPEC
21126 +#define SYSROOT_HEADERS_SUFFIX_SPEC            \
21127 +  "%{muclibc:/uclibc}" 
21128 +
21129 +/* The various C libraries each have their own subdirectory.  */
21130 +#undef SYSROOT_SUFFIX_SPEC
21131 +#define SYSROOT_SUFFIX_SPEC                    \
21132 +  "%{muclibc:/uclibc ;                         \
21133 +     msoft-float:/soft-float ;                 \
21134 +     te500v1:/te500v1 ;                                \
21135 +     te500v2:/te500v2}"
21136 diff -Nur a/gcc/config/sh/cs-sgxxlite-linux.h b/gcc/config/sh/cs-sgxxlite-linux.h
21137 --- a/gcc/config/sh/cs-sgxxlite-linux.h 1970-01-01 01:00:00.000000000 +0100
21138 +++ b/gcc/config/sh/cs-sgxxlite-linux.h 2010-01-25 09:50:29.045688403 +0100
21139 @@ -0,0 +1,31 @@
21140 +/* SH SourceryG++ GNU/Linux Configuration.
21141 +   Copyright (C) 2008
21142 +   Free Software Foundation, Inc.
21143 +
21144 +This file is part of GCC.
21145 +
21146 +GCC is free software; you can redistribute it and/or modify
21147 +it under the terms of the GNU General Public License as published by
21148 +the Free Software Foundation; either version 3, or (at your option)
21149 +any later version.
21150 +
21151 +GCC is distributed in the hope that it will be useful,
21152 +but WITHOUT ANY WARRANTY; without even the implied warranty of
21153 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21154 +GNU General Public License for more details.
21155 +
21156 +You should have received a copy of the GNU General Public License
21157 +along with GCC; see the file COPYING3.  If not see
21158 +<http://www.gnu.org/licenses/>.  */
21159 +
21160 +#undef SYSROOT_HEADERS_SUFFIX_SPEC
21161 +#define SYSROOT_HEADERS_SUFFIX_SPEC \
21162 +  "%{muclibc:/uclibc}"
21163 +
21164 +#undef SUBTARGET_OVERRIDE_OPTIONS
21165 +#define SUBTARGET_OVERRIDE_OPTIONS                                     \
21166 +do {                                                                   \
21167 +  /* __thread_support is not supported by uClibc.  */                  \
21168 +  if (linux_uclibc)                                            \
21169 +    targetm.have_tls = 0;                                              \
21170 +} while (0)
21171 diff -Nur a/gcc/config/sh/cs-sgxxlite-linux.opt b/gcc/config/sh/cs-sgxxlite-linux.opt
21172 --- a/gcc/config/sh/cs-sgxxlite-linux.opt       1970-01-01 01:00:00.000000000 +0100
21173 +++ b/gcc/config/sh/cs-sgxxlite-linux.opt       2010-01-25 09:50:29.045688403 +0100
21174 @@ -0,0 +1,23 @@
21175 +; Options for SH SourceryG++ GNU/Linux
21176 +
21177 +; Copyright (C) 2009 Free Software Foundation, Inc.
21178 +;
21179 +; This file is part of GCC.
21180 +;
21181 +; GCC is free software; you can redistribute it and/or modify it under
21182 +; the terms of the GNU General Public License as published by the Free
21183 +; Software Foundation; either version 3, or (at your option) any later
21184 +; version.
21185 +;
21186 +; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
21187 +; WARRANTY; without even the implied warranty of MERCHANTABILITY or
21188 +; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
21189 +; for more details.
21190 +;
21191 +; You should have received a copy of the GNU General Public License
21192 +; along with GCC; see the file COPYING3.  If not see
21193 +; <http://www.gnu.org/licenses/>.
21194 +
21195 +muclibc
21196 +Target RejectNegative Var(building_for_uclibc)
21197 +Building with -muclibc
21198 diff -Nur a/gcc/config/sh/lib1funcs.asm b/gcc/config/sh/lib1funcs.asm
21199 --- a/gcc/config/sh/lib1funcs.asm       2009-04-10 01:23:07.000000000 +0200
21200 +++ b/gcc/config/sh/lib1funcs.asm       2010-01-25 09:50:29.045688403 +0100
21201 @@ -2080,8 +2080,9 @@
21202  GLOBAL(ic_invalidate):
21203         ocbwb   @r4
21204         synco
21205 -       rts
21206         icbi    @r4
21207 +       rts
21208 +         nop
21209         ENDFUNC(GLOBAL(ic_invalidate))
21210  #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) || (defined(__SH4_NOFPU__) && !defined(__SH5__))
21211         /* For system code, we use ic_invalidate_line_i, but user code
21212 @@ -2147,8 +2148,10 @@
21213  GLOBAL(ic_invalidate_array):
21214         add     r1,r4
21215         synco
21216 -       rts
21217         icbi    @r4
21218 +       rts
21219 +         nop
21220 +       .align 2
21221         .long   0
21222         ENDFUNC(GLOBAL(ic_invalidate_array))
21223  #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) || (defined(__SH4_NOFPU__) && !defined(__SH5__))
21224 diff -Nur a/gcc/config/sh/linux-unwind.h b/gcc/config/sh/linux-unwind.h
21225 --- a/gcc/config/sh/linux-unwind.h      2009-04-10 01:23:07.000000000 +0200
21226 +++ b/gcc/config/sh/linux-unwind.h      2010-01-25 09:50:29.045688403 +0100
21227 @@ -24,7 +24,10 @@
21228  
21229  
21230  /* Do code reading to identify a signal frame, and set the frame
21231 -   state data appropriately.  See unwind-dw2.c for the structs.  */
21232 +   state data appropriately.  See unwind-dw2.c for the structs.
21233 +   Don't use this at all if inhibit_libc is used.  */
21234 +
21235 +#ifndef inhibit_libc
21236  
21237  #include <signal.h>
21238  #include <sys/ucontext.h>
21239 @@ -248,3 +251,5 @@
21240    return _URC_NO_REASON;
21241  }
21242  #endif /* defined (__SH5__) */
21243 +
21244 +#endif /* inhibit_libc */
21245 diff -Nur a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
21246 --- a/gcc/config/sh/sh.h        2008-11-14 12:46:55.000000000 +0100
21247 +++ b/gcc/config/sh/sh.h        2010-01-25 09:50:29.045688403 +0100
21248 @@ -712,8 +712,9 @@
21249        /* Never run scheduling before reload, since that can            \
21250          break global alloc, and generates slower code anyway due       \
21251          to the pressure on R0.  */                                     \
21252 -      /* Enable sched1 for SH4; ready queue will be reordered by       \
21253 -        the target hooks when pressure is high. We can not do this for \
21254 +      /* Enable sched1 for SH4 if the user explicitly requests.                \
21255 +        When sched1 is enabled, the ready queue will be reordered by   \
21256 +        the target hooks if pressure is high.  We can not do this for  \
21257          PIC, SH3 and lower as they give spill failures for R0.  */     \
21258        if (!TARGET_HARD_SH4 || flag_pic)                                        \
21259          flag_schedule_insns = 0;                                       \
21260 @@ -728,6 +729,8 @@
21261             warning (0, "ignoring -fschedule-insns because of exception handling bug"); \
21262           flag_schedule_insns = 0;                                      \
21263         }                                                               \
21264 +      else if (flag_schedule_insns == 2)                               \
21265 +       flag_schedule_insns = 0;                                        \
21266      }                                                                  \
21267                                                                         \
21268    if (align_loops == 0)                                                        \
21269 diff -Nur a/gcc/config/sh/t-1e b/gcc/config/sh/t-1e
21270 --- a/gcc/config/sh/t-1e        2004-06-21 20:18:40.000000000 +0200
21271 +++ b/gcc/config/sh/t-1e        1970-01-01 01:00:00.000000000 +0100
21272 @@ -1 +0,0 @@
21273 -MULTILIB_ENDIAN =
21274 diff -Nur a/gcc/config/sh/t-linux b/gcc/config/sh/t-linux
21275 --- a/gcc/config/sh/t-linux     2007-01-09 11:50:23.000000000 +0100
21276 +++ b/gcc/config/sh/t-linux     2010-01-25 09:50:29.075687537 +0100
21277 @@ -4,6 +4,5 @@
21278  
21279  MULTILIB_DIRNAMES= 
21280  MULTILIB_MATCHES = 
21281 -MULTILIB_EXCEPTIONS=
21282  
21283  EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
21284 diff -Nur a/gcc/config/sh/t-mlib-sh1 b/gcc/config/sh/t-mlib-sh1
21285 --- a/gcc/config/sh/t-mlib-sh1  2004-06-21 20:18:40.000000000 +0200
21286 +++ b/gcc/config/sh/t-mlib-sh1  1970-01-01 01:00:00.000000000 +0100
21287 @@ -1 +0,0 @@
21288 -ML_sh1=m1/
21289 diff -Nur a/gcc/config/sh/t-mlib-sh2 b/gcc/config/sh/t-mlib-sh2
21290 --- a/gcc/config/sh/t-mlib-sh2  2004-06-21 20:18:40.000000000 +0200
21291 +++ b/gcc/config/sh/t-mlib-sh2  1970-01-01 01:00:00.000000000 +0100
21292 @@ -1 +0,0 @@
21293 -ML_sh2=m2/
21294 diff -Nur a/gcc/config/sh/t-mlib-sh2a b/gcc/config/sh/t-mlib-sh2a
21295 --- a/gcc/config/sh/t-mlib-sh2a 2004-07-29 08:10:03.000000000 +0200
21296 +++ b/gcc/config/sh/t-mlib-sh2a 1970-01-01 01:00:00.000000000 +0100
21297 @@ -1 +0,0 @@
21298 -ML_sh2a=m2a/
21299 diff -Nur a/gcc/config/sh/t-mlib-sh2a-nofpu b/gcc/config/sh/t-mlib-sh2a-nofpu
21300 --- a/gcc/config/sh/t-mlib-sh2a-nofpu   2004-07-29 08:10:03.000000000 +0200
21301 +++ b/gcc/config/sh/t-mlib-sh2a-nofpu   1970-01-01 01:00:00.000000000 +0100
21302 @@ -1 +0,0 @@
21303 -ML_sh2a_nofpu=m2a-nofpu/
21304 diff -Nur a/gcc/config/sh/t-mlib-sh2a-single b/gcc/config/sh/t-mlib-sh2a-single
21305 --- a/gcc/config/sh/t-mlib-sh2a-single  2004-07-29 08:10:03.000000000 +0200
21306 +++ b/gcc/config/sh/t-mlib-sh2a-single  1970-01-01 01:00:00.000000000 +0100
21307 @@ -1 +0,0 @@
21308 -ML_sh2a_single=m2a-single/
21309 diff -Nur a/gcc/config/sh/t-mlib-sh2a-single-only b/gcc/config/sh/t-mlib-sh2a-single-only
21310 --- a/gcc/config/sh/t-mlib-sh2a-single-only     2004-07-29 08:10:03.000000000 +0200
21311 +++ b/gcc/config/sh/t-mlib-sh2a-single-only     1970-01-01 01:00:00.000000000 +0100
21312 @@ -1 +0,0 @@
21313 -ML_sh2a_single_only=m2a-single-only/
21314 diff -Nur a/gcc/config/sh/t-mlib-sh2e b/gcc/config/sh/t-mlib-sh2e
21315 --- a/gcc/config/sh/t-mlib-sh2e 2004-06-21 20:18:40.000000000 +0200
21316 +++ b/gcc/config/sh/t-mlib-sh2e 1970-01-01 01:00:00.000000000 +0100
21317 @@ -1 +0,0 @@
21318 -ML_sh2e=m2e/
21319 diff -Nur a/gcc/config/sh/t-mlib-sh3 b/gcc/config/sh/t-mlib-sh3
21320 --- a/gcc/config/sh/t-mlib-sh3  2004-06-21 20:18:40.000000000 +0200
21321 +++ b/gcc/config/sh/t-mlib-sh3  1970-01-01 01:00:00.000000000 +0100
21322 @@ -1 +0,0 @@
21323 -ML_sh3=m3/
21324 diff -Nur a/gcc/config/sh/t-mlib-sh3e b/gcc/config/sh/t-mlib-sh3e
21325 --- a/gcc/config/sh/t-mlib-sh3e 2004-06-21 20:18:40.000000000 +0200
21326 +++ b/gcc/config/sh/t-mlib-sh3e 1970-01-01 01:00:00.000000000 +0100
21327 @@ -1 +0,0 @@
21328 -ML_sh3e=m3e/
21329 diff -Nur a/gcc/config/sh/t-mlib-sh4 b/gcc/config/sh/t-mlib-sh4
21330 --- a/gcc/config/sh/t-mlib-sh4  2004-06-21 20:18:40.000000000 +0200
21331 +++ b/gcc/config/sh/t-mlib-sh4  1970-01-01 01:00:00.000000000 +0100
21332 @@ -1 +0,0 @@
21333 -ML_sh4=m4/
21334 diff -Nur a/gcc/config/sh/t-mlib-sh4a b/gcc/config/sh/t-mlib-sh4a
21335 --- a/gcc/config/sh/t-mlib-sh4a 2004-07-28 11:13:58.000000000 +0200
21336 +++ b/gcc/config/sh/t-mlib-sh4a 1970-01-01 01:00:00.000000000 +0100
21337 @@ -1 +0,0 @@
21338 -ML_sh4a=m4a/
21339 diff -Nur a/gcc/config/sh/t-mlib-sh4al b/gcc/config/sh/t-mlib-sh4al
21340 --- a/gcc/config/sh/t-mlib-sh4al        2004-07-28 11:13:58.000000000 +0200
21341 +++ b/gcc/config/sh/t-mlib-sh4al        1970-01-01 01:00:00.000000000 +0100
21342 @@ -1 +0,0 @@
21343 -ML_sh4al=m4al/
21344 diff -Nur a/gcc/config/sh/t-mlib-sh4a-nofpu b/gcc/config/sh/t-mlib-sh4a-nofpu
21345 --- a/gcc/config/sh/t-mlib-sh4a-nofpu   2004-07-28 11:13:58.000000000 +0200
21346 +++ b/gcc/config/sh/t-mlib-sh4a-nofpu   1970-01-01 01:00:00.000000000 +0100
21347 @@ -1 +0,0 @@
21348 -ML_sh4a_nofpu=m4a-nofpu/
21349 diff -Nur a/gcc/config/sh/t-mlib-sh4a-single b/gcc/config/sh/t-mlib-sh4a-single
21350 --- a/gcc/config/sh/t-mlib-sh4a-single  2004-07-28 11:13:58.000000000 +0200
21351 +++ b/gcc/config/sh/t-mlib-sh4a-single  1970-01-01 01:00:00.000000000 +0100
21352 @@ -1 +0,0 @@
21353 -ML_sh4a_single=m4a-single/
21354 diff -Nur a/gcc/config/sh/t-mlib-sh4a-single-only b/gcc/config/sh/t-mlib-sh4a-single-only
21355 --- a/gcc/config/sh/t-mlib-sh4a-single-only     2004-07-28 11:13:58.000000000 +0200
21356 +++ b/gcc/config/sh/t-mlib-sh4a-single-only     1970-01-01 01:00:00.000000000 +0100
21357 @@ -1 +0,0 @@
21358 -ML_sh4a_single_only=m4a-single-only/
21359 diff -Nur a/gcc/config/sh/t-mlib-sh4-nofpu b/gcc/config/sh/t-mlib-sh4-nofpu
21360 --- a/gcc/config/sh/t-mlib-sh4-nofpu    2004-06-21 20:18:40.000000000 +0200
21361 +++ b/gcc/config/sh/t-mlib-sh4-nofpu    1970-01-01 01:00:00.000000000 +0100
21362 @@ -1 +0,0 @@
21363 -ML_sh4_nofpu=m4-nofpu/
21364 diff -Nur a/gcc/config/sh/t-mlib-sh4-single b/gcc/config/sh/t-mlib-sh4-single
21365 --- a/gcc/config/sh/t-mlib-sh4-single   2004-06-21 20:18:40.000000000 +0200
21366 +++ b/gcc/config/sh/t-mlib-sh4-single   1970-01-01 01:00:00.000000000 +0100
21367 @@ -1 +0,0 @@
21368 -ML_sh4_single=m4-single/
21369 diff -Nur a/gcc/config/sh/t-mlib-sh4-single-only b/gcc/config/sh/t-mlib-sh4-single-only
21370 --- a/gcc/config/sh/t-mlib-sh4-single-only      2004-06-21 20:18:40.000000000 +0200
21371 +++ b/gcc/config/sh/t-mlib-sh4-single-only      1970-01-01 01:00:00.000000000 +0100
21372 @@ -1 +0,0 @@
21373 -ML_sh4_single_only=m4-single-only/
21374 diff -Nur a/gcc/config/sh/t-mlib-sh5-32media b/gcc/config/sh/t-mlib-sh5-32media
21375 --- a/gcc/config/sh/t-mlib-sh5-32media  2004-06-21 20:18:40.000000000 +0200
21376 +++ b/gcc/config/sh/t-mlib-sh5-32media  1970-01-01 01:00:00.000000000 +0100
21377 @@ -1 +0,0 @@
21378 -ML_sh5_32media=m5-32media/
21379 diff -Nur a/gcc/config/sh/t-mlib-sh5-32media-nofpu b/gcc/config/sh/t-mlib-sh5-32media-nofpu
21380 --- a/gcc/config/sh/t-mlib-sh5-32media-nofpu    2004-06-21 20:18:40.000000000 +0200
21381 +++ b/gcc/config/sh/t-mlib-sh5-32media-nofpu    1970-01-01 01:00:00.000000000 +0100
21382 @@ -1 +0,0 @@
21383 -ML_sh5_32media_nofpu=m5-32media-nofpu/
21384 diff -Nur a/gcc/config/sh/t-mlib-sh5-64media b/gcc/config/sh/t-mlib-sh5-64media
21385 --- a/gcc/config/sh/t-mlib-sh5-64media  2004-06-21 20:18:40.000000000 +0200
21386 +++ b/gcc/config/sh/t-mlib-sh5-64media  1970-01-01 01:00:00.000000000 +0100
21387 @@ -1 +0,0 @@
21388 -ML_sh5_64media=m5-64media/
21389 diff -Nur a/gcc/config/sh/t-mlib-sh5-64media-nofpu b/gcc/config/sh/t-mlib-sh5-64media-nofpu
21390 --- a/gcc/config/sh/t-mlib-sh5-64media-nofpu    2004-06-21 20:18:40.000000000 +0200
21391 +++ b/gcc/config/sh/t-mlib-sh5-64media-nofpu    1970-01-01 01:00:00.000000000 +0100
21392 @@ -1 +0,0 @@
21393 -ML_sh5_64media_nofpu=m5-64media-nofpu/
21394 diff -Nur a/gcc/config/sh/t-mlib-sh5-compact b/gcc/config/sh/t-mlib-sh5-compact
21395 --- a/gcc/config/sh/t-mlib-sh5-compact  2004-06-21 20:18:40.000000000 +0200
21396 +++ b/gcc/config/sh/t-mlib-sh5-compact  1970-01-01 01:00:00.000000000 +0100
21397 @@ -1 +0,0 @@
21398 -ML_sh5_compact=m5-compact/
21399 diff -Nur a/gcc/config/sh/t-mlib-sh5-compact-nofpu b/gcc/config/sh/t-mlib-sh5-compact-nofpu
21400 --- a/gcc/config/sh/t-mlib-sh5-compact-nofpu    2004-06-21 20:18:40.000000000 +0200
21401 +++ b/gcc/config/sh/t-mlib-sh5-compact-nofpu    1970-01-01 01:00:00.000000000 +0100
21402 @@ -1 +0,0 @@
21403 -ML_sh5_compact_nofpu=m5-compact-nofpu/
21404 diff -Nur a/gcc/config/sh/t-sgxxlite-linux b/gcc/config/sh/t-sgxxlite-linux
21405 --- a/gcc/config/sh/t-sgxxlite-linux    1970-01-01 01:00:00.000000000 +0100
21406 +++ b/gcc/config/sh/t-sgxxlite-linux    2010-01-25 09:50:29.075687537 +0100
21407 @@ -0,0 +1,3 @@
21408 +MULTILIB_OPTIONS += muclibc
21409 +MULTILIB_OSDIRNAMES += muclibc=!uclibc m4al/muclibc=!m4al/uclibc mb/muclibc=!mb/uclibc
21410 +MULTILIB_EXCEPTIONS += mb/m4al/muclibc
21411 diff -Nur a/gcc/config/sh/t-sh b/gcc/config/sh/t-sh
21412 --- a/gcc/config/sh/t-sh        2008-10-25 00:10:52.000000000 +0200
21413 +++ b/gcc/config/sh/t-sh        2010-01-25 09:50:29.075687537 +0100
21414 @@ -27,10 +27,10 @@
21415         echo '#endif'           >> fp-bit.c
21416         cat $(srcdir)/config/fp-bit.c >> fp-bit.c
21417  
21418 -MULTILIB_ENDIAN = ml/mb
21419 -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)
21420 +DEFAULT_ENDIAN = $(word 1,$(TM_ENDIAN_CONFIG))
21421 +OTHER_ENDIAN = $(word 2,$(TM_ENDIAN_CONFIG))
21422  
21423 -MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) $(MULTILIB_CPUS:/=)
21424 +MULTILIB_OPTIONS= $(OTHER_ENDIAN) $(TM_MULTILIB_CONFIG)
21425  MULTILIB_DIRNAMES= 
21426  
21427  # The separate entries for m2a-nofpu and m2a-single-only with
21428 @@ -58,7 +58,34 @@
21429    done)
21430  
21431  # SH1 only supports big endian.
21432 -MULTILIB_EXCEPTIONS = ml/m1 ml/m2a*
21433 +MULTILIB_EXCEPTIONS = ml/m1 ml/m2a* $(TM_MULTILIB_EXCEPTIONS_CONFIG)
21434 +
21435 +MULTILIB_OSDIRNAMES = \
21436 +       $(OTHER_ENDIAN)=!$(OTHER_ENDIAN) \
21437 +       m1=!m1 $(OTHER_ENDIAN)/m1=!$(OTHER_ENDIAN)/m1 \
21438 +       m2a=!m2a $(OTHER_ENDIAN)/m2a=!$(OTHER_ENDIAN)/m2a \
21439 +       m2a-nofpu=!m2a-nofpu $(OTHER_ENDIAN)/m2a-nofpu=!$(OTHER_ENDIAN)/m2a-nofpu \
21440 +       m2a-single-only=!m2a-single-only $(OTHER_ENDIAN)/m2a-single-only=!$(OTHER_ENDIAN)/m2a-single-only \
21441 +       m2a-single=!m2a-single $(OTHER_ENDIAN)/m2a-single=!$(OTHER_ENDIAN)/m2a-single \
21442 +       m2e=!m2e $(OTHER_ENDIAN)/m2e=!$(OTHER_ENDIAN)/m2e \
21443 +       m2=!m2 $(OTHER_ENDIAN)/m2=!$(OTHER_ENDIAN)/m2 \
21444 +       m3e=!m3e $(OTHER_ENDIAN)/m3e=!$(OTHER_ENDIAN)/m3e \
21445 +       m3=!m3 $(OTHER_ENDIAN)/m3=!$(OTHER_ENDIAN)/m3 \
21446 +       m4-nofpu=!m4-nofpu $(OTHER_ENDIAN)/m4-nofpu=!$(OTHER_ENDIAN)/m4-nofpu \
21447 +       m4-single-only=!m4-single-only $(OTHER_ENDIAN)/m4-single-only=!$(OTHER_ENDIAN)/m4-single-only \
21448 +       m4-single=!m4-single $(OTHER_ENDIAN)/m4-single=!$(OTHER_ENDIAN)/m4-single \
21449 +       m4=!m4 $(OTHER_ENDIAN)/m4=!$(OTHER_ENDIAN)/m4 \
21450 +       m4a-nofpu=!m4a-nofpu $(OTHER_ENDIAN)/m4a-nofpu=!$(OTHER_ENDIAN)/m4a-nofpu \
21451 +       m4a-single-only=!m4a-single-only $(OTHER_ENDIAN)/m4a-single-only=!$(OTHER_ENDIAN)/m4a-single-only \
21452 +       m4a-single=!m4a-single $(OTHER_ENDIAN)/m4a-single=!$(OTHER_ENDIAN)/m4a-single \
21453 +       m4a=!m4a $(OTHER_ENDIAN)/m4a=!$(OTHER_ENDIAN)/m4a \
21454 +       m4al=!m4al $(OTHER_ENDIAN)/m4al=!$(OTHER_ENDIAN)/m4al \
21455 +       m5-32media=!m5-32media $(OTHER_ENDIAN)/m5-32media=!$(OTHER_ENDIAN)/m5-32media \
21456 +       m5-32media-nofpu=!m5-32media-nofpu $(OTHER_ENDIAN)/m5-32media-nofpu=!$(OTHER_ENDIAN)/m5-32media-nofpu \
21457 +       m5-compact=!m5-compact $(OTHER_ENDIAN)/m5-compact=!$(OTHER_ENDIAN)/m5-compact \
21458 +       m5-compact-nofpu=!m5-compact-nofpu $(OTHER_ENDIAN)/m5-compact-nofpu=!$(OTHER_ENDIAN)/m5-compact-nofpu \
21459 +       m5-64media=!m5-64media $(OTHER_ENDIAN)/m5-64media=!$(OTHER_ENDIAN)/m5-64media \
21460 +       m5-64media-nofpu=!m5-64media-nofpu $(OTHER_ENDIAN)/m5-64media-nofpu=!$(OTHER_ENDIAN)/m5-64media-nofpu
21461  
21462  LIBGCC = stmp-multilib
21463  INSTALL_LIBGCC = install-multilib
21464 diff -Nur a/gcc/config/sol2.h b/gcc/config/sol2.h
21465 --- a/gcc/config/sol2.h 2008-09-09 18:17:37.000000000 +0200
21466 +++ b/gcc/config/sol2.h 2010-01-25 09:50:29.075687537 +0100
21467 @@ -123,12 +123,12 @@
21468     %{YP,*} \
21469     %{R*} \
21470     %{compat-bsd: \
21471 -     %{!YP,*:%{p|pg:-Y P,/usr/ucblib:/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} \
21472 -             %{!p:%{!pg:-Y P,/usr/ucblib:/usr/ccs/lib:/usr/lib}}} \
21473 -             -R /usr/ucblib} \
21474 +     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib} \
21475 +             %{!p:%{!pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib:%R/usr/lib}}} \
21476 +             -R %R/usr/ucblib} \
21477     %{!compat-bsd: \
21478 -     %{!YP,*:%{p|pg:-Y P,/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} \
21479 -             %{!p:%{!pg:-Y P,/usr/ccs/lib:/usr/lib}}}}"
21480 +     %{!YP,*:%{p|pg:-Y P,%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib} \
21481 +             %{!p:%{!pg:-Y P,%R/usr/ccs/lib:%R/usr/lib}}}}"
21482  
21483  #undef LINK_ARCH32_SPEC
21484  #define LINK_ARCH32_SPEC LINK_ARCH32_SPEC_BASE
21485 diff -Nur a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h
21486 --- a/gcc/config/sparc/linux64.h        2009-02-20 16:20:38.000000000 +0100
21487 +++ b/gcc/config/sparc/linux64.h        2010-01-25 09:50:29.075687537 +0100
21488 @@ -40,10 +40,15 @@
21489     in a Medium/Low code model environment.  */
21490  
21491  #undef TARGET_DEFAULT
21492 +#ifdef BIARCH_32BIT_DEFAULT
21493 +#define TARGET_DEFAULT \
21494 +  (MASK_APP_REGS + MASK_FPU)
21495 +#else
21496  #define TARGET_DEFAULT \
21497    (MASK_V9 + MASK_PTR64 + MASK_64BIT /* + MASK_HARD_QUAD */ \
21498     + MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128)
21499  #endif
21500 +#endif
21501  
21502  /* This must be v9a not just v9 because by default we enable
21503     -mvis.  */
21504 diff -Nur a/gcc/config/sparc/sol2-bi.h b/gcc/config/sparc/sol2-bi.h
21505 --- a/gcc/config/sparc/sol2-bi.h        2007-10-19 06:29:38.000000000 +0200
21506 +++ b/gcc/config/sparc/sol2-bi.h        2010-01-25 09:50:29.075687537 +0100
21507 @@ -172,12 +172,12 @@
21508     %{YP,*} \
21509     %{R*} \
21510     %{compat-bsd: \
21511 -     %{!YP,*:%{p|pg:-Y P,/usr/ucblib/sparcv9:/usr/lib/libp/sparcv9:/usr/lib/sparcv9} \
21512 -       %{!p:%{!pg:-Y P,/usr/ucblib/sparcv9:/usr/lib/sparcv9}}} \
21513 -     -R /usr/ucblib/sparcv9} \
21514 +     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9} \
21515 +       %{!p:%{!pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/sparcv9}}} \
21516 +     -R %R/usr/ucblib/sparcv9} \
21517     %{!compat-bsd: \
21518 -     %{!YP,*:%{p|pg:-Y P,/usr/lib/libp/sparcv9:/usr/lib/sparcv9} \
21519 -       %{!p:%{!pg:-Y P,/usr/lib/sparcv9}}}}"
21520 +     %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9} \
21521 +       %{!p:%{!pg:-Y P,%R/usr/lib/sparcv9}}}}"
21522  
21523  #define LINK_ARCH64_SPEC LINK_ARCH64_SPEC_BASE
21524  
21525 diff -Nur a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
21526 --- a/gcc/config/sparc/sparc.c  2009-02-20 16:20:38.000000000 +0100
21527 +++ b/gcc/config/sparc/sparc.c  2010-01-25 09:50:29.075687537 +0100
21528 @@ -6120,7 +6120,7 @@
21529  sparc_emit_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison)
21530  {
21531    const char *qpfunc;
21532 -  rtx slot0, slot1, result, tem, tem2;
21533 +  rtx slot0, slot1, result, tem, tem2, libfunc;
21534    enum machine_mode mode;
21535    enum rtx_code new_comparison;
21536  
21537 @@ -6183,7 +6183,8 @@
21538           emit_move_insn (slot1, y);
21539         }
21540  
21541 -      emit_library_call (gen_rtx_SYMBOL_REF (Pmode, qpfunc), LCT_NORMAL,
21542 +      libfunc = gen_rtx_SYMBOL_REF (Pmode, qpfunc);
21543 +      emit_library_call (libfunc, LCT_NORMAL,
21544                          DImode, 2,
21545                          XEXP (slot0, 0), Pmode,
21546                          XEXP (slot1, 0), Pmode);
21547 @@ -6191,7 +6192,8 @@
21548      }
21549    else
21550      {
21551 -      emit_library_call (gen_rtx_SYMBOL_REF (Pmode, qpfunc), LCT_NORMAL,
21552 +      libfunc = gen_rtx_SYMBOL_REF (Pmode, qpfunc);
21553 +      emit_library_call (libfunc, LCT_NORMAL,
21554                          SImode, 2,
21555                          x, TFmode, y, TFmode);
21556        mode = SImode;
21557 @@ -6202,7 +6204,7 @@
21558       register so reload doesn't clobber the value if it needs
21559       the return register for a spill reg.  */
21560    result = gen_reg_rtx (mode);
21561 -  emit_move_insn (result, hard_libcall_value (mode));
21562 +  emit_move_insn (result, hard_libcall_value (mode, libfunc));
21563  
21564    switch (comparison)
21565      {
21566 diff -Nur a/gcc/config/spu/spu.h b/gcc/config/spu/spu.h
21567 --- a/gcc/config/spu/spu.h      2009-04-24 00:50:16.000000000 +0200
21568 +++ b/gcc/config/spu/spu.h      2010-01-25 09:50:29.085687411 +0100
21569 @@ -270,7 +270,8 @@
21570  
21571  #define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (LINK_REGISTER_REGNUM)
21572  
21573 -#define ARG_POINTER_CFA_OFFSET(FNDECL) (-STACK_POINTER_OFFSET)
21574 +#define ARG_POINTER_CFA_OFFSET(FNDECL) \
21575 +  (crtl->args.pretend_args_size - STACK_POINTER_OFFSET)
21576  
21577  \f
21578  /* Stack Checking */
21579 diff -Nur a/gcc/config/t-eglibc b/gcc/config/t-eglibc
21580 --- a/gcc/config/t-eglibc       1970-01-01 01:00:00.000000000 +0100
21581 +++ b/gcc/config/t-eglibc       2010-01-25 09:50:29.085687411 +0100
21582 @@ -0,0 +1,25 @@
21583 +# multilibs  -*- mode:Makefile -*-
21584 +
21585 +MULTILIB_EXCEPTIONS :=
21586 +MULTILIB_MATCHES    :=
21587 +MULTILIB_ALIASES    :=
21588 +
21589 +# For all items in EGLIBC_CONFIGS except for the last one
21590 +# do $1.  For the last one do $2.  The items are separated with ",".
21591 +EGLIBC_AWK = $(shell echo $(EGLIBC_CONFIGS) | $(AWK) \
21592 +       '{ \
21593 +       N=split ($$0, configs, ","); \
21594 +       for (i = 1; i < N; ++i) $1; \
21595 +       $2; \
21596 +       }')
21597 +
21598 +MULTILIB_OPTIONS    := $(call EGLIBC_AWK, \
21599 +       printf ("feglibc=%s/", configs[i]), \
21600 +       printf ("feglibc=%s\n", configs[i]))
21601 +MULTILIB_DIRNAMES   := $(call EGLIBC_AWK, \
21602 +       printf ("%s ", configs[i]), \
21603 +       printf ("%s\n", configs[i]))
21604 +MULTILIB_OSDIRNAMES := $(call EGLIBC_AWK, \
21605 +       printf ("feglibc.%s=!%s ", configs[i], configs[i]), \
21606 +       printf ("feglibc.%s=!%s\n", configs[i], configs[i]))
21607 +
21608 diff -Nur a/gcc/config/t-sysroot-suffix b/gcc/config/t-sysroot-suffix
21609 --- a/gcc/config/t-sysroot-suffix       1970-01-01 01:00:00.000000000 +0100
21610 +++ b/gcc/config/t-sysroot-suffix       2010-01-25 09:50:29.085687411 +0100
21611 @@ -0,0 +1,7 @@
21612 +# Generate SYSROOT_SUFFIX_SPEC from MULTILIB_OSDIRNAMES
21613 +
21614 +sysroot-suffix.h: $(srcdir)/config/print-sysroot-suffix.sh
21615 +       $(SHELL) $(srcdir)/config/print-sysroot-suffix.sh \
21616 +         "$(MULTILIB_OSDIRNAMES)" "$(MULTILIB_OPTIONS)" \
21617 +         "$(MULTILIB_MATCHES)" "$(MULTILIB_ALIASES)" > tmp-sysroot-suffix.h
21618 +       mv tmp-sysroot-suffix.h $@
21619 diff -Nur a/gcc/config/vx-common.h b/gcc/config/vx-common.h
21620 --- a/gcc/config/vx-common.h    2009-02-20 16:20:38.000000000 +0100
21621 +++ b/gcc/config/vx-common.h    2010-01-25 09:50:29.085687411 +0100
21622 @@ -92,3 +92,6 @@
21623  /* We occasionally need to distinguish between the VxWorks variants.  */
21624  #define VXWORKS_KIND_NORMAL  1
21625  #define VXWORKS_KIND_AE      2
21626 +
21627 +/* Enable get_feature license checking.  */
21628 +#define TARGET_FLEXLM
21629 diff -Nur a/gcc/config.gcc b/gcc/config.gcc
21630 --- a/gcc/config.gcc    2009-04-17 13:58:41.000000000 +0200
21631 +++ b/gcc/config.gcc    2010-01-25 09:50:29.085687411 +0100
21632 @@ -721,6 +721,28 @@
21633             need_64bit_hwint=yes
21634             # The EABI requires the use of __cxa_atexit.
21635             default_use_cxa_atexit=yes
21636 +           case ${target} in
21637 +           arm-wrs-linux-gnueabi) 
21638 +               tm_file="$tm_file arm/wrs-linux.h"
21639 +               tmake_file="$tmake_file arm/t-wrs-linux"
21640 +               tm_defines="$tm_defines TARGET_FLEXLM"
21641 +               ;;
21642 +           arm-montavista*-linux-gnueabi)
21643 +               tm_file="$tm_file arm/montavista-linux.h"
21644 +               tmake_file="$tmake_file arm/t-montavista-linux"
21645 +               ;;
21646 +           *)
21647 +               if test x$enable_extra_asa_multilibs = xyes; then
21648 +                       tmake_file="${tmake_file} arm/t-asa"
21649 +               elif test x$enable_extra_sgxx_multilibs = xyes; then
21650 +                       tmake_file="${tmake_file} arm/t-cs-linux"
21651 +               elif test x$enable_extra_sgxxlite_multilibs = xyes; then
21652 +                       tmake_file="${tmake_file} arm/t-cs-linux-lite"
21653 +               fi
21654 +               tm_file="$tm_file ./sysroot-suffix.h"
21655 +               tmake_file="$tmake_file t-sysroot-suffix"
21656 +               ;;
21657 +           esac
21658             ;;
21659         *)
21660             tmake_file="$tmake_file arm/t-linux"
21661 @@ -742,6 +764,13 @@
21662             need_64bit_hwint=yes
21663             # The EABI requires the use of __cxa_atexit.
21664             default_use_cxa_atexit=yes
21665 +           if test x$enable_extra_sgxx_multilibs = xyes; then
21666 +                   tmake_file="${tmake_file} arm/t-cs-uclinux-eabi"
21667 +           elif test x$enable_extra_sgxxlite_multilibs = xyes; then
21668 +                   tmake_file="${tmake_file} arm/t-cs-uclinux-eabi"
21669 +           fi
21670 +           tm_file="$tm_file ./sysroot-suffix.h"
21671 +           tmake_file="$tmake_file t-sysroot-suffix"
21672         esac
21673         tm_file="$tm_file arm/aout.h arm/arm.h"
21674         tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
21675 @@ -762,8 +791,14 @@
21676         case ${target} in
21677         arm*-*-eabi*)
21678           tm_file="$tm_file arm/eabi.h"
21679 +         tm_file="${tm_file} arm/nocrt0.h"
21680           tmake_file="${tmake_file} arm/t-bpabi"
21681           extra_options="${extra_options} arm/eabi.opt"
21682 +         if test x$enable_extra_sgxx_multilibs = xyes; then
21683 +                 tmake_file="${tmake_file} arm/t-cs-eabi"
21684 +         elif test x$enable_extra_sgxxlite_multilibs = xyes; then
21685 +                 tmake_file="${tmake_file} arm/t-cs-eabi-lite"
21686 +         fi
21687           ;;
21688         arm*-*-symbianelf*)
21689           tm_file="${tm_file} arm/symbian.h"
21690 @@ -1088,7 +1123,7 @@
21691                         tmake_file="${tmake_file} i386/t-linux64"
21692                         need_64bit_hwint=yes
21693                         case X"${with_cpu}" in
21694 -                       Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
21695 +                       Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
21696                                 ;;
21697                         X)
21698                                 if test x$with_cpu_64 = x; then
21699 @@ -1097,13 +1132,29 @@
21700                                 ;;
21701                         *)
21702                                 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
21703 -                               echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
21704 +                               echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
21705                                 exit 1
21706                                 ;;
21707                         esac
21708                 else
21709                         tm_file="${tm_file} i386/linux.h"
21710                 fi
21711 +               case ${target} in
21712 +               *-wrs-linux*)
21713 +                       tm_file="$tm_file i386/wrs-linux.h"
21714 +                       tmake_file="$tmake_file i386/t-wrs-linux"
21715 +                       extra_options="${extra_options} i386/wrs-linux.opt"
21716 +                       tm_defines="${tm_defines} TARGET_FLEXLM"
21717 +                       ;;
21718 +               esac
21719 +               if test x$enable_extra_sgxx_multilibs = xyes; then
21720 +                       tm_file="${tm_file} i386/cs-linux.h"
21721 +                       tmake_file="${tmake_file} i386/t-cs-linux"
21722 +                       extra_options="${extra_options} i386/cs-linux.opt"
21723 +               elif test x$enable_extra_sgxxlite_multilibs = xyes; then
21724 +                       tm_file="${tm_file} i386/cs-linux-lite.h"
21725 +                       tmake_file="${tmake_file} i386/t-cs-linux-lite"
21726 +               fi
21727                 ;;
21728         i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} i386/linux.h knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
21729         i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} i386/linux.h kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
21730 @@ -1202,7 +1253,7 @@
21731                 # libgcc/configure.ac instead.
21732                 need_64bit_hwint=yes
21733                 case X"${with_cpu}" in
21734 -               Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
21735 +               Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
21736                         ;;
21737                 X)
21738                         if test x$with_cpu_64 = x; then
21739 @@ -1211,7 +1262,7 @@
21740                         ;;
21741                 *)
21742                         echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
21743 -                       echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
21744 +                       echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
21745                         exit 1
21746                         ;;
21747                 esac
21748 @@ -1566,6 +1617,7 @@
21749                         tm_defines="${tm_defines} MIPS_ISA_DEFAULT=65"
21750                         ;;
21751         esac
21752 +       tmake_file="$tmake_file mips/t-crtfm"
21753         gnu_ld=yes
21754         gas=yes
21755         test x$with_llsc != x || with_llsc=yes
21756 @@ -1579,8 +1631,28 @@
21757                  ;;
21758          mipsisa32*)
21759                 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32"
21760 +               ;;
21761 +       mips-wrs-linux-gnu) 
21762 +               tmake_file="$tmake_file mips/t-linux64 mips/t-wrs-linux"
21763 +               tm_file="$tm_file mips/linux64.h mips/octeon.h mips/wrs-linux.h"
21764 +               tm_defines="$tm_defines TARGET_FLEXLM"
21765 +               ;;
21766 +       mips-montavista*-linux-gnu)
21767 +               tmake_file="$tmake_file mips/t-linux64 mips/t-montavista-linux"
21768 +               tm_file="$tm_file mips/linux64.h mips/octeon.h mips/montavista-linux.h"
21769 +               ;;
21770 +       *)
21771 +               if test x$enable_extra_sgxx_multilibs = xyes; then
21772 +                   tmake_file="$tmake_file mips/t-sgxx-linux"
21773 +                   tm_file="$tm_file mips/cs-sgxx-linux.h"
21774 +               elif test x$enable_extra_sgxxlite_multilibs = xyes; then
21775 +                   tmake_file="$tmake_file mips/t-sgxxlite-linux"
21776 +                   tm_file="$tm_file mips/cs-sgxxlite-linux.h"
21777 +               fi
21778 +               ;;
21779          esac
21780         test x$with_llsc != x || with_llsc=yes
21781 +       tmake_file="$tmake_file mips/t-crtfm"
21782         ;;
21783  mips*-*-openbsd*)
21784         tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_OBJECT OBSD_HAS_CORRECT_SPECS"
21785 @@ -1625,6 +1697,25 @@
21786             tm_defines="MIPS_ISA_DEFAULT=64 MIPS_ABI_DEFAULT=ABI_N32"
21787             ;;
21788         esac
21789 +       if [ "$enable_sgxx_sde_multilibs" = "yes" ]; then
21790 +         tm_file="$tm_file mips/sdemtk.h"
21791 +         extra_options="$extra_options mips/sdemtk.opt"
21792 +         tmake_file="$tmake_file mips/t-sgxx-sde"
21793 +          # SourceryG++ is configured --with-arch=mips32r2.
21794 +         tm_defines="MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
21795 +       fi
21796 +       ;;
21797 +mips64octeon*-wrs-elf*)
21798 +       tm_file="elfos.h ${tm_file} mips/elf.h mips/octeon.h mips/octeon-elf.h"
21799 +       tmake_file=mips/t-octeon-elf
21800 +       tm_defines="MIPS_ABI_DEFAULT=ABI_EABI MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\" TARGET_FLEXLM"
21801 +       default_use_cxa_atexit=no
21802 +       ;;
21803 +mips64octeon*-montavista-elf*)
21804 +       tm_file="elfos.h ${tm_file} mips/elf.h mips/octeon.h mips/octeon-elf.h"
21805 +       tmake_file="mips/t-octeon-elf mips/t-montavista-elf"
21806 +       tm_defines="MIPS_ABI_DEFAULT=ABI_EABI MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
21807 +       default_use_cxa_atexit=no
21808         ;;
21809  mipsisa32-*-elf* | mipsisa32el-*-elf* | \
21810  mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
21811 @@ -1796,6 +1887,10 @@
21812         tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h"
21813         extra_options="${extra_options} rs6000/sysv4.opt"
21814         tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
21815 +       if test x$enable_powerpc_e500mc_elf = xyes; then
21816 +         tm_file="${tm_file} rs6000/e500mc.h"
21817 +         tmake_file="${tmake_file} rs6000/t-ppc-e500mc"
21818 +       fi
21819         ;;
21820  powerpc-*-eabialtivec*)
21821         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"
21822 @@ -1811,6 +1906,11 @@
21823         tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h"
21824         extra_options="${extra_options} rs6000/sysv4.opt"
21825         tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
21826 +       if test x$enable_extra_sgxx_multilibs = xyes; then
21827 +         tmake_file="${tmake_file} rs6000/t-cs-eabi"
21828 +       elif test x$enable_extra_sgxxlite_multilibs = xyes; then
21829 +         tmake_file="${tmake_file} rs6000/t-cs-eabi-lite"
21830 +       fi
21831         ;;
21832  powerpc-*-rtems*)
21833         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"
21834 @@ -1853,6 +1953,26 @@
21835         if test x${enable_secureplt} = xyes; then
21836                 tm_file="rs6000/secureplt.h ${tm_file}"
21837         fi
21838 +       case ${target} in
21839 +       powerpc-wrs-linux-gnu)
21840 +               tm_file="$tm_file rs6000/wrs-linux.h rs6000/e500.h"
21841 +               tmake_file="$tmake_file rs6000/t-wrs-linux"
21842 +               tm_defines="$tm_defines TARGET_FLEXLM"
21843 +               ;;
21844 +        powerpc-montavista*-linux-gnu)
21845 +                tm_file="$tm_file rs6000/montavista-linux.h"
21846 +                tmake_file="$tmake_file rs6000/t-montavista-linux"
21847 +                ;;
21848 +       *)
21849 +               if test x$enable_extra_sgxx_multilibs = xyes; then
21850 +                 tm_file="${tm_file} rs6000/e500.h"
21851 +                 tmake_file="$tmake_file rs6000/t-cs-linux"
21852 +               elif test x$enable_extra_sgxxlite_multilibs = xyes; then
21853 +                 tm_file="${tm_file} rs6000/e500.h"
21854 +                 tmake_file="$tmake_file rs6000/t-cs-linux"
21855 +               fi
21856 +               ;;
21857 +       esac
21858         ;;
21859  powerpc-*-gnu-gnualtivec*)
21860         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"
21861 @@ -2009,9 +2129,14 @@
21862                 *)                                 with_endian=big,little ;;
21863                 esac
21864         fi
21865 +       # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
21866 +       #  First word : the default endian.
21867 +       #  Second word: the secondary endian (optional).
21868         case ${with_endian} in
21869 -       big|little)     tmake_file="${tmake_file} sh/t-1e" ;;
21870 -       big,little|little,big) ;;
21871 +       big)            TM_ENDIAN_CONFIG=mb ;;
21872 +       little)         TM_ENDIAN_CONFIG=ml ;;
21873 +       big,little)     TM_ENDIAN_CONFIG="mb ml" ;;
21874 +       little,big)     TM_ENDIAN_CONFIG="ml mb" ;;
21875         *)      echo "with_endian=${with_endian} not supported."; exit 1 ;;
21876         esac
21877         case ${with_endian} in
21878 @@ -2118,7 +2243,7 @@
21879         *)      echo "with_cpu=$with_cpu not supported"; exit 1 ;;
21880         esac
21881         sh_multilibs=${with_multilib_list}
21882 -       if test x${sh_multilibs} = x ; then
21883 +       if test "$sh_multilibs" = "default" ; then
21884                 case ${target} in
21885                 sh64-superh-linux* | \
21886                 sh[1234]*)      sh_multilibs=${sh_cpu_target} ;;
21887 @@ -2134,28 +2259,43 @@
21888         fi
21889         target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
21890         tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
21891 -       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-`
21892 +       tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
21893 +       sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^sh/m/i' -e 's/ sh/ m/gi' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
21894         for sh_multilib in ${sh_multilibs}; do
21895                 case ${sh_multilib} in
21896 -               sh1 | sh2 | sh2e | sh3 | sh3e | \
21897 -               sh4 | sh4-single | sh4-single-only | sh4-nofpu | sh4-300 |\
21898 -               sh4a | sh4a-single | sh4a-single-only | sh4a-nofpu | sh4al | \
21899 -               sh2a | sh2a-single | sh2a-single-only | sh2a-nofpu | \
21900 -               sh5-64media | sh5-64media-nofpu | \
21901 -               sh5-32media | sh5-32media-nofpu | \
21902 -               sh5-compact | sh5-compact-nofpu)
21903 -                       tmake_file="${tmake_file} sh/t-mlib-${sh_multilib}"
21904 -                       tm_defines="$tm_defines SUPPORT_`echo $sh_multilib|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
21905 -                       ;;
21906 +               m1 | m2 | m2e | m3 | m3e | \
21907 +               m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
21908 +               m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
21909 +               m2a | m2a-single | m2a-single-only | m2a-nofpu | \
21910 +               m5-64media | m5-64media-nofpu | \
21911 +               m5-32media | m5-32media-nofpu | \
21912 +               m5-compact | m5-compact-nofpu)
21913 +                       # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
21914 +                       # It is passed to MULTIILIB_OPTIONS verbatim.
21915 +                       TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
21916 +                       tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
21917 +                       ;;
21918 +               \!*)    # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
21919 +                       # It is passed the MULTILIB_EXCEPTIONS verbatim.
21920 +                       TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
21921                 *)
21922                         echo "with_multilib_list=${sh_multilib} not supported."
21923                         exit 1
21924                         ;;
21925                 esac
21926         done
21927 +       TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
21928         if test x${enable_incomplete_targets} = xyes ; then
21929                 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"
21930         fi
21931 +       if test x$enable_extra_sgxxlite_multilibs = xyes \
21932 +          || test x$enable_extra_sgxx_multilibs = xyes; then
21933 +               # SG++ and Lite do not differ, as yet, so use the Lite files for both
21934 +               tm_file="$tm_file sh/cs-sgxxlite-linux.h"
21935 +               tmake_file="$tmake_file sh/t-sgxxlite-linux"
21936 +       fi
21937 +       tm_file="$tm_file ./sysroot-suffix.h"
21938 +       tmake_file="$tmake_file t-sysroot-suffix"
21939         ;;
21940  sh-*-rtems*)
21941         tmake_file="sh/t-sh sh/t-elf t-rtems sh/t-rtems"
21942 @@ -2194,6 +2334,11 @@
21943                 tm_file="${tm_file} sparc/linux.h"
21944         fi
21945         tmake_file="${tmake_file} sparc/t-crtfm"
21946 +       case ${target} in
21947 +       sparc-wrs-linux-gnu)
21948 +               tm_defines="$tm_defines BIARCH_32BIT_DEFAULT TARGET_FLEXLM"
21949 +               ;;
21950 +       esac
21951         ;;
21952  sparc-*-rtems*)
21953         tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h"
21954 @@ -2420,6 +2565,8 @@
21955  i[34567]86-*-* | x86_64-*-*)
21956         tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
21957         ;;
21958 +powerpc*-*-* | rs6000-*-*)
21959 +       tm_file="${tm_file} rs6000/option-defaults.h"
21960  esac
21961  
21962  # Support for --with-cpu and related options (and a few unrelated options,
21963 @@ -2646,8 +2793,8 @@
21964                 | armv[23456] | armv2a | armv3m | armv4t | armv5t \
21965                 | armv5te | armv6j |armv6k | armv6z | armv6zk | armv6-m \
21966                 | armv7 | armv7-a | armv7-r | armv7-m \
21967 -               | iwmmxt | ep9312)
21968 -                       # OK
21969 +               | iwmmxt | ep9312 | marvell-f )
21970 +                       # OK
21971                         ;;
21972                 *)
21973                         echo "Unknown arch used in --with-arch=$with_arch" 1>&2
21974 @@ -2668,7 +2815,10 @@
21975  
21976                 case "$with_fpu" in
21977                 "" \
21978 -               | fpa | fpe2 | fpe3 | maverick | vfp | vfp3 | neon )
21979 +               | fpa | fpe2 | fpe3 | maverick \
21980 +               | vfp | vfp3 | vfpv3 | vfpv3-fp16 | vfpv3-d16 \
21981 +               | vfpv3-d16-fp16 | vfpv4 | vfpv4-d16 | fpv4-sp-d16 \
21982 +               | neon | neon-fp16 | neon-vfpv4 )
21983                         # OK
21984                         ;;
21985                 *)
21986 @@ -2805,7 +2955,7 @@
21987                                 esac
21988                                 # OK
21989                                 ;;
21990 -                       "" | amdfam10 | barcelona | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | generic)
21991 +                       "" | amdfam10 | barcelona | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | atom | generic)
21992                                 # OK
21993                                 ;;
21994                         *)
21995 @@ -2817,7 +2967,7 @@
21996                 ;;
21997  
21998         mips*-*-*)
21999 -               supported_defaults="abi arch float tune divide llsc mips-plt"
22000 +               supported_defaults="abi arch arch_32 arch_64 float tune tune_32 tune_64 divide llsc mips-plt"
22001  
22002                 case ${with_float} in
22003                 "" | soft | hard)
22004 @@ -2882,12 +3032,20 @@
22005                 ;;
22006  
22007         powerpc*-*-* | rs6000-*-*)
22008 -               supported_defaults="cpu float tune"
22009 +               supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
22010  
22011 -               for which in cpu tune; do
22012 +               for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
22013                         eval "val=\$with_$which"
22014                         case ${val} in
22015                         default32 | default64)
22016 +                               case $which in
22017 +                               cpu | tune)
22018 +                                       ;;
22019 +                               *)
22020 +                                       echo "$val only valid for --with-cpu and --with-tune." 1>&2
22021 +                                       exit 1
22022 +                                       ;;
22023 +                               esac
22024                                 with_which="with_$which"
22025                                 eval $with_which=
22026                                 ;;
22027 @@ -3133,6 +3291,22 @@
22028                 ;;
22029  esac
22030  
22031 +case ${target} in
22032 +    *-eglibc-*-*)
22033 +       tmake_file="${tmake_file} t-eglibc"
22034 +
22035 +       case ${target} in
22036 +           arm-*)
22037 +            # ARM already includes below.
22038 +               ;;
22039 +           *)
22040 +               tmake_file="${tmake_file} t-sysroot-suffix"
22041 +               tm_file="${tm_file} ./sysroot-suffix.h"
22042 +               ;;
22043 +       esac
22044 +       ;;
22045 +esac
22046 +
22047  t=
22048  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"
22049  for option in $all_defaults
22050 diff -Nur a/gcc/config.in b/gcc/config.in
22051 --- a/gcc/config.in     2009-07-22 09:43:59.000000000 +0200
22052 +++ b/gcc/config.in     2010-01-25 09:50:29.085687411 +0100
22053 @@ -12,6 +12,18 @@
22054  #endif
22055  
22056  
22057 +/* Required license feature */
22058 +#ifndef USED_FOR_TARGET
22059 +#undef CSL_LICENSE_FEATURE
22060 +#endif
22061 +
22062 +
22063 +/* Required license version */
22064 +#ifndef USED_FOR_TARGET
22065 +#undef CSL_LICENSE_VERSION
22066 +#endif
22067 +
22068 +
22069  /* Define to enable the use of a default assembler. */
22070  #ifndef USED_FOR_TARGET
22071  #undef DEFAULT_ASSEMBLER
22072 @@ -108,6 +120,12 @@
22073  #endif
22074  
22075  
22076 +/* Define to warn for use of native system header directories */
22077 +#ifndef USED_FOR_TARGET
22078 +#undef ENABLE_POISON_SYSTEM_DIRECTORIES
22079 +#endif
22080 +
22081 +
22082  /* Define if you want all operations on RTL (the basic data structure of the
22083     optimizer and back end) to be checked for dynamic type safety at runtime.
22084     This is quite expensive. */
22085 @@ -821,6 +839,13 @@
22086  #endif
22087  
22088  
22089 +/* Define if your assembler supports specifying the alignment of objects
22090 +   allocated using the GAS .comm command. */
22091 +#ifndef USED_FOR_TARGET
22092 +#undef HAVE_GAS_ALIGNED_COMM
22093 +#endif
22094 +
22095 +
22096  /* Define if your assembler supports .balign and .p2align. */
22097  #ifndef USED_FOR_TARGET
22098  #undef HAVE_GAS_BALIGN_AND_P2ALIGN
22099 diff -Nur a/gcc/configure b/gcc/configure
22100 --- a/gcc/configure     2009-03-24 18:46:03.000000000 +0100
22101 +++ b/gcc/configure     2010-01-25 09:50:29.085687411 +0100
22102 @@ -458,7 +458,7 @@
22103  # include <unistd.h>
22104  #endif"
22105  
22106 -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'
22107 +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'
22108  ac_subst_files='language_hooks'
22109  ac_pwd=`pwd`
22110  
22111 @@ -1084,10 +1084,17 @@
22112    --enable-version-specific-runtime-libs
22113                            specify that runtime libraries should be
22114                            installed in a compiler-specific directory
22115 +  --enable-poison-system-directories
22116 +                          warn for use of native system header directories
22117  
22118  Optional Packages:
22119    --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
22120    --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
22121 +  --with-csl-license-version=VERSION
22122 +                          Use VERSION to communicate with the license manager
22123 +  --with-license          the path to the installed license component
22124 +  --with-csl-license-feature=FEATURE
22125 +                          Use FEATURE to communicate with the license manager
22126    --with-build-libsubdir=DIR  Directory where to find libraries for build system
22127    --with-local-prefix=DIR specifies directory to put local include
22128    --with-gxx-include-dir=DIR
22129 @@ -1105,8 +1112,12 @@
22130    --with-build-sysroot=sysroot
22131                            use sysroot as the system root during the build
22132    --with-sysroot=DIR Search for usr/lib, usr/include, et al, within DIR.
22133 +  --with-eglibc-configs=CONFIGS
22134 +                          build multilibs for these EGLIBC configurations
22135 +  --with-specs=SPECS      add SPECS to driver command-line processing
22136    --with-pkgversion=PKG   Use PKG in the version string in place of "GCC"
22137    --with-bugurl=URL       Direct users to URL to report a bug
22138 +  --with-multilib-list    Select multilibs (SH only)
22139    --with-gnu-ld           assume the C compiler uses GNU ld default=no
22140    --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
22141    --without-libiconv-prefix     don't search for libiconv in includedir and libdir
22142 @@ -1724,6 +1735,73 @@
22143  
22144  
22145  
22146 +
22147 +
22148 +# Check whether --with-csl-license-version or --without-csl-license-version was given.
22149 +if test "${with_csl_license_version+set}" = set; then
22150 +  withval="$with_csl_license_version"
22151 +  case "$withval" in
22152 +      (yes) { { echo "$as_me:$LINENO: error: license version not specified" >&5
22153 +echo "$as_me: error: license version not specified" >&2;}
22154 +   { (exit 1); exit 1; }; } ;;
22155 +      (no)  CSL_LICENSE_VERSION="" ;;
22156 +      (*)   CSL_LICENSE_VERSION="$withval" ;;
22157 +     esac
22158 +else
22159 +  CSL_LICENSE_VERSION=""
22160 +
22161 +fi;
22162 +  if test x"$CSL_LICENSE_VERSION" != x; then
22163 +
22164 +cat >>confdefs.h <<_ACEOF
22165 +#define CSL_LICENSE_VERSION "$CSL_LICENSE_VERSION"
22166 +_ACEOF
22167 +
22168 +  fi
22169 +
22170 +
22171 +
22172 +# Check whether --with-license or --without-license was given.
22173 +if test "${with_license+set}" = set; then
22174 +  withval="$with_license"
22175 +  case "$withval" in
22176 +     (yes) { { echo "$as_me:$LINENO: error: license not specified" >&5
22177 +echo "$as_me: error: license not specified" >&2;}
22178 +   { (exit 1); exit 1; }; } ;;
22179 +     (no)  with_license= ;;
22180 +     (*) ;;
22181 +  esac
22182 +else
22183 +  with_license=
22184 +fi;
22185 +  licensedir=$with_license
22186 +
22187 +
22188 +
22189 +
22190 +# Check whether --with-csl-license-feature or --without-csl-license-feature was given.
22191 +if test "${with_csl_license_feature+set}" = set; then
22192 +  withval="$with_csl_license_feature"
22193 +  case "$withval" in
22194 +      (yes) { { echo "$as_me:$LINENO: error: license feature not specified" >&5
22195 +echo "$as_me: error: license feature not specified" >&2;}
22196 +   { (exit 1); exit 1; }; } ;;
22197 +      (no)  CSL_LICENSE_FEATURE="" ;;
22198 +      (*)   CSL_LICENSE_FEATURE="$withval" ;;
22199 +     esac
22200 +else
22201 +  CSL_LICENSE_FEATURE=""
22202 +
22203 +fi;
22204 +  if test x"$CSL_LICENSE_FEATURE" != x; then
22205 +
22206 +cat >>confdefs.h <<_ACEOF
22207 +#define CSL_LICENSE_FEATURE "$CSL_LICENSE_FEATURE"
22208 +_ACEOF
22209 +
22210 +  fi
22211 +
22212 +
22213  # Determine the target- and build-specific subdirectories
22214  
22215  # post-stage1 host modules use a different CC_FOR_BUILD so, in order to
22216 @@ -8042,6 +8120,28 @@
22217  
22218  
22219  
22220 +
22221 +# Check whether --with-eglibc-configs or --without-eglibc-configs was given.
22222 +if test "${with_eglibc_configs+set}" = set; then
22223 +  withval="$with_eglibc_configs"
22224 +  EGLIBC_CONFIGS=$withval
22225 +else
22226 +  EGLIBC_CONFIGS=
22227 +
22228 +fi;
22229 +
22230 +
22231 +
22232 +# Check whether --with-specs or --without-specs was given.
22233 +if test "${with_specs+set}" = set; then
22234 +  withval="$with_specs"
22235 +  CONFIGURE_SPECS=$withval
22236 +else
22237 +  CONFIGURE_SPECS=
22238 +
22239 +fi;
22240 +
22241 +
22242  # Build with intermodule optimisations
22243  # Check whether --enable-intermodule or --disable-intermodule was given.
22244  if test "${enable_intermodule+set}" = set; then
22245 @@ -8137,6 +8237,15 @@
22246  
22247  
22248  
22249 +
22250 +# Check whether --with-multilib-list or --without-multilib-list was given.
22251 +if test "${with_multilib_list+set}" = set; then
22252 +  withval="$with_multilib_list"
22253 +  :
22254 +else
22255 +  with_multilib_list=default
22256 +fi;
22257 +
22258  # -------------------------
22259  # Checks for other programs
22260  # -------------------------
22261 @@ -14509,13 +14618,13 @@
22262  else
22263    lt_cv_nm_interface="BSD nm"
22264    echo "int some_variable = 0;" > conftest.$ac_ext
22265 -  (eval echo "\"\$as_me:14512: $ac_compile\"" >&5)
22266 +  (eval echo "\"\$as_me:14621: $ac_compile\"" >&5)
22267    (eval "$ac_compile" 2>conftest.err)
22268    cat conftest.err >&5
22269 -  (eval echo "\"\$as_me:14515: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
22270 +  (eval echo "\"\$as_me:14624: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
22271    (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
22272    cat conftest.err >&5
22273 -  (eval echo "\"\$as_me:14518: output\"" >&5)
22274 +  (eval echo "\"\$as_me:14627: output\"" >&5)
22275    cat conftest.out >&5
22276    if $GREP 'External.*some_variable' conftest.out > /dev/null; then
22277      lt_cv_nm_interface="MS dumpbin"
22278 @@ -15672,7 +15781,7 @@
22279    ;;
22280  *-*-irix6*)
22281    # Find out which ABI we are using.
22282 -  echo '#line 15675 "configure"' > conftest.$ac_ext
22283 +  echo '#line 15784 "configure"' > conftest.$ac_ext
22284    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
22285    (eval $ac_compile) 2>&5
22286    ac_status=$?
22287 @@ -16971,11 +17080,11 @@
22288     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
22289     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
22290     -e 's:$: $lt_compiler_flag:'`
22291 -   (eval echo "\"\$as_me:16974: $lt_compile\"" >&5)
22292 +   (eval echo "\"\$as_me:17083: $lt_compile\"" >&5)
22293     (eval "$lt_compile" 2>conftest.err)
22294     ac_status=$?
22295     cat conftest.err >&5
22296 -   echo "$as_me:16978: \$? = $ac_status" >&5
22297 +   echo "$as_me:17087: \$? = $ac_status" >&5
22298     if (exit $ac_status) && test -s "$ac_outfile"; then
22299       # The compiler can only warn and ignore the option if not recognized
22300       # So say no if there are warnings other than the usual output.
22301 @@ -17310,11 +17419,11 @@
22302     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
22303     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
22304     -e 's:$: $lt_compiler_flag:'`
22305 -   (eval echo "\"\$as_me:17313: $lt_compile\"" >&5)
22306 +   (eval echo "\"\$as_me:17422: $lt_compile\"" >&5)
22307     (eval "$lt_compile" 2>conftest.err)
22308     ac_status=$?
22309     cat conftest.err >&5
22310 -   echo "$as_me:17317: \$? = $ac_status" >&5
22311 +   echo "$as_me:17426: \$? = $ac_status" >&5
22312     if (exit $ac_status) && test -s "$ac_outfile"; then
22313       # The compiler can only warn and ignore the option if not recognized
22314       # So say no if there are warnings other than the usual output.
22315 @@ -17415,11 +17524,11 @@
22316     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
22317     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
22318     -e 's:$: $lt_compiler_flag:'`
22319 -   (eval echo "\"\$as_me:17418: $lt_compile\"" >&5)
22320 +   (eval echo "\"\$as_me:17527: $lt_compile\"" >&5)
22321     (eval "$lt_compile" 2>out/conftest.err)
22322     ac_status=$?
22323     cat out/conftest.err >&5
22324 -   echo "$as_me:17422: \$? = $ac_status" >&5
22325 +   echo "$as_me:17531: \$? = $ac_status" >&5
22326     if (exit $ac_status) && test -s out/conftest2.$ac_objext
22327     then
22328       # The compiler can only warn and ignore the option if not recognized
22329 @@ -17470,11 +17579,11 @@
22330     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
22331     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
22332     -e 's:$: $lt_compiler_flag:'`
22333 -   (eval echo "\"\$as_me:17473: $lt_compile\"" >&5)
22334 +   (eval echo "\"\$as_me:17582: $lt_compile\"" >&5)
22335     (eval "$lt_compile" 2>out/conftest.err)
22336     ac_status=$?
22337     cat out/conftest.err >&5
22338 -   echo "$as_me:17477: \$? = $ac_status" >&5
22339 +   echo "$as_me:17586: \$? = $ac_status" >&5
22340     if (exit $ac_status) && test -s out/conftest2.$ac_objext
22341     then
22342       # The compiler can only warn and ignore the option if not recognized
22343 @@ -20282,7 +20391,7 @@
22344    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
22345    lt_status=$lt_dlunknown
22346    cat > conftest.$ac_ext <<_LT_EOF
22347 -#line 20285 "configure"
22348 +#line 20394 "configure"
22349  #include "confdefs.h"
22350  
22351  #if HAVE_DLFCN_H
22352 @@ -20378,7 +20487,7 @@
22353    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
22354    lt_status=$lt_dlunknown
22355    cat > conftest.$ac_ext <<_LT_EOF
22356 -#line 20381 "configure"
22357 +#line 20490 "configure"
22358  #include "confdefs.h"
22359  
22360  #if HAVE_DLFCN_H
22361 @@ -22108,6 +22217,22 @@
22362         tls_first_minor=16
22363         tls_as_opt='-32 --fatal-warnings'
22364         ;;
22365 +  m68k-*-*)
22366 +    conftest_s='
22367 +       .section .tdata,"awT",@progbits
22368 +x:
22369 +       .word 2
22370 +       .text
22371 +foo:
22372 +       move.l x@TLSGD(%a5),%a0
22373 +       move.l x@TLSLDM(%a5),%a0
22374 +       move.l x@TLSLDO(%a5),%a0
22375 +       move.l x@TLSIE(%a5),%a0
22376 +       move.l x@TLSLE(%a5),%a0'
22377 +       tls_first_major=2
22378 +       tls_first_minor=19
22379 +       tls_as_opt='--fatal-warnings'
22380 +       ;;
22381    powerpc-*-*)
22382      conftest_s='
22383         .section ".tdata","awT",@progbits
22384 @@ -22739,6 +22864,44 @@
22385    i[34567]86-*-* | x86_64-*-*)
22386      case $target_os in
22387        cygwin* | pe | mingw32*)
22388 +       # Recent binutils allows the three-operand form of ".comm" on PE.  This
22389 +       # definition is used unconditionally to initialise the default state of
22390 +       # the target option variable that governs usage of the feature.
22391 +       echo "$as_me:$LINENO: checking assembler for .comm with alignment" >&5
22392 +echo $ECHO_N "checking assembler for .comm with alignment... $ECHO_C" >&6
22393 +if test "${gcc_cv_as_comm_has_align+set}" = set; then
22394 +  echo $ECHO_N "(cached) $ECHO_C" >&6
22395 +else
22396 +  gcc_cv_as_comm_has_align=no
22397 +    if test $in_tree_gas = yes; then
22398 +    if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 19 \) \* 1000 + 52`
22399 +  then gcc_cv_as_comm_has_align=yes
22400 +fi
22401 +  elif test x$gcc_cv_as != x; then
22402 +    echo '.comm foo,1,32' > conftest.s
22403 +    if { ac_try='$gcc_cv_as  -o conftest.o conftest.s >&5'
22404 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
22405 +  (eval $ac_try) 2>&5
22406 +  ac_status=$?
22407 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
22408 +  (exit $ac_status); }; }
22409 +    then
22410 +       gcc_cv_as_comm_has_align=yes
22411 +    else
22412 +      echo "configure: failed program was" >&5
22413 +      cat conftest.s >&5
22414 +    fi
22415 +    rm -f conftest.o conftest.s
22416 +  fi
22417 +fi
22418 +echo "$as_me:$LINENO: result: $gcc_cv_as_comm_has_align" >&5
22419 +echo "${ECHO_T}$gcc_cv_as_comm_has_align" >&6
22420 +
22421 +
22422 +cat >>confdefs.h <<_ACEOF
22423 +#define HAVE_GAS_ALIGNED_COMM `if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`
22424 +_ACEOF
22425 +
22426         # Used for DWARF 2 in PE
22427         echo "$as_me:$LINENO: checking assembler for .secrel32 relocs" >&5
22428  echo $ECHO_N "checking assembler for .secrel32 relocs... $ECHO_C" >&6
22429 @@ -24711,6 +24874,21 @@
22430  fi;
22431  
22432  
22433 +# Check whether --enable-poison-system-directories or --disable-poison-system-directories was given.
22434 +if test "${enable_poison_system_directories+set}" = set; then
22435 +  enableval="$enable_poison_system_directories"
22436 +
22437 +else
22438 +  enable_poison_system_directories=no
22439 +fi;
22440 +if test "x${enable_poison_system_directories}" = "xyes"; then
22441 +
22442 +cat >>confdefs.h <<\_ACEOF
22443 +#define ENABLE_POISON_SYSTEM_DIRECTORIES 1
22444 +_ACEOF
22445 +
22446 +fi
22447 +
22448  # Substitute configuration variables
22449  
22450  
22451 @@ -25451,6 +25629,7 @@
22452  s,@target_vendor@,$target_vendor,;t t
22453  s,@target_os@,$target_os,;t t
22454  s,@target_noncanonical@,$target_noncanonical,;t t
22455 +s,@licensedir@,$licensedir,;t t
22456  s,@build_libsubdir@,$build_libsubdir,;t t
22457  s,@build_subdir@,$build_subdir,;t t
22458  s,@host_subdir@,$host_subdir,;t t
22459 @@ -25487,6 +25666,8 @@
22460  s,@TARGET_SYSTEM_ROOT@,$TARGET_SYSTEM_ROOT,;t t
22461  s,@TARGET_SYSTEM_ROOT_DEFINE@,$TARGET_SYSTEM_ROOT_DEFINE,;t t
22462  s,@CROSS_SYSTEM_HEADER_DIR@,$CROSS_SYSTEM_HEADER_DIR,;t t
22463 +s,@EGLIBC_CONFIGS@,$EGLIBC_CONFIGS,;t t
22464 +s,@CONFIGURE_SPECS@,$CONFIGURE_SPECS,;t t
22465  s,@onestep@,$onestep,;t t
22466  s,@PKGVERSION@,$PKGVERSION,;t t
22467  s,@REPORT_BUGS_TO@,$REPORT_BUGS_TO,;t t
22468 @@ -25606,6 +25787,9 @@
22469  s,@cpp_install_dir@,$cpp_install_dir,;t t
22470  s,@xmake_file@,$xmake_file,;t t
22471  s,@tmake_file@,$tmake_file,;t t
22472 +s,@TM_ENDIAN_CONFIG@,$TM_ENDIAN_CONFIG,;t t
22473 +s,@TM_MULTILIB_CONFIG@,$TM_MULTILIB_CONFIG,;t t
22474 +s,@TM_MULTILIB_EXCEPTIONS_CONFIG@,$TM_MULTILIB_EXCEPTIONS_CONFIG,;t t
22475  s,@extra_gcc_objs@,$extra_gcc_objs,;t t
22476  s,@extra_headers_list@,$extra_headers_list,;t t
22477  s,@extra_objs@,$extra_objs,;t t
22478 diff -Nur a/gcc/configure.ac b/gcc/configure.ac
22479 --- a/gcc/configure.ac  2009-03-24 18:46:03.000000000 +0100
22480 +++ b/gcc/configure.ac  2010-01-25 09:50:29.085687411 +0100
22481 @@ -39,6 +39,10 @@
22482  # Determine the noncanonical target name, for directory use.
22483  ACX_NONCANONICAL_TARGET
22484  
22485 +CSL_AC_LICENSE_VERSION
22486 +CSL_AC_LICENSE
22487 +CSL_AC_LICENSE_FEATURE
22488 +
22489  # Determine the target- and build-specific subdirectories
22490  GCC_TOPLEV_SUBDIRS
22491  
22492 @@ -770,6 +774,22 @@
22493  AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
22494  AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
22495  
22496 +AC_ARG_WITH(eglibc-configs,
22497 +  [AS_HELP_STRING([--with-eglibc-configs=CONFIGS],
22498 +                  [build multilibs for these EGLIBC configurations])],
22499 +  [EGLIBC_CONFIGS=$withval],
22500 +  [EGLIBC_CONFIGS=]
22501 +)
22502 +AC_SUBST(EGLIBC_CONFIGS)
22503 +
22504 +AC_ARG_WITH(specs,
22505 +  [AS_HELP_STRING([--with-specs=SPECS],
22506 +                  [add SPECS to driver command-line processing])],
22507 +  [CONFIGURE_SPECS=$withval],
22508 +  [CONFIGURE_SPECS=]
22509 +)
22510 +AC_SUBST(CONFIGURE_SPECS)
22511 +
22512  # Build with intermodule optimisations
22513  AC_ARG_ENABLE(intermodule,
22514  [  --enable-intermodule    build the compiler in one step],
22515 @@ -810,6 +830,11 @@
22516  AC_SUBST(docdir)
22517  AC_SUBST(htmldir)
22518  
22519 +AC_ARG_WITH(multilib-list,
22520 +[  --with-multilib-list    Select multilibs (SH only)],
22521 +:,
22522 +with_multilib_list=default)
22523 +
22524  # -------------------------
22525  # Checks for other programs
22526  # -------------------------
22527 @@ -2576,6 +2601,22 @@
22528         tls_first_minor=16
22529         tls_as_opt='-32 --fatal-warnings'
22530         ;;
22531 +  m68k-*-*)
22532 +    conftest_s='
22533 +       .section .tdata,"awT",@progbits
22534 +x:
22535 +       .word 2
22536 +       .text
22537 +foo:
22538 +       move.l x@TLSGD(%a5),%a0
22539 +       move.l x@TLSLDM(%a5),%a0
22540 +       move.l x@TLSLDO(%a5),%a0
22541 +       move.l x@TLSIE(%a5),%a0
22542 +       move.l x@TLSLE(%a5),%a0'
22543 +       tls_first_major=2
22544 +       tls_first_minor=19
22545 +       tls_as_opt='--fatal-warnings'
22546 +       ;;
22547    powerpc-*-*)
22548      conftest_s='
22549         .section ".tdata","awT",@progbits
22550 @@ -2944,6 +2985,15 @@
22551  changequote([,])dnl
22552      case $target_os in
22553        cygwin* | pe | mingw32*)
22554 +       # Recent binutils allows the three-operand form of ".comm" on PE.  This
22555 +       # definition is used unconditionally to initialise the default state of
22556 +       # the target option variable that governs usage of the feature.
22557 +       gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
22558 +        [2,19,52],,[.comm foo,1,32])
22559 +       AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
22560 +         [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
22561 +         [Define if your assembler supports specifying the alignment
22562 +          of objects allocated using the GAS .comm command.])
22563         # Used for DWARF 2 in PE
22564         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
22565           gcc_cv_as_ix86_pe_secrel32,
22566 @@ -3891,6 +3941,16 @@
22567  htmldir='$(docdir)')
22568  AC_SUBST(htmldir)
22569  
22570 +AC_ARG_ENABLE([poison-system-directories],
22571 +             AS_HELP_STRING([--enable-poison-system-directories],
22572 +                            [warn for use of native system header directories]),,
22573 +             [enable_poison_system_directories=no])
22574 +if test "x${enable_poison_system_directories}" = "xyes"; then
22575 +  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
22576 +           [1],
22577 +           [Define to warn for use of native system header directories])
22578 +fi
22579 +
22580  # Substitute configuration variables
22581  AC_SUBST(subdirs)
22582  AC_SUBST(srcdir)
22583 @@ -3910,6 +3970,9 @@
22584  AC_SUBST(cpp_install_dir)
22585  AC_SUBST(xmake_file)
22586  AC_SUBST(tmake_file)
22587 +AC_SUBST(TM_ENDIAN_CONFIG)
22588 +AC_SUBST(TM_MULTILIB_CONFIG)
22589 +AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
22590  AC_SUBST(extra_gcc_objs)
22591  AC_SUBST(extra_headers_list)
22592  AC_SUBST(extra_objs)
22593 diff -Nur a/gcc/c.opt b/gcc/c.opt
22594 --- a/gcc/c.opt 2009-03-18 22:14:53.000000000 +0100
22595 +++ b/gcc/c.opt 2010-01-25 09:50:29.085687411 +0100
22596 @@ -716,6 +716,10 @@
22597  C ObjC C++ ObjC++
22598  Treat the input file as already preprocessed
22599  
22600 +fremove-local-statics
22601 +C C++ Var(flag_remove_local_statics) Optimization
22602 +Convert function-local static variables to automatic variables when it is safe to do so
22603 +
22604  freplace-objc-classes
22605  ObjC ObjC++
22606  Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime
22607 diff -Nur a/gcc/c-opts.c b/gcc/c-opts.c
22608 --- a/gcc/c-opts.c      2009-02-18 03:16:03.000000000 +0100
22609 +++ b/gcc/c-opts.c      2010-01-25 09:50:29.095687705 +0100
22610 @@ -40,6 +40,7 @@
22611  #include "mkdeps.h"
22612  #include "target.h"
22613  #include "tm_p.h"
22614 +#include "c-tree.h"            /* For c_cpp_error.  */
22615  
22616  #ifndef DOLLARS_IN_IDENTIFIERS
22617  # define DOLLARS_IN_IDENTIFIERS true
22618 @@ -201,6 +202,7 @@
22619  {
22620    static const unsigned int lang_flags[] = {CL_C, CL_ObjC, CL_CXX, CL_ObjCXX};
22621    unsigned int i, result;
22622 +  struct cpp_callbacks *cb;
22623  
22624    /* This is conditionalized only because that is the way the front
22625       ends used to do it.  Maybe this should be unconditional?  */
22626 @@ -216,6 +218,8 @@
22627  
22628    parse_in = cpp_create_reader (c_dialect_cxx () ? CLK_GNUCXX: CLK_GNUC89,
22629                                 ident_hash, line_table);
22630 +  cb = cpp_get_callbacks (parse_in);
22631 +  cb->error = c_cpp_error;
22632  
22633    cpp_opts = cpp_get_options (parse_in);
22634    cpp_opts->dollars_in_ident = DOLLARS_IN_IDENTIFIERS;
22635 @@ -333,12 +337,12 @@
22636          or environment var dependency generation is used.  */
22637        cpp_opts->deps.style = (code == OPT_M ? DEPS_SYSTEM: DEPS_USER);
22638        flag_no_output = 1;
22639 -      cpp_opts->inhibit_warnings = 1;
22640        break;
22641  
22642      case OPT_MD:
22643      case OPT_MMD:
22644        cpp_opts->deps.style = (code == OPT_MD ? DEPS_SYSTEM: DEPS_USER);
22645 +      cpp_opts->deps.need_preprocessor_output = true;
22646        deps_file = arg;
22647        break;
22648  
22649 @@ -444,7 +448,6 @@
22650        break;
22651  
22652      case OPT_Werror:
22653 -      cpp_opts->warnings_are_errors = value;
22654        global_dc->warning_as_error_requested = value;
22655        break;
22656  
22657 @@ -503,10 +506,6 @@
22658        warn_strict_null_sentinel = value;
22659        break;
22660  
22661 -    case OPT_Wsystem_headers:
22662 -      cpp_opts->warn_system_headers = value;
22663 -      break;
22664 -
22665      case OPT_Wtraditional:
22666        cpp_opts->warn_traditional = value;
22667        break;
22668 @@ -895,8 +894,6 @@
22669          c_common_post_options, so that a subsequent -Wno-endif-labels
22670          is not overridden.  */
22671      case OPT_pedantic_errors:
22672 -      cpp_opts->pedantic_errors = 1;
22673 -      /* Fall through.  */
22674      case OPT_pedantic:
22675        cpp_opts->pedantic = 1;
22676        cpp_opts->warn_endif_labels = 1;
22677 @@ -971,10 +968,6 @@
22678        flag_undef = 1;
22679        break;
22680  
22681 -    case OPT_w:
22682 -      cpp_opts->inhibit_warnings = 1;
22683 -      break;
22684 -
22685      case OPT_v:
22686        verbose = true;
22687        break;
22688 @@ -1159,10 +1152,6 @@
22689  
22690    input_location = UNKNOWN_LOCATION;
22691  
22692 -  /* If an error has occurred in cpplib, note it so we fail
22693 -     immediately.  */
22694 -  errorcount += cpp_errors (parse_in);
22695 -
22696    *pfilename = this_input_filename
22697      = cpp_read_main_file (parse_in, in_fnames[0]);
22698    /* Don't do any compilation or preprocessing if there is no input file.  */
22699 @@ -1274,7 +1263,8 @@
22700  {
22701    FILE *deps_stream = NULL;
22702  
22703 -  if (cpp_opts->deps.style != DEPS_NONE)
22704 +  /* Don't write the deps file if there are errors.  */
22705 +  if (cpp_opts->deps.style != DEPS_NONE && errorcount == 0)
22706      {
22707        /* If -M or -MM was seen without -MF, default output to the
22708          output stream.  */
22709 @@ -1290,7 +1280,7 @@
22710  
22711    /* For performance, avoid tearing down cpplib's internal structures
22712       with cpp_destroy ().  */
22713 -  errorcount += cpp_finish (parse_in, deps_stream);
22714 +  cpp_finish (parse_in, deps_stream);
22715  
22716    if (deps_stream && deps_stream != out_stream
22717        && (ferror (deps_stream) || fclose (deps_stream)))
22718 diff -Nur a/gcc/cp/class.c b/gcc/cp/class.c
22719 --- a/gcc/cp/class.c    2009-06-24 19:02:03.000000000 +0200
22720 +++ b/gcc/cp/class.c    2010-01-25 09:50:29.095687705 +0100
22721 @@ -6136,7 +6136,7 @@
22722        if (flags & tf_error)
22723         {
22724           error ("no matches converting function %qD to type %q#T",
22725 -                DECL_NAME (OVL_FUNCTION (overload)),
22726 +                DECL_NAME (OVL_CURRENT (overload)),
22727                  target_type);
22728  
22729           /* print_candidates expects a chain with the functions in
22730 @@ -6299,13 +6299,8 @@
22731       dependent on overload resolution.  */
22732    gcc_assert (TREE_CODE (rhs) == ADDR_EXPR
22733               || TREE_CODE (rhs) == COMPONENT_REF
22734 -             || TREE_CODE (rhs) == COMPOUND_EXPR
22735 -             || really_overloaded_fn (rhs));
22736 -
22737 -  /* We don't overwrite rhs if it is an overloaded function.
22738 -     Copying it would destroy the tree link.  */
22739 -  if (TREE_CODE (rhs) != OVERLOAD)
22740 -    rhs = copy_node (rhs);
22741 +             || really_overloaded_fn (rhs)
22742 +             || (flag_ms_extensions && TREE_CODE (rhs) == FUNCTION_DECL));
22743  
22744    /* This should really only be used when attempting to distinguish
22745       what sort of a pointer to function we have.  For now, any
22746 @@ -6357,19 +6352,6 @@
22747                                                 /*explicit_targs=*/NULL_TREE,
22748                                                 access_path);
22749  
22750 -    case COMPOUND_EXPR:
22751 -      TREE_OPERAND (rhs, 0)
22752 -       = instantiate_type (lhstype, TREE_OPERAND (rhs, 0), flags);
22753 -      if (TREE_OPERAND (rhs, 0) == error_mark_node)
22754 -       return error_mark_node;
22755 -      TREE_OPERAND (rhs, 1)
22756 -       = instantiate_type (lhstype, TREE_OPERAND (rhs, 1), flags);
22757 -      if (TREE_OPERAND (rhs, 1) == error_mark_node)
22758 -       return error_mark_node;
22759 -
22760 -      TREE_TYPE (rhs) = lhstype;
22761 -      return rhs;
22762 -
22763      case ADDR_EXPR:
22764      {
22765        if (PTRMEM_OK_P (rhs))
22766 diff -Nur a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
22767 --- a/gcc/cp/cp-tree.h  2009-07-13 08:06:27.000000000 +0200
22768 +++ b/gcc/cp/cp-tree.h  2010-01-25 09:50:29.095687705 +0100
22769 @@ -43,9 +43,6 @@
22770  #else
22771  #define ATTRIBUTE_GCC_CXXDIAG(m, n) ATTRIBUTE_NONNULL(m)
22772  #endif
22773 -extern void cp_cpp_error                       (cpp_reader *, int,
22774 -                                                const char *, va_list *)
22775 -     ATTRIBUTE_GCC_CXXDIAG(3,0);
22776  #ifdef GCC_TOPLEV_H
22777  #error \
22778  In order for the format checking to accept the C++ front end diagnostic \
22779 diff -Nur a/gcc/cp/cvt.c b/gcc/cp/cvt.c
22780 --- a/gcc/cp/cvt.c      2009-04-23 13:13:57.000000000 +0200
22781 +++ b/gcc/cp/cvt.c      2010-01-25 09:50:29.095687705 +0100
22782 @@ -581,6 +581,7 @@
22783    tree e = expr;
22784    enum tree_code code = TREE_CODE (type);
22785    const char *invalid_conv_diag;
22786 +  tree e1;
22787  
22788    if (error_operand_p (e) || type == error_mark_node)
22789      return error_mark_node;
22790 @@ -629,6 +630,10 @@
22791         }
22792      }
22793  
22794 +  e1 = targetm.convert_to_type (type, e);
22795 +  if (e1)
22796 +    return e1;
22797 +
22798    if (code == VOID_TYPE && (convtype & CONV_STATIC))
22799      {
22800        e = convert_to_void (e, /*implicit=*/NULL, tf_warning_or_error);
22801 @@ -1231,11 +1236,18 @@
22802  tree
22803  type_promotes_to (tree type)
22804  {
22805 +  tree promoted_type;
22806 +
22807    if (type == error_mark_node)
22808      return error_mark_node;
22809  
22810    type = TYPE_MAIN_VARIANT (type);
22811  
22812 +  /* Check for promotions of target-defined types first.  */
22813 +  promoted_type = targetm.promoted_type (type);
22814 +  if (promoted_type)
22815 +    return promoted_type;
22816 +
22817    /* bool always promotes to int (not unsigned), even if it's the same
22818       size.  */
22819    if (type == boolean_type_node)
22820 diff -Nur a/gcc/cp/decl2.c b/gcc/cp/decl2.c
22821 --- a/gcc/cp/decl2.c    2009-06-09 20:20:29.000000000 +0200
22822 +++ b/gcc/cp/decl2.c    2010-01-25 09:50:29.095687705 +0100
22823 @@ -1717,6 +1717,10 @@
22824        || (DECL_ASSEMBLER_NAME_SET_P (decl)
22825           && TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl))))
22826        return true;
22827 +  /* Functions marked "dllexport" must be emitted so that they are
22828 +     visible to other DLLs.  */
22829 +  if (lookup_attribute ("dllexport", DECL_ATTRIBUTES (decl)))
22830 +    return true;
22831    /* Otherwise, DECL does not need to be emitted -- yet.  A subsequent
22832       reference to DECL might cause it to be emitted later.  */
22833    return false;
22834 @@ -3802,6 +3806,15 @@
22835      }
22836  
22837    TREE_USED (decl) = 1;
22838 +  if (current_function_decl != NULL_TREE
22839 +      && (TREE_CODE (decl) == VAR_DECL
22840 +         || TREE_CODE (decl) == PARM_DECL
22841 +         || TREE_CODE (decl) == FUNCTION_DECL))
22842 +    {
22843 +      tree context = decl_function_context (decl);
22844 +      if (context != NULL_TREE && context != current_function_decl)
22845 +       DECL_NONLOCAL (decl) = 1;
22846 +    }
22847    if (DECL_CLONED_FUNCTION_P (decl))
22848      TREE_USED (DECL_CLONED_FUNCTION (decl)) = 1;
22849    if (TREE_CODE (decl) == FUNCTION_DECL
22850 diff -Nur a/gcc/cp/decl.c b/gcc/cp/decl.c
22851 --- a/gcc/cp/decl.c     2009-07-08 00:08:01.000000000 +0200
22852 +++ b/gcc/cp/decl.c     2010-01-25 09:50:29.095687705 +0100
22853 @@ -4515,7 +4515,7 @@
22854  
22855        cp_apply_type_quals_to_decl (cp_type_quals (TREE_TYPE (decl)), decl);
22856  
22857 -      layout_decl (decl, 0);
22858 +      relayout_decl (decl);
22859      }
22860  }
22861  
22862 @@ -7620,6 +7620,7 @@
22863    bool parameter_pack_p = declarator? declarator->parameter_pack_p : false;
22864    bool set_no_warning = false;
22865    bool template_type_arg = false;
22866 +  const char *errmsg;
22867  
22868    signed_p = declspecs->specs[(int)ds_signed];
22869    unsigned_p = declspecs->specs[(int)ds_unsigned];
22870 @@ -8299,6 +8300,12 @@
22871                 type_quals = TYPE_UNQUALIFIED;
22872                 set_no_warning = true;
22873               }
22874 +           errmsg = targetm.invalid_return_type (type);
22875 +           if (errmsg)
22876 +             {
22877 +               error (errmsg);
22878 +               type = integer_type_node;
22879 +             }
22880  
22881             /* Error about some types functions can't return.  */
22882  
22883 @@ -8841,8 +8848,13 @@
22884  
22885           /* Replace the anonymous name with the real name everywhere.  */
22886           for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t))
22887 -           if (TYPE_NAME (t) == oldname)
22888 -             TYPE_NAME (t) = decl;
22889 +           {
22890 +             if (ANON_AGGRNAME_P (TYPE_IDENTIFIER (t)))
22891 +               {
22892 +                 debug_hooks->set_name (t, decl);
22893 +                 TYPE_NAME (t) = decl;
22894 +               }
22895 +           }
22896  
22897           if (TYPE_LANG_SPECIFIC (type))
22898             TYPE_WAS_ANONYMOUS (type) = 1;
22899 @@ -9679,6 +9691,7 @@
22900        tree type = NULL_TREE;
22901        tree init = TREE_PURPOSE (parm);
22902        tree decl = TREE_VALUE (parm);
22903 +      const char *errmsg;
22904  
22905        if (parm == void_list_node)
22906         break;
22907 @@ -9712,6 +9725,14 @@
22908           init = NULL_TREE;
22909         }
22910  
22911 +      if (type != error_mark_node
22912 +         && (errmsg = targetm.invalid_parameter_type (type)))
22913 +       {
22914 +         error (errmsg);
22915 +         type = error_mark_node;
22916 +         TREE_TYPE (decl) = error_mark_node;
22917 +       }
22918 +
22919        if (type != error_mark_node)
22920         {
22921           if (deprecated_state != DEPRECATED_SUPPRESS)
22922 diff -Nur a/gcc/cp/error.c b/gcc/cp/error.c
22923 --- a/gcc/cp/error.c    2009-07-11 00:31:34.000000000 +0200
22924 +++ b/gcc/cp/error.c    2010-01-25 09:50:29.095687705 +0100
22925 @@ -2667,39 +2667,6 @@
22926  #undef next_int
22927  }
22928  \f
22929 -/* Callback from cpp_error for PFILE to print diagnostics arising from
22930 -   interpreting strings.  The diagnostic is of type LEVEL; MSG is the
22931 -   translated message and AP the arguments.  */
22932 -
22933 -void
22934 -cp_cpp_error (cpp_reader *pfile ATTRIBUTE_UNUSED, int level,
22935 -             const char *msg, va_list *ap)
22936 -{
22937 -  diagnostic_info diagnostic;
22938 -  diagnostic_t dlevel;
22939 -  switch (level)
22940 -    {
22941 -    case CPP_DL_WARNING:
22942 -    case CPP_DL_WARNING_SYSHDR:
22943 -      dlevel = DK_WARNING;
22944 -      break;
22945 -    case CPP_DL_PEDWARN:
22946 -      dlevel = DK_PEDWARN;
22947 -      break;
22948 -    case CPP_DL_ERROR:
22949 -      dlevel = DK_ERROR;
22950 -      break;
22951 -    case CPP_DL_ICE:
22952 -      dlevel = DK_ICE;
22953 -      break;
22954 -    default:
22955 -      gcc_unreachable ();
22956 -    }
22957 -  diagnostic_set_info_translated (&diagnostic, msg, ap,
22958 -                                 input_location, dlevel);
22959 -  report_diagnostic (&diagnostic);
22960 -}
22961 -
22962  /* Warn about the use of C++0x features when appropriate.  */
22963  void
22964  maybe_warn_cpp0x (const char* str)
22965 diff -Nur a/gcc/cp/except.c b/gcc/cp/except.c
22966 --- a/gcc/cp/except.c   2008-08-18 13:17:52.000000000 +0200
22967 +++ b/gcc/cp/except.c   2010-01-25 09:50:29.095687705 +0100
22968 @@ -146,14 +146,26 @@
22969  static tree
22970  build_eh_type_type (tree type)
22971  {
22972 -  tree exp = eh_type_info (type);
22973 +  bool is_ref = TREE_CODE (type) == REFERENCE_TYPE;
22974 +  tree exp;
22975 +  
22976 +  if (is_ref)
22977 +    type = TREE_TYPE (type);
22978 +  
22979 +  exp = eh_type_info (type);
22980  
22981    if (!exp)
22982      return NULL;
22983  
22984    mark_used (exp);
22985  
22986 -  return convert (ptr_type_node, build_address (exp));
22987 +  exp = build_address (exp);
22988 +  
22989 +  if (is_ref)
22990 +    exp = targetm.cxx.ttype_ref_encode (exp);
22991 +
22992 +  exp = convert (ptr_type_node, exp);
22993 +  return exp;
22994  }
22995  
22996  tree
22997 @@ -495,6 +507,16 @@
22998        initialize_handler_parm (decl, exp);
22999      }
23000  
23001 +  /* Preserve the reference type on the exception, as this affects
23002 +     derived-to-base conversions in catch matching.  Only do this when
23003 +     the ABI supports it, as originally this case was (incorrectly)
23004 +     treated just as catching a pointer-to-class by value. */
23005 +  if (targetm.cxx.ttype_ref_encode
23006 +      && decl && TREE_CODE (type) == POINTER_TYPE
23007 +      && CLASS_TYPE_P (TREE_TYPE (type))
23008 +      && TREE_CODE (TREE_TYPE (decl)) == REFERENCE_TYPE)
23009 +    type = build_reference_type (type);
23010 +
23011    return type;
23012  }
23013  
23014 @@ -538,10 +560,20 @@
23015         raw_raises && TREE_VALUE (raw_raises);
23016         raw_raises = TREE_CHAIN (raw_raises))
23017      {
23018 -      tree type = prepare_eh_type (TREE_VALUE (raw_raises));
23019 +      tree orig_type = TREE_VALUE (raw_raises);
23020 +      tree type = prepare_eh_type (orig_type);
23021        tree tinfo = eh_type_info (type);
23022  
23023        mark_used (tinfo);
23024 +      /* Preserve the reference type on the exception, as this affects
23025 +        derived-to-base conversions in catch matching.  Only do this when
23026 +        the ABI supports it, as originally this case was (incorrectly)
23027 +        treated just as catching a pointer-to-class by value. */
23028 +      if (targetm.cxx.ttype_ref_encode
23029 +         && TREE_CODE (orig_type) == REFERENCE_TYPE
23030 +         && TREE_CODE (type) == POINTER_TYPE
23031 +         && CLASS_TYPE_P (TREE_TYPE (type)))
23032 +       type = build_reference_type (type);
23033        raises = tree_cons (NULL_TREE, type, raises);
23034      }
23035  
23036 @@ -956,24 +988,40 @@
23037  static int
23038  can_convert_eh (tree to, tree from)
23039  {
23040 -  to = non_reference (to);
23041 -  from = non_reference (from);
23042 +  bool to_ref = TREE_CODE (to) == REFERENCE_TYPE;
23043 +  int depth = to_ref;
23044 +  bool outer_const = true;
23045  
23046 -  if (TREE_CODE (to) == POINTER_TYPE && TREE_CODE (from) == POINTER_TYPE)
23047 +  if (to_ref)
23048 +    to = TREE_TYPE (to);
23049 +  from = non_reference (from);
23050 +  
23051 +  while (TREE_CODE (to) == POINTER_TYPE && TREE_CODE (from) == POINTER_TYPE)
23052      {
23053 +      unsigned to_quals, from_quals;
23054 +      
23055 +      depth++;
23056 +      
23057        to = TREE_TYPE (to);
23058        from = TREE_TYPE (from);
23059 +      to_quals = TYPE_QUALS (to);
23060 +      from_quals = TYPE_QUALS (from);
23061  
23062 -      if (! at_least_as_qualified_p (to, from))
23063 +      if ((from_quals & ~to_quals)
23064 +         || (!outer_const && to_quals & ~from_quals))
23065         return 0;
23066 -
23067 -      if (TREE_CODE (to) == VOID_TYPE)
23068 -       return 1;
23069 -
23070 -      /* Else fall through.  */
23071 +       
23072 +      if (!(to_quals & TYPE_QUAL_CONST))
23073 +       outer_const = false;
23074      }
23075  
23076 -  if (CLASS_TYPE_P (to) && CLASS_TYPE_P (from)
23077 +  if (same_type_ignoring_top_level_qualifiers_p (from, to))
23078 +    return 1;
23079 +
23080 +  if (depth == to_ref + 1 && TREE_CODE (to) == VOID_TYPE)
23081 +    return 1;
23082 +  
23083 +  if (depth < 2 && CLASS_TYPE_P (to) && CLASS_TYPE_P (from)
23084        && PUBLICLY_UNIQUELY_DERIVED_P (to, from))
23085      return 1;
23086  
23087 diff -Nur a/gcc/cp/parser.c b/gcc/cp/parser.c
23088 --- a/gcc/cp/parser.c   2009-06-09 06:23:00.000000000 +0200
23089 +++ b/gcc/cp/parser.c   2010-01-25 09:50:29.105687718 +0100
23090 @@ -309,8 +309,7 @@
23091  
23092    /* Subsequent preprocessor diagnostics should use compiler
23093       diagnostic functions to get the compiler source location.  */
23094 -  cpp_get_options (parse_in)->client_diagnostic = true;
23095 -  cpp_get_callbacks (parse_in)->error = cp_cpp_error;
23096 +  done_lexing = true;
23097  
23098    gcc_assert (lexer->next_token->type != CPP_PURGED);
23099    return lexer;
23100 diff -Nur a/gcc/cp/rtti.c b/gcc/cp/rtti.c
23101 --- a/gcc/cp/rtti.c     2008-09-23 16:55:14.000000000 +0200
23102 +++ b/gcc/cp/rtti.c     2010-01-25 09:50:29.105687718 +0100
23103 @@ -393,6 +393,7 @@
23104         return d;
23105      }
23106  
23107 +  gcc_assert (TREE_CODE (type) != REFERENCE_TYPE);
23108    name = mangle_typeinfo_for_type (type);
23109  
23110    d = IDENTIFIER_GLOBAL_VALUE (name);
23111 diff -Nur a/gcc/cp/semantics.c b/gcc/cp/semantics.c
23112 --- a/gcc/cp/semantics.c        2009-07-14 20:35:13.000000000 +0200
23113 +++ b/gcc/cp/semantics.c        2010-01-25 09:50:29.105687718 +0100
23114 @@ -1120,7 +1120,11 @@
23115      type = expand_start_catch_block (decl);
23116    HANDLER_TYPE (handler) = type;
23117    if (!processing_template_decl && type)
23118 -    mark_used (eh_type_info (type));
23119 +    {
23120 +      if (TREE_CODE (type) == REFERENCE_TYPE)
23121 +       type = TREE_TYPE (type);
23122 +      mark_used (eh_type_info (type));
23123 +    }
23124  }
23125  
23126  /* Finish a handler, which may be given by HANDLER.  The BLOCKs are
23127 @@ -3243,8 +3247,10 @@
23128  
23129        /* If the user wants us to keep all inline functions, then mark
23130          this function as needed so that finish_file will make sure to
23131 -        output it later.  */
23132 -      if (flag_keep_inline_functions && DECL_DECLARED_INLINE_P (fn))
23133 +        output it later.  Similarly, all dllexport'd functions must
23134 +        be emitted; there may be callers in other DLLs.  */
23135 +      if ((flag_keep_inline_functions && DECL_DECLARED_INLINE_P (fn))
23136 +         || lookup_attribute ("dllexport", DECL_ATTRIBUTES (fn)))
23137         mark_needed (fn);
23138      }
23139  
23140 diff -Nur a/gcc/cp/typeck.c b/gcc/cp/typeck.c
23141 --- a/gcc/cp/typeck.c   2009-07-13 08:06:27.000000000 +0200
23142 +++ b/gcc/cp/typeck.c   2010-01-25 09:50:29.105687718 +0100
23143 @@ -1707,10 +1707,14 @@
23144  tree
23145  default_conversion (tree exp)
23146  {
23147 +  /* Check for target-specific promotions.  */
23148 +  tree promoted_type = targetm.promoted_type (TREE_TYPE (exp));
23149 +  if (promoted_type)
23150 +    exp = cp_convert (promoted_type, exp);
23151    /* Perform the integral promotions first so that bitfield
23152       expressions (which may promote to "int", even if the bitfield is
23153       declared "unsigned") are promoted correctly.  */
23154 -  if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (TREE_TYPE (exp)))
23155 +  else if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (TREE_TYPE (exp)))
23156      exp = perform_integral_promotions (exp);
23157    /* Perform the other conversions.  */
23158    exp = decay_conversion (exp);
23159 @@ -3389,6 +3393,25 @@
23160        return error_mark_node;
23161      }
23162  
23163 +  /* Issue warnings about peculiar, but valid, uses of NULL.  */
23164 +  if ((orig_op0 == null_node || orig_op1 == null_node)
23165 +      /* It's reasonable to use pointer values as operands of &&
23166 +        and ||, so NULL is no exception.  */
23167 +      && code != TRUTH_ANDIF_EXPR && code != TRUTH_ORIF_EXPR 
23168 +      && ( /* Both are NULL (or 0) and the operation was not a
23169 +             comparison or a pointer subtraction.  */
23170 +         (null_ptr_cst_p (orig_op0) && null_ptr_cst_p (orig_op1) 
23171 +          && code != EQ_EXPR && code != NE_EXPR && code != MINUS_EXPR) 
23172 +         /* Or if one of OP0 or OP1 is neither a pointer nor NULL.  */
23173 +         || (!null_ptr_cst_p (orig_op0)
23174 +             && !TYPE_PTR_P (type0) && !TYPE_PTR_TO_MEMBER_P (type0))
23175 +         || (!null_ptr_cst_p (orig_op1) 
23176 +             && !TYPE_PTR_P (type1) && !TYPE_PTR_TO_MEMBER_P (type1)))
23177 +      && (complain & tf_warning))
23178 +    /* Some sort of arithmetic operation involving NULL was
23179 +       performed.  */
23180 +    warning (OPT_Wpointer_arith, "NULL used in arithmetic");
23181 +
23182    switch (code)
23183      {
23184      case MINUS_EXPR:
23185 @@ -3979,25 +4002,6 @@
23186         }
23187      }
23188  
23189 -  /* Issue warnings about peculiar, but valid, uses of NULL.  */
23190 -  if ((orig_op0 == null_node || orig_op1 == null_node)
23191 -      /* It's reasonable to use pointer values as operands of &&
23192 -        and ||, so NULL is no exception.  */
23193 -      && code != TRUTH_ANDIF_EXPR && code != TRUTH_ORIF_EXPR 
23194 -      && ( /* Both are NULL (or 0) and the operation was not a comparison.  */
23195 -         (null_ptr_cst_p (orig_op0) && null_ptr_cst_p (orig_op1) 
23196 -          && code != EQ_EXPR && code != NE_EXPR) 
23197 -         /* Or if one of OP0 or OP1 is neither a pointer nor NULL.  */
23198 -         || (!null_ptr_cst_p (orig_op0) && TREE_CODE (TREE_TYPE (op0)) != POINTER_TYPE)
23199 -         || (!null_ptr_cst_p (orig_op1) && TREE_CODE (TREE_TYPE (op1)) != POINTER_TYPE))
23200 -      && (complain & tf_warning))
23201 -    /* Some sort of arithmetic operation involving NULL was
23202 -       performed.  Note that pointer-difference and pointer-addition
23203 -       have already been handled above, and so we don't end up here in
23204 -       that case.  */
23205 -    warning (OPT_Wpointer_arith, "NULL used in arithmetic");
23206 -  
23207 -
23208    /* If CONVERTED is zero, both args will be converted to type RESULT_TYPE.
23209       Then the expression will be built.
23210       It will be given type FINAL_TYPE if that is nonzero;
23211 @@ -5024,6 +5028,12 @@
23212        return rhs;
23213      }
23214  
23215 +  if (type_unknown_p (rhs))
23216 +    {
23217 +      error ("no context to resolve type of %qE", rhs);
23218 +      return error_mark_node;
23219 +    }
23220 +  
23221    return build2 (COMPOUND_EXPR, TREE_TYPE (rhs), lhs, rhs);
23222  }
23223  
23224 diff -Nur a/gcc/c-ppoutput.c b/gcc/c-ppoutput.c
23225 --- a/gcc/c-ppoutput.c  2008-09-23 19:47:32.000000000 +0200
23226 +++ b/gcc/c-ppoutput.c  2010-01-25 09:50:29.105687718 +0100
23227 @@ -521,6 +521,7 @@
23228  
23229    if (map != NULL)
23230      {
23231 +      input_location = map->start_location;
23232        if (print.first_time)
23233         {
23234           /* Avoid printing foo.i when the main file is foo.c.  */
23235 diff -Nur a/gcc/cse.c b/gcc/cse.c
23236 --- a/gcc/cse.c 2009-04-27 13:55:13.000000000 +0200
23237 +++ b/gcc/cse.c 2010-01-25 09:50:29.105687718 +0100
23238 @@ -5754,6 +5754,11 @@
23239        validate_change (object, &XEXP (x, i),
23240                        cse_process_notes (XEXP (x, i), object, changed), 0);
23241  
23242 +  /* Rebuild a PLUS expression in canonical form if the first operand
23243 +     ends up as a constant.  */
23244 +  if (code == PLUS && GET_CODE (XEXP (x, 0)) == CONST_INT)
23245 +    return plus_constant (XEXP(x, 1), INTVAL (XEXP (x, 0)));
23246 +
23247    return x;
23248  }
23249  
23250 diff -Nur a/gcc/c-tree.h b/gcc/c-tree.h
23251 --- a/gcc/c-tree.h      2009-02-20 16:20:38.000000000 +0100
23252 +++ b/gcc/c-tree.h      2010-01-25 09:50:29.105687718 +0100
23253 @@ -647,4 +647,8 @@
23254  extern void pedwarn_c90 (location_t, int opt, const char *, ...) ATTRIBUTE_GCC_CDIAG(3,4);
23255  extern void pedwarn_c99 (location_t, int opt, const char *, ...) ATTRIBUTE_GCC_CDIAG(3,4);
23256  
23257 +extern bool c_cpp_error (cpp_reader *, int, location_t, unsigned int,
23258 +                        const char *, va_list *)
23259 +     ATTRIBUTE_GCC_CDIAG(5,0);
23260 +
23261  #endif /* ! GCC_C_TREE_H */
23262 diff -Nur a/gcc/c-typeck.c b/gcc/c-typeck.c
23263 --- a/gcc/c-typeck.c    2009-04-08 13:59:36.000000000 +0200
23264 +++ b/gcc/c-typeck.c    2010-01-25 09:50:29.105687718 +0100
23265 @@ -1765,6 +1765,7 @@
23266    tree orig_exp;
23267    tree type = TREE_TYPE (exp);
23268    enum tree_code code = TREE_CODE (type);
23269 +  tree promoted_type;
23270  
23271    /* Functions and arrays have been converted during parsing.  */
23272    gcc_assert (code != FUNCTION_TYPE);
23273 @@ -1801,6 +1802,10 @@
23274    if (exp == error_mark_node)
23275      return error_mark_node;
23276  
23277 +  promoted_type = targetm.promoted_type (type);
23278 +  if (promoted_type)
23279 +    return convert (promoted_type, exp);
23280 +
23281    if (INTEGRAL_TYPE_P (type))
23282      return perform_integral_promotions (exp);
23283  
23284 diff -Nur a/gcc/dbxout.c b/gcc/dbxout.c
23285 --- a/gcc/dbxout.c      2009-07-07 22:46:41.000000000 +0200
23286 +++ b/gcc/dbxout.c      2010-01-25 09:50:29.115687383 +0100
23287 @@ -376,6 +376,7 @@
23288    dbxout_handle_pch,                    /* handle_pch */
23289    debug_nothing_rtx,                    /* var_location */
23290    debug_nothing_void,                    /* switch_text_section */
23291 +  debug_nothing_tree_tree,              /* set_name */
23292    0                                      /* start_end_main_source_file */
23293  };
23294  #endif /* DBX_DEBUGGING_INFO  */
23295 @@ -408,6 +409,7 @@
23296    dbxout_handle_pch,                    /* handle_pch */
23297    debug_nothing_rtx,                    /* var_location */
23298    debug_nothing_void,                    /* switch_text_section */
23299 +  debug_nothing_tree_tree,              /* set_name */
23300    0                                      /* start_end_main_source_file */
23301  };
23302  #endif /* XCOFF_DEBUGGING_INFO  */
23303 diff -Nur a/gcc/debug.c b/gcc/debug.c
23304 --- a/gcc/debug.c       2009-02-20 16:20:38.000000000 +0100
23305 +++ b/gcc/debug.c       2010-01-25 09:50:29.115687383 +0100
23306 @@ -50,6 +50,7 @@
23307    debug_nothing_int,                    /* handle_pch */
23308    debug_nothing_rtx,                    /* var_location */
23309    debug_nothing_void,                    /* switch_text_section */
23310 +  debug_nothing_tree_tree,              /* set_name */
23311    0                                      /* start_end_main_source_file */
23312  };
23313  
23314 @@ -67,6 +68,12 @@
23315  }
23316  
23317  void
23318 +debug_nothing_tree_tree (tree t1 ATTRIBUTE_UNUSED,
23319 +                        tree t2 ATTRIBUTE_UNUSED)
23320 +{
23321 +}
23322 +
23323 +void
23324  debug_nothing_tree_tree_tree_bool (tree t1 ATTRIBUTE_UNUSED,
23325                                    tree t2 ATTRIBUTE_UNUSED,
23326                                    tree t3 ATTRIBUTE_UNUSED,
23327 diff -Nur a/gcc/debug.h b/gcc/debug.h
23328 --- a/gcc/debug.h       2009-02-20 16:20:38.000000000 +0100
23329 +++ b/gcc/debug.h       2010-01-25 09:50:29.115687383 +0100
23330 @@ -126,6 +126,10 @@
23331       text sections.  */
23332    void (* switch_text_section) (void);
23333  
23334 +  /* Called from grokdeclarator.  Replaces the anonymous name with the
23335 +     type name.  */
23336 +  void (* set_name) (tree, tree);
23337 +
23338    /* This is 1 if the debug writer wants to see start and end commands for the
23339       main source files, and 0 otherwise.  */
23340    int start_end_main_source_file;
23341 @@ -140,6 +144,7 @@
23342  extern void debug_nothing_int (unsigned int);
23343  extern void debug_nothing_int_int (unsigned int, unsigned int);
23344  extern void debug_nothing_tree (tree);
23345 +extern void debug_nothing_tree_tree (tree, tree);
23346  extern void debug_nothing_tree_int (tree, int);
23347  extern void debug_nothing_tree_tree_tree_bool (tree, tree, tree, bool);
23348  extern bool debug_true_const_tree (const_tree);
23349 diff -Nur a/gcc/defaults.h b/gcc/defaults.h
23350 --- a/gcc/defaults.h    2009-07-11 21:06:26.000000000 +0200
23351 +++ b/gcc/defaults.h    2010-01-25 09:50:29.115687383 +0100
23352 @@ -902,7 +902,8 @@
23353  
23354  /* On most machines, the CFA coincides with the first incoming parm.  */
23355  #ifndef ARG_POINTER_CFA_OFFSET
23356 -#define ARG_POINTER_CFA_OFFSET(FNDECL) FIRST_PARM_OFFSET (FNDECL)
23357 +#define ARG_POINTER_CFA_OFFSET(FNDECL) \
23358 +  (FIRST_PARM_OFFSET (FNDECL) + crtl->args.pretend_args_size)
23359  #endif
23360  
23361  /* On most machines, we use the CFA as DW_AT_frame_base.  */
23362 diff -Nur a/gcc/diagnostic.c b/gcc/diagnostic.c
23363 --- a/gcc/diagnostic.c  2008-09-03 03:00:04.000000000 +0200
23364 +++ b/gcc/diagnostic.c  2010-01-25 09:50:29.115687383 +0100
23365 @@ -126,6 +126,7 @@
23366    diagnostic->message.args_ptr = args;
23367    diagnostic->message.format_spec = msg;
23368    diagnostic->location = location;
23369 +  diagnostic->override_column = 0;
23370    diagnostic->kind = kind;
23371    diagnostic->option_index = 0;
23372  }
23373 @@ -153,6 +154,8 @@
23374    };
23375    const char *text = _(diagnostic_kind_text[diagnostic->kind]);
23376    expanded_location s = expand_location (diagnostic->location);
23377 +  if (diagnostic->override_column)
23378 +    s.column = diagnostic->override_column;
23379    gcc_assert (diagnostic->kind < DK_LAST_DIAGNOSTIC_KIND);
23380  
23381    return
23382 diff -Nur a/gcc/diagnostic.h b/gcc/diagnostic.h
23383 --- a/gcc/diagnostic.h  2008-08-09 01:57:19.000000000 +0200
23384 +++ b/gcc/diagnostic.h  2010-01-25 09:50:29.115687383 +0100
23385 @@ -41,6 +41,7 @@
23386  {
23387    text_info message;
23388    location_t location;
23389 +  unsigned int override_column;
23390    /* TREE_BLOCK if the diagnostic is to be reported in some inline
23391       function inlined into other function, otherwise NULL.  */
23392    tree abstract_origin;
23393 @@ -185,6 +186,10 @@
23394  
23395  #define report_diagnostic(D) diagnostic_report_diagnostic (global_dc, D)
23396  
23397 +/* Override the column number to be used for reporting a
23398 +   diagnostic.  */
23399 +#define diagnostic_override_column(DI, COL) (DI)->override_column = (COL)
23400 +
23401  /* Diagnostic related functions.  */
23402  extern void diagnostic_initialize (diagnostic_context *);
23403  extern void diagnostic_report_current_module (diagnostic_context *);
23404 diff -Nur a/gcc/dwarf2out.c b/gcc/dwarf2out.c
23405 --- a/gcc/dwarf2out.c   2009-06-03 19:32:45.000000000 +0200
23406 +++ b/gcc/dwarf2out.c   2010-01-25 09:50:29.115687383 +0100
23407 @@ -2474,6 +2474,12 @@
23408      insn = PATTERN (insn);
23409  
23410    dwarf2out_frame_debug_expr (insn, label);
23411 +
23412 +  /* Check again.  A parallel can save and update the same register.
23413 +     We could probably check just once, here, but this is safer than
23414 +     removing the check above.  */
23415 +  if (clobbers_queued_reg_save (insn))
23416 +    flush_queued_reg_saves ();
23417  }
23418  
23419  #endif
23420 @@ -4598,6 +4604,7 @@
23421  static void dwarf2out_abstract_function (tree);
23422  static void dwarf2out_var_location (rtx);
23423  static void dwarf2out_begin_function (tree);
23424 +static void dwarf2out_set_name (tree, tree);
23425  
23426  /* The debug hooks structure.  */
23427  
23428 @@ -4631,6 +4638,7 @@
23429    debug_nothing_int,           /* handle_pch */
23430    dwarf2out_var_location,
23431    dwarf2out_switch_text_section,
23432 +  dwarf2out_set_name,
23433    1                             /* start_end_main_source_file */
23434  };
23435  #endif
23436 @@ -5975,12 +5983,9 @@
23437                  (const char *)x2) == 0;
23438  }
23439  
23440 -/* Add a string attribute value to a DIE.  */
23441 -
23442 -static inline void
23443 -add_AT_string (dw_die_ref die, enum dwarf_attribute attr_kind, const char *str)
23444 +static struct indirect_string_node *
23445 +find_AT_string (const char *str)
23446  {
23447 -  dw_attr_node attr;
23448    struct indirect_string_node *node;
23449    void **slot;
23450  
23451 @@ -6001,6 +6006,18 @@
23452      node = (struct indirect_string_node *) *slot;
23453  
23454    node->refcount++;
23455 +  return node;
23456 +}
23457 +
23458 +/* Add a string attribute value to a DIE.  */
23459 +
23460 +static inline void
23461 +add_AT_string (dw_die_ref die, enum dwarf_attribute attr_kind, const char *str)
23462 +{
23463 +  dw_attr_node attr;
23464 +  struct indirect_string_node *node;
23465 +
23466 +  node = find_AT_string (str);
23467  
23468    attr.dw_attr = attr_kind;
23469    attr.dw_attr_val.val_class = dw_val_class_str;
23470 @@ -6637,6 +6654,8 @@
23471  static inline var_loc_list *
23472  lookup_decl_loc (const_tree decl)
23473  {
23474 +  if (!decl_loc_table)
23475 +    return NULL;
23476    return (var_loc_list *)
23477      htab_find_with_hash (decl_loc_table, decl, DECL_UID (decl));
23478  }
23479 @@ -13471,6 +13490,7 @@
23480    tree save_fn;
23481    tree context;
23482    int was_abstract = DECL_ABSTRACT (decl);
23483 +  htab_t old_decl_loc_table;
23484  
23485    /* Make sure we have the actual abstract inline, not a clone.  */
23486    decl = DECL_ORIGIN (decl);
23487 @@ -13480,6 +13500,12 @@
23488      /* We've already generated the abstract instance.  */
23489      return;
23490  
23491 +  /* We can be called while recursively when seeing block defining inlined subroutine
23492 +     DIE.  Be sure to not clobber the outer location table nor use it or we would
23493 +     get locations in abstract instantces.  */
23494 +  old_decl_loc_table = decl_loc_table;
23495 +  decl_loc_table = NULL;
23496 +
23497    /* Be sure we've emitted the in-class declaration DIE (if any) first, so
23498       we don't get confused by DECL_ABSTRACT.  */
23499    if (debug_info_level > DINFO_LEVEL_TERSE)
23500 @@ -13501,6 +13527,7 @@
23501      set_decl_abstract_flags (decl, 0);
23502  
23503    current_function_decl = save_fn;
23504 +  decl_loc_table = old_decl_loc_table;
23505    pop_cfun ();
23506  }
23507  
23508 @@ -15796,6 +15823,31 @@
23509    return fd->emitted_number;
23510  }
23511  
23512 +/* Replace DW_AT_name for the decl with name.  */
23513
23514 +static void
23515 +dwarf2out_set_name (tree decl, tree name)
23516 +{
23517 +  dw_die_ref die;
23518 +  dw_attr_ref attr;
23519 +
23520 +  die = TYPE_SYMTAB_DIE (decl);
23521 +  if (!die)
23522 +    return;
23523 +
23524 +  attr = get_AT (die, DW_AT_name);
23525 +  if (attr)
23526 +    {
23527 +      struct indirect_string_node *node;
23528 +
23529 +      node = find_AT_string (dwarf2_name (name, 0));
23530 +      /* replace the string.  */
23531 +      attr->dw_attr_val.v.val_str = node;
23532 +    }
23533 +
23534 +  else
23535 +    add_name_attribute (die, dwarf2_name (name, 0));
23536 +}
23537  /* Called by the final INSN scan whenever we see a var location.  We
23538     use it to drop labels in the right places, and throw the location in
23539     our lookup table.  */
23540 diff -Nur a/gcc/except.c b/gcc/except.c
23541 --- a/gcc/except.c      2009-03-07 17:02:30.000000000 +0100
23542 +++ b/gcc/except.c      2010-01-25 09:50:29.115687383 +0100
23543 @@ -3567,6 +3567,12 @@
23544          paths below go through assemble_integer, which would take
23545          care of this for us.  */
23546        STRIP_NOPS (type);
23547 +      if (TREE_CODE (type) == POINTER_PLUS_EXPR)
23548 +       {
23549 +         gcc_assert (TREE_CODE (TREE_OPERAND (type, 1)) == INTEGER_CST);
23550 +         type = TREE_OPERAND (type, 0);
23551 +         STRIP_NOPS (type);
23552 +       }
23553        if (TREE_CODE (type) == ADDR_EXPR)
23554         {
23555           type = TREE_OPERAND (type, 0);
23556 diff -Nur a/gcc/explow.c b/gcc/explow.c
23557 --- a/gcc/explow.c      2009-02-20 16:20:38.000000000 +0100
23558 +++ b/gcc/explow.c      2010-01-25 09:50:29.115687383 +0100
23559 @@ -1491,9 +1491,9 @@
23560     in which a scalar value of mode MODE was returned by a library call.  */
23561  
23562  rtx
23563 -hard_libcall_value (enum machine_mode mode)
23564 +hard_libcall_value (enum machine_mode mode, rtx fun)
23565  {
23566 -  return LIBCALL_VALUE (mode);
23567 +  return targetm.calls.libcall_value (mode, fun);
23568  }
23569  
23570  /* Look up the tree code for a given rtx code
23571 diff -Nur a/gcc/expmed.c b/gcc/expmed.c
23572 --- a/gcc/expmed.c      2009-01-16 19:56:47.000000000 +0100
23573 +++ b/gcc/expmed.c      2010-01-25 09:50:29.115687383 +0100
23574 @@ -103,7 +103,8 @@
23575  static int neg_cost[2][NUM_MACHINE_MODES];
23576  static int shift_cost[2][NUM_MACHINE_MODES][MAX_BITS_PER_WORD];
23577  static int shiftadd_cost[2][NUM_MACHINE_MODES][MAX_BITS_PER_WORD];
23578 -static int shiftsub_cost[2][NUM_MACHINE_MODES][MAX_BITS_PER_WORD];
23579 +static int shiftsub0_cost[2][NUM_MACHINE_MODES][MAX_BITS_PER_WORD];
23580 +static int shiftsub1_cost[2][NUM_MACHINE_MODES][MAX_BITS_PER_WORD];
23581  static int mul_cost[2][NUM_MACHINE_MODES];
23582  static int sdiv_cost[2][NUM_MACHINE_MODES];
23583  static int udiv_cost[2][NUM_MACHINE_MODES];
23584 @@ -130,7 +131,8 @@
23585      struct rtx_def shift;      rtunion shift_fld1;
23586      struct rtx_def shift_mult; rtunion shift_mult_fld1;
23587      struct rtx_def shift_add;  rtunion shift_add_fld1;
23588 -    struct rtx_def shift_sub;  rtunion shift_sub_fld1;
23589 +    struct rtx_def shift_sub0; rtunion shift_sub0_fld1;
23590 +    struct rtx_def shift_sub1; rtunion shift_sub1_fld1;
23591    } all;
23592  
23593    rtx pow2[MAX_BITS_PER_WORD];
23594 @@ -201,9 +203,13 @@
23595    XEXP (&all.shift_add, 0) = &all.shift_mult;
23596    XEXP (&all.shift_add, 1) = &all.reg;
23597  
23598 -  PUT_CODE (&all.shift_sub, MINUS);
23599 -  XEXP (&all.shift_sub, 0) = &all.shift_mult;
23600 -  XEXP (&all.shift_sub, 1) = &all.reg;
23601 +  PUT_CODE (&all.shift_sub0, MINUS);
23602 +  XEXP (&all.shift_sub0, 0) = &all.shift_mult;
23603 +  XEXP (&all.shift_sub0, 1) = &all.reg;
23604 +
23605 +  PUT_CODE (&all.shift_sub1, MINUS);
23606 +  XEXP (&all.shift_sub1, 0) = &all.reg;
23607 +  XEXP (&all.shift_sub1, 1) = &all.shift_mult;
23608  
23609    for (speed = 0; speed < 2; speed++)
23610      {
23611 @@ -226,7 +232,8 @@
23612           PUT_MODE (&all.shift, mode);
23613           PUT_MODE (&all.shift_mult, mode);
23614           PUT_MODE (&all.shift_add, mode);
23615 -         PUT_MODE (&all.shift_sub, mode);
23616 +         PUT_MODE (&all.shift_sub0, mode);
23617 +         PUT_MODE (&all.shift_sub1, mode);
23618  
23619           add_cost[speed][mode] = rtx_cost (&all.plus, SET, speed);
23620           neg_cost[speed][mode] = rtx_cost (&all.neg, SET, speed);
23621 @@ -254,8 +261,8 @@
23622             }
23623  
23624           shift_cost[speed][mode][0] = 0;
23625 -         shiftadd_cost[speed][mode][0] = shiftsub_cost[speed][mode][0]
23626 -           = add_cost[speed][mode];
23627 +         shiftadd_cost[speed][mode][0] = shiftsub0_cost[speed][mode][0]
23628 +           = shiftsub1_cost[speed][mode][0] = add_cost[speed][mode];
23629  
23630           n = MIN (MAX_BITS_PER_WORD, GET_MODE_BITSIZE (mode));
23631           for (m = 1; m < n; m++)
23632 @@ -265,7 +272,8 @@
23633  
23634               shift_cost[speed][mode][m] = rtx_cost (&all.shift, SET, speed);
23635               shiftadd_cost[speed][mode][m] = rtx_cost (&all.shift_add, SET, speed);
23636 -             shiftsub_cost[speed][mode][m] = rtx_cost (&all.shift_sub, SET, speed);
23637 +             shiftsub0_cost[speed][mode][m] = rtx_cost (&all.shift_sub0, SET, speed);
23638 +             shiftsub1_cost[speed][mode][m] = rtx_cost (&all.shift_sub1, SET, speed);
23639             }
23640         }
23641      }
23642 @@ -2397,6 +2405,7 @@
23643    struct mult_cost best_cost;
23644    struct mult_cost new_limit;
23645    int op_cost, op_latency;
23646 +  unsigned HOST_WIDE_INT orig_t = t;
23647    unsigned HOST_WIDE_INT q;
23648    int maxm = MIN (BITS_PER_WORD, GET_MODE_BITSIZE (mode));
23649    int hash_index;
23650 @@ -2542,6 +2551,38 @@
23651               best_alg->log[best_alg->ops] = m;
23652               best_alg->op[best_alg->ops] = alg_shift;
23653             }
23654 +
23655 +         /* See if treating ORIG_T as a signed number yields a better
23656 +            sequence.  Try this sequence only for a negative ORIG_T
23657 +            as it would be useless for a non-negative ORIG_T.  */
23658 +         if ((HOST_WIDE_INT) orig_t < 0)
23659 +           {
23660 +             /* Shift ORIG_T as follows because a right shift of a
23661 +                negative-valued signed type is implementation
23662 +                defined.  */
23663 +             q = ~(~orig_t >> m);
23664 +             /* The function expand_shift will choose between a shift
23665 +                and a sequence of additions, so the observed cost is
23666 +                given as MIN (m * add_cost[speed][mode],
23667 +                shift_cost[speed][mode][m]).  */
23668 +             op_cost = m * add_cost[speed][mode];
23669 +             if (shift_cost[speed][mode][m] < op_cost)
23670 +               op_cost = shift_cost[speed][mode][m];
23671 +             new_limit.cost = best_cost.cost - op_cost;
23672 +             new_limit.latency = best_cost.latency - op_cost;
23673 +             synth_mult (alg_in, q, &new_limit, mode);
23674 +
23675 +             alg_in->cost.cost += op_cost;
23676 +             alg_in->cost.latency += op_cost;
23677 +             if (CHEAPER_MULT_COST (&alg_in->cost, &best_cost))
23678 +               {
23679 +                 struct algorithm *x;
23680 +                 best_cost = alg_in->cost;
23681 +                 x = alg_in, alg_in = best_alg, best_alg = x;
23682 +                 best_alg->log[best_alg->ops] = m;
23683 +                 best_alg->op[best_alg->ops] = alg_shift;
23684 +               }
23685 +           }
23686         }
23687        if (cache_hit)
23688         goto done;
23689 @@ -2604,6 +2645,29 @@
23690               best_alg->op[best_alg->ops] = alg_add_t_m2;
23691             }
23692         }
23693 +
23694 +      /* We may be able to calculate a * -7, a * -15, a * -31, etc
23695 +        quickly with a - a * n for some appropriate constant n.  */
23696 +      m = exact_log2 (-orig_t + 1);
23697 +      if (m >= 0 && m < maxm)
23698 +       {
23699 +         op_cost = shiftsub1_cost[speed][mode][m];
23700 +         new_limit.cost = best_cost.cost - op_cost;
23701 +         new_limit.latency = best_cost.latency - op_cost;
23702 +         synth_mult (alg_in, (unsigned HOST_WIDE_INT) (-orig_t + 1) >> m, &new_limit, mode);
23703 +
23704 +         alg_in->cost.cost += op_cost;
23705 +         alg_in->cost.latency += op_cost;
23706 +         if (CHEAPER_MULT_COST (&alg_in->cost, &best_cost))
23707 +           {
23708 +             struct algorithm *x;
23709 +             best_cost = alg_in->cost;
23710 +             x = alg_in, alg_in = best_alg, best_alg = x;
23711 +             best_alg->log[best_alg->ops] = m;
23712 +             best_alg->op[best_alg->ops] = alg_sub_t_m2;
23713 +           }
23714 +       }
23715 +
23716        if (cache_hit)
23717         goto done;
23718      }
23719 @@ -2673,9 +2737,9 @@
23720              hardware the shift may be executed concurrently with the
23721              earlier steps in the algorithm.  */
23722           op_cost = add_cost[speed][mode] + shift_cost[speed][mode][m];
23723 -         if (shiftsub_cost[speed][mode][m] < op_cost)
23724 +         if (shiftsub0_cost[speed][mode][m] < op_cost)
23725             {
23726 -             op_cost = shiftsub_cost[speed][mode][m];
23727 +             op_cost = shiftsub0_cost[speed][mode][m];
23728               op_latency = op_cost;
23729             }
23730           else
23731 @@ -2738,7 +2802,7 @@
23732        m = exact_log2 (q);
23733        if (m >= 0 && m < maxm)
23734         {
23735 -         op_cost = shiftsub_cost[speed][mode][m];
23736 +         op_cost = shiftsub0_cost[speed][mode][m];
23737           new_limit.cost = best_cost.cost - op_cost;
23738           new_limit.latency = best_cost.latency - op_cost;
23739           synth_mult (alg_in, (t + 1) >> m, &new_limit, mode);
23740 diff -Nur a/gcc/expr.c b/gcc/expr.c
23741 --- a/gcc/expr.c        2009-06-16 16:28:47.000000000 +0200
23742 +++ b/gcc/expr.c        2010-01-25 09:50:29.115687383 +0100
23743 @@ -4391,6 +4391,29 @@
23744  
23745    /* Compute FROM and store the value in the rtx we got.  */
23746  
23747 +  if (TREE_CODE (to) == MISALIGNED_INDIRECT_REF)
23748 +    {
23749 +      rtx insn;
23750 +      rtx from_rtx;
23751 +      enum insn_code icode;
23752 +      enum machine_mode mode = GET_MODE (to_rtx);
23753 +
23754 +      icode = optab_handler (movmisalign_optab, mode)->insn_code;
23755 +      gcc_assert (icode != CODE_FOR_nothing);
23756 +
23757 +      from_rtx = expand_expr (from, NULL_RTX, mode, EXPAND_NORMAL);
23758 +      insn = GEN_FCN (icode) (to_rtx, from_rtx);
23759 +      /* If that failed then force the source into a reg and try again.  */
23760 +      if (!insn)
23761 +       {
23762 +         from_rtx = copy_to_mode_reg(mode, from_rtx);
23763 +         insn = GEN_FCN (icode) (to_rtx, from_rtx);
23764 +         gcc_assert(insn);
23765 +       }
23766 +      emit_insn (insn);
23767 +      return;
23768 +    }
23769 +
23770    push_temp_slots ();
23771    result = store_expr (from, to_rtx, 0, nontemporal);
23772    preserve_temp_slots (result);
23773 @@ -7291,6 +7314,19 @@
23774        decl_rtl = DECL_RTL (exp);
23775        gcc_assert (decl_rtl);
23776        decl_rtl = copy_rtx (decl_rtl);
23777 +      /* Record writes to register variables.  */
23778 +      if (modifier == EXPAND_WRITE && REG_P(decl_rtl)
23779 +         && REGNO(decl_rtl) < FIRST_PSEUDO_REGISTER)
23780 +       {
23781 +           int i = REGNO(decl_rtl);
23782 +           int nregs = hard_regno_nregs[i][GET_MODE(decl_rtl)];
23783 +           while (nregs)
23784 +             {
23785 +               SET_HARD_REG_BIT(crtl->asm_clobbers, i);
23786 +               i++;
23787 +               nregs--;
23788 +             }
23789 +       }
23790  
23791        /* Ensure variable marked as used even if it doesn't go through
23792          a parser.  If it hasn't be used yet, write out an external
23793 @@ -7538,14 +7574,15 @@
23794  
23795         /* Resolve the misalignment now, so that we don't have to remember
23796            to resolve it later.  Of course, this only works for reads.  */
23797 -       /* ??? When we get around to supporting writes, we'll have to handle
23798 -          this in store_expr directly.  The vectorizer isn't generating
23799 -          those yet, however.  */
23800         if (code == MISALIGNED_INDIRECT_REF)
23801           {
23802             int icode;
23803             rtx reg, insn;
23804  
23805 +           /* For writes produce a MEM, and expand_assignment will DTRT.  */
23806 +           if (modifier == EXPAND_WRITE)
23807 +             return temp;
23808 +
23809             gcc_assert (modifier == EXPAND_NORMAL
23810                         || modifier == EXPAND_STACK_PARM);
23811  
23812 diff -Nur a/gcc/expr.h b/gcc/expr.h
23813 --- a/gcc/expr.h        2009-03-17 18:46:23.000000000 +0100
23814 +++ b/gcc/expr.h        2010-01-25 09:50:29.125687117 +0100
23815 @@ -757,7 +757,7 @@
23816  
23817  /* Return an rtx that refers to the value returned by a library call
23818     in its original home.  This becomes invalid if any more code is emitted.  */
23819 -extern rtx hard_libcall_value (enum machine_mode);
23820 +extern rtx hard_libcall_value (enum machine_mode, rtx);
23821  
23822  /* Return the mode desired by operand N of a particular bitfield
23823     insert/extract insn, or MAX_MACHINE_MODE if no such insn is
23824 diff -Nur a/gcc/final.c b/gcc/final.c
23825 --- a/gcc/final.c       2008-12-10 09:46:40.000000000 +0100
23826 +++ b/gcc/final.c       2010-01-25 09:50:29.125687117 +0100
23827 @@ -891,6 +891,7 @@
23828        if (LABEL_P (insn))
23829         {
23830           rtx next;
23831 +         bool next_is_jumptable;
23832  
23833           /* Merge in alignments computed by compute_alignments.  */
23834           log = LABEL_TO_ALIGNMENT (insn);
23835 @@ -900,31 +901,30 @@
23836               max_skip = LABEL_TO_MAX_SKIP (insn);
23837             }
23838  
23839 -         log = LABEL_ALIGN (insn);
23840 -         if (max_log < log)
23841 +         next = next_nonnote_insn (insn);
23842 +         next_is_jumptable = next && JUMP_TABLE_DATA_P (next);
23843 +         if (!next_is_jumptable)
23844             {
23845 -             max_log = log;
23846 -             max_skip = LABEL_ALIGN_MAX_SKIP;
23847 +             log = LABEL_ALIGN (insn);
23848 +             if (max_log < log)
23849 +               {
23850 +                 max_log = log;
23851 +                 max_skip = LABEL_ALIGN_MAX_SKIP;
23852 +               }
23853             }
23854 -         next = next_nonnote_insn (insn);
23855           /* ADDR_VECs only take room if read-only data goes into the text
23856              section.  */
23857 -         if (JUMP_TABLES_IN_TEXT_SECTION
23858 -             || readonly_data_section == text_section)
23859 -           if (next && JUMP_P (next))
23860 -             {
23861 -               rtx nextbody = PATTERN (next);
23862 -               if (GET_CODE (nextbody) == ADDR_VEC
23863 -                   || GET_CODE (nextbody) == ADDR_DIFF_VEC)
23864 -                 {
23865 -                   log = ADDR_VEC_ALIGN (next);
23866 -                   if (max_log < log)
23867 -                     {
23868 -                       max_log = log;
23869 -                       max_skip = LABEL_ALIGN_MAX_SKIP;
23870 -                     }
23871 -                 }
23872 -             }
23873 +         if ((JUMP_TABLES_IN_TEXT_SECTION
23874 +              || readonly_data_section == text_section)
23875 +             && next_is_jumptable)
23876 +           {
23877 +             log = ADDR_VEC_ALIGN (next);
23878 +             if (max_log < log)
23879 +               {
23880 +                 max_log = log;
23881 +                 max_skip = LABEL_ALIGN_MAX_SKIP;
23882 +               }
23883 +           }
23884           LABEL_TO_ALIGNMENT (insn) = max_log;
23885           LABEL_TO_MAX_SKIP (insn) = max_skip;
23886           max_log = 0;
23887 @@ -2013,48 +2013,41 @@
23888        app_disable ();
23889  
23890        next = next_nonnote_insn (insn);
23891 -      if (next != 0 && JUMP_P (next))
23892 +      /* If this label is followed by a jump-table, make sure we put
23893 +        the label in the read-only section.  Also possibly write the
23894 +        label and jump table together.  */
23895 +      if (next != 0 && JUMP_TABLE_DATA_P (next))
23896         {
23897 -         rtx nextbody = PATTERN (next);
23898 -
23899 -         /* If this label is followed by a jump-table,
23900 -            make sure we put the label in the read-only section.  Also
23901 -            possibly write the label and jump table together.  */
23902 -
23903 -         if (GET_CODE (nextbody) == ADDR_VEC
23904 -             || GET_CODE (nextbody) == ADDR_DIFF_VEC)
23905 -           {
23906  #if defined(ASM_OUTPUT_ADDR_VEC) || defined(ASM_OUTPUT_ADDR_DIFF_VEC)
23907 -             /* In this case, the case vector is being moved by the
23908 -                target, so don't output the label at all.  Leave that
23909 -                to the back end macros.  */
23910 +         /* In this case, the case vector is being moved by the
23911 +            target, so don't output the label at all.  Leave that
23912 +            to the back end macros.  */
23913  #else
23914 -             if (! JUMP_TABLES_IN_TEXT_SECTION)
23915 -               {
23916 -                 int log_align;
23917 +         if (! JUMP_TABLES_IN_TEXT_SECTION)
23918 +           {
23919 +             int log_align;
23920  
23921 -                 switch_to_section (targetm.asm_out.function_rodata_section
23922 -                                    (current_function_decl));
23923 +             switch_to_section (targetm.asm_out.function_rodata_section
23924 +                                (current_function_decl));
23925  
23926  #ifdef ADDR_VEC_ALIGN
23927 -                 log_align = ADDR_VEC_ALIGN (next);
23928 +             log_align = ADDR_VEC_ALIGN (next);
23929  #else
23930 -                 log_align = exact_log2 (BIGGEST_ALIGNMENT / BITS_PER_UNIT);
23931 +             log_align = exact_log2 (BIGGEST_ALIGNMENT / BITS_PER_UNIT);
23932  #endif
23933 -                 ASM_OUTPUT_ALIGN (file, log_align);
23934 -               }
23935 -             else
23936 -               switch_to_section (current_function_section ());
23937 +             ASM_OUTPUT_ALIGN (file, log_align);
23938 +           }
23939 +         else
23940 +           switch_to_section (current_function_section ());
23941  
23942  #ifdef ASM_OUTPUT_CASE_LABEL
23943 -             ASM_OUTPUT_CASE_LABEL (file, "L", CODE_LABEL_NUMBER (insn),
23944 -                                    next);
23945 +         ASM_OUTPUT_CASE_LABEL (file, "L", CODE_LABEL_NUMBER (insn),
23946 +                                next);
23947  #else
23948 -             targetm.asm_out.internal_label (file, "L", CODE_LABEL_NUMBER (insn));
23949 +         targetm.asm_out.internal_label (file, "L", CODE_LABEL_NUMBER (insn));
23950  #endif
23951  #endif
23952 -             break;
23953 -           }
23954 +         break;
23955         }
23956        if (LABEL_ALT_ENTRY_P (insn))
23957         output_alternate_entry_point (file, insn);
23958 diff -Nur a/gcc/fold-const.c b/gcc/fold-const.c
23959 --- a/gcc/fold-const.c  2009-07-15 13:23:22.000000000 +0200
23960 +++ b/gcc/fold-const.c  2010-01-25 09:50:29.125687117 +0100
23961 @@ -2289,7 +2289,24 @@
23962    real_convert (&value, TYPE_MODE (type), &TREE_REAL_CST (arg1));
23963    t = build_real (type, value);
23964  
23965 -  TREE_OVERFLOW (t) = TREE_OVERFLOW (arg1);
23966 +  /* If converting an infinity or NAN to a representation that doesn't
23967 +     have one, set the overflow bit so that we can produce some kind of
23968 +     error message at the appropriate point if necessary.  It's not the
23969 +     most user-friendly message, but it's better than nothing.  */
23970 +  if (REAL_VALUE_ISINF (TREE_REAL_CST (arg1))
23971 +      && !MODE_HAS_INFINITIES (TYPE_MODE (type)))
23972 +    TREE_OVERFLOW (t) = 1;
23973 +  else if (REAL_VALUE_ISNAN (TREE_REAL_CST (arg1))
23974 +          && !MODE_HAS_NANS (TYPE_MODE (type)))
23975 +    TREE_OVERFLOW (t) = 1;
23976 +  /* Regular overflow, conversion produced an infinity in a mode that
23977 +     can't represent them.  */
23978 +  else if (!MODE_HAS_INFINITIES (TYPE_MODE (type))
23979 +          && REAL_VALUE_ISINF (value)
23980 +          && !REAL_VALUE_ISINF (TREE_REAL_CST (arg1)))
23981 +    TREE_OVERFLOW (t) = 1;
23982 +  else
23983 +    TREE_OVERFLOW (t) = TREE_OVERFLOW (arg1);
23984    return t;
23985  }
23986  
23987 diff -Nur a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c
23988 --- a/gcc/fortran/cpp.c 2008-12-09 20:25:55.000000000 +0100
23989 +++ b/gcc/fortran/cpp.c 2010-01-25 09:50:29.125687117 +0100
23990 @@ -137,6 +137,9 @@
23991  static void cb_ident (cpp_reader *, source_location, const cpp_string *);
23992  static void cb_used_define (cpp_reader *, source_location, cpp_hashnode *);
23993  static void cb_used_undef (cpp_reader *, source_location, cpp_hashnode *);
23994 +static bool cb_cpp_error (cpp_reader *, int, location_t, unsigned int,
23995 +                         const char *, va_list *)
23996 +     ATTRIBUTE_GCC_DIAG(5,0);
23997  void pp_dir_change (cpp_reader *, const char *);
23998  
23999  static int dump_macro (cpp_reader *, cpp_hashnode *, void *);
24000 @@ -452,7 +455,6 @@
24001    cpp_option->cplusplus_comments = 0;
24002  
24003    cpp_option->pedantic = pedantic;
24004 -  cpp_option->inhibit_warnings = inhibit_warnings;
24005  
24006    cpp_option->dollars_in_ident = gfc_option.flag_dollar_ok;
24007    cpp_option->discard_comments = gfc_cpp_option.discard_comments;
24008 @@ -465,9 +467,6 @@
24009  
24010    cpp_post_options (cpp_in);
24011  
24012 -  /* If an error has occurred in cpplib, note it so we fail immediately.  */
24013 -  errorcount += cpp_errors (cpp_in);
24014 -
24015    gfc_cpp_register_include_paths ();
24016  }
24017  
24018 @@ -482,6 +481,7 @@
24019    cb->line_change = cb_line_change;
24020    cb->ident = cb_ident;
24021    cb->def_pragma = cb_def_pragma;
24022 +  cb->error = cb_cpp_error;
24023  
24024    if (gfc_cpp_option.dump_includes)
24025      cb->include = cb_include;
24026 @@ -961,6 +961,57 @@
24027    cpp_define_queue = q;
24028  }
24029  
24030 +/* Callback from cpp_error for PFILE to print diagnostics from the
24031 +   preprocessor.  The diagnostic is of type LEVEL, at location
24032 +   LOCATION, with column number possibly overridden by COLUMN_OVERRIDE
24033 +   if not zero; MSG is the translated message and AP the arguments.
24034 +   Returns true if a diagnostic was emitted, false otherwise.  */
24035 +
24036 +static bool
24037 +cb_cpp_error (cpp_reader *pfile ATTRIBUTE_UNUSED, int level,
24038 +             location_t location, unsigned int column_override,
24039 +             const char *msg, va_list *ap)
24040 +{
24041 +  diagnostic_info diagnostic;
24042 +  diagnostic_t dlevel;
24043 +  int save_warn_system_headers = warn_system_headers;
24044 +  bool ret;
24045 +
24046 +  switch (level)
24047 +    {
24048 +    case CPP_DL_WARNING_SYSHDR:
24049 +      warn_system_headers = 1;
24050 +      /* Fall through.  */
24051 +    case CPP_DL_WARNING:
24052 +      dlevel = DK_WARNING;
24053 +      break;
24054 +    case CPP_DL_PEDWARN:
24055 +      dlevel = DK_PEDWARN;
24056 +      break;
24057 +    case CPP_DL_ERROR:
24058 +      dlevel = DK_ERROR;
24059 +      break;
24060 +    case CPP_DL_ICE:
24061 +      dlevel = DK_ICE;
24062 +      break;
24063 +    case CPP_DL_NOTE:
24064 +      dlevel = DK_NOTE;
24065 +      break;
24066 +    case CPP_DL_FATAL:
24067 +      dlevel = DK_FATAL;
24068 +      break;
24069 +    default:
24070 +      gcc_unreachable ();
24071 +    }
24072 +  diagnostic_set_info_translated (&diagnostic, msg, ap,
24073 +                                 location, dlevel);
24074 +  if (column_override)
24075 +    diagnostic_override_column (&diagnostic, column_override);
24076 +  ret = report_diagnostic (&diagnostic);
24077 +  if (level == CPP_DL_WARNING_SYSHDR)
24078 +    warn_system_headers = save_warn_system_headers;
24079 +  return ret;
24080 +}
24081  
24082  /* Callback called when -fworking-director and -E to emit working
24083     directory in cpp output file.  */
24084 diff -Nur a/gcc/function.c b/gcc/function.c
24085 --- a/gcc/function.c    2009-07-11 21:06:26.000000000 +0200
24086 +++ b/gcc/function.c    2010-01-25 09:50:29.135686643 +0100
24087 @@ -272,7 +272,10 @@
24088    if (! type)
24089      type = lang_hooks.types.type_for_mode (mode, 0);
24090  
24091 -  return STACK_SLOT_ALIGNMENT (type, mode, alignment);
24092 +  return alignment_for_aligned_arrays (type,
24093 +                                      STACK_SLOT_ALIGNMENT (type,
24094 +                                                            mode,
24095 +                                                            alignment));
24096  }
24097  
24098  /* Allocate a stack slot of SIZE bytes and return a MEM rtx for it
24099 @@ -5359,6 +5362,57 @@
24100  {
24101    return IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (cfun->decl));
24102  }
24103 +
24104 +/* This function adjusts alignments as appropriate according to the
24105 +   setting of -falign-arrays.  If that is specified then the minimum
24106 +   alignment for array variables is set to be the largest power of two
24107 +   less than or equal to their total storage size, or the biggest
24108 +   alignment used on the machine, whichever is smaller.  */
24109 +
24110 +unsigned int
24111 +alignment_for_aligned_arrays (tree ty, unsigned int existing_alignment)
24112 +{
24113 +  unsigned int min_alignment;
24114 +  tree size;
24115 +
24116 +  /* Return the existing alignment if not using -falign-arrays or if
24117 +     the type is not an array type.  */
24118 +  if (!flag_align_arrays || !ty || TREE_CODE (ty) != ARRAY_TYPE)
24119 +    return existing_alignment;
24120 +
24121 +  /* Extract the total storage size of the array in bits.  */
24122 +  size = TYPE_SIZE (ty);
24123 +  gcc_assert (size);
24124 +
24125 +  /* At least for variable-length arrays, TREE_CODE (size) might not be an
24126 +     integer constant; check it now.  If it is not, give the array at
24127 +     least BIGGEST_ALIGNMENT just to be safe.   Furthermore, we assume that
24128 +     alignments always fit into a host integer.  So if we can't fit the
24129 +     size of the array in bits into a host integer, it must also be large
24130 +     enough to deserve at least BIGGEST_ALIGNMENT (see below).  */
24131 +  if (TREE_CODE (size) != INTEGER_CST || !host_integerp (size, 1))
24132 +    min_alignment = BIGGEST_ALIGNMENT;
24133 +  else
24134 +    {
24135 +      unsigned HOST_WIDE_INT bits = TREE_INT_CST_LOW (size);
24136 +      bits = (bits ? bits : 1);
24137 +
24138 +      /* An array with size greater than BIGGEST_ALIGNMENT is assigned
24139 +        at least that alignment.  In all other cases the minimum
24140 +        alignment of the array is set to be the largest power of two
24141 +        less than or equal to the total storage size of the array.
24142 +        We assume that BIGGEST_ALIGNMENT fits in "unsigned int"; thus,
24143 +        the shift below will not overflow.  */
24144 +      if (bits >= BIGGEST_ALIGNMENT)
24145 +       min_alignment = BIGGEST_ALIGNMENT;
24146 +      else
24147 +       min_alignment = 1 << (floor_log2 (bits));
24148 +    }
24149 +
24150 +  /* Having computed the minimum permissible alignment, enlarge it
24151 +     if EXISTING_ALIGNMENT is greater.  */
24152 +  return MAX (min_alignment, existing_alignment); 
24153 +}
24154  \f
24155  
24156  static unsigned int
24157 diff -Nur a/gcc/function.h b/gcc/function.h
24158 --- a/gcc/function.h    2009-03-23 17:29:33.000000000 +0100
24159 +++ b/gcc/function.h    2010-01-25 09:50:29.135686643 +0100
24160 @@ -25,6 +25,7 @@
24161  #include "tree.h"
24162  #include "hashtab.h"
24163  #include "varray.h"
24164 +#include "hard-reg-set.h"
24165  
24166  /* Stack of pending (incomplete) sequences saved by `start_sequence'.
24167     Each element describes one pending sequence.
24168 @@ -441,6 +442,8 @@
24169  
24170    /* True if dbr_schedule has already been called for this function.  */
24171    bool dbr_scheduled_p;
24172 +
24173 +  HARD_REG_SET asm_clobbers;
24174  };
24175  
24176  #define return_label (crtl->x_return_label)
24177 @@ -687,4 +690,7 @@
24178  extern void used_types_insert (tree);
24179  
24180  extern int get_next_funcdef_no (void);
24181 +
24182 +extern unsigned int alignment_for_aligned_arrays (tree, unsigned int);
24183 +
24184  #endif  /* GCC_FUNCTION_H */
24185 diff -Nur a/gcc/gcc.c b/gcc/gcc.c
24186 --- a/gcc/gcc.c 2009-03-17 22:25:59.000000000 +0100
24187 +++ b/gcc/gcc.c 2010-01-25 09:50:29.135686643 +0100
24188 @@ -83,6 +83,13 @@
24189  #include "gcc.h"
24190  #include "flags.h"
24191  #include "opts.h"
24192 +#ifdef CSL_LICENSE_FEATURE
24193 +#  include <csl/license.h>
24194 +#else
24195 +   /* TARGET_FLEXLM requires the CodeSourcery license library be
24196 +      present.  */
24197 +#  undef TARGET_FLEXLM
24198 +#endif
24199  
24200  /* By default there is no special suffix for target executables.  */
24201  /* FIXME: when autoconf is fixed, remove the host check - dj */
24202 @@ -229,6 +236,37 @@
24203  
24204  static int use_pipes;
24205  
24206 +/* Nonzero means that libgcc is being linked automatically by the
24207 +   compiler from its normal installed location; that is, neither -B,
24208 +   -nostdlib nor -nodefaultlibs was passed.  */
24209 +
24210 +static int using_libgcc = 1;
24211 +
24212 +/* Nonzero means that the current spec is executing the linker.  */
24213 +
24214 +static int executing_linker = 0;
24215 +
24216 +#ifdef CSL_LICENSE_FEATURE
24217 +/* 0 if we have not checked for a license, 1 if a license was
24218 +   obtained, -1 if license checkout failed.  */
24219 +   
24220 +static int license_checked;
24221 +
24222 +# ifdef TARGET_FLEXLM
24223 +/* WRS LOCAL
24224 +   Nonzero means to pay attention to the result of the license manager.  */
24225 +
24226 +static int license_me_flag;
24227 +
24228 +/* WRS LOCAL
24229 +   True if the -p option should be passed to the get_feature command.  */
24230 +
24231 +static int feature_proxy_flag = 1;
24232 +# else
24233 +#  define license_me_flag 1
24234 +# endif /* defined (TARGET_FLELM) */
24235 +#endif /* defined (CSL_LICENSE_FEATURE) */
24236 +
24237  /* The compiler version.  */
24238  
24239  static const char *compiler_version;
24240 @@ -651,8 +689,32 @@
24241  
24242  /* config.h can define SWITCHES_NEED_SPACES to control which options
24243     require spaces between the option and the argument.  */
24244 +/* GCC Bugzilla PR11810 indicates that GCC does not correctly handle
24245 +   "-ofoo.o", in that it records "-ofoo.o" as a temporary file to
24246 +   delete, rather than "foo.o".  
24247 +
24248 +   Unfortunately, Eclipse's makefile generators use the "-ofoo.o"
24249 +   form.  See also CS Issue #3433.  So, although most users probably
24250 +   use "-o foo.o", the "-ofoo.o" form is used in practice.
24251 +
24252 +   See this email thread for additional information:
24253 +
24254 +     http://gcc.gnu.org/ml/gcc/2008-07/msg00395.html
24255 +
24256 +   Therefore, we define SWITCHES_NEED_SPACES to include "o" by
24257 +   default.  This causes "-ofoo.o" to be split into "-o foo.o" during
24258 +   the initial processing of the command-line, before being seen by
24259 +   the specs machinery.
24260
24261 +   A risk of this change is that tools which *require* the "-ofoo.o"
24262 +   form will no longer work.  However, we know of no such tools, and
24263 +   they would not have worked with the "-o foo.o" form anyhow.  
24264 +
24265 +   If this general strategy is acceptable upstream, the best approach
24266 +   might be simply to eliminate this macro, since the only definitions
24267 +   in target files are also to the value "o".  */
24268  #ifndef SWITCHES_NEED_SPACES
24269 -#define SWITCHES_NEED_SPACES ""
24270 +#define SWITCHES_NEED_SPACES "o"
24271  #endif
24272  
24273  /* config.h can define ENDFILE_SPEC to override the default crtn files.  */
24274 @@ -728,6 +790,8 @@
24275  %{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
24276      %(linker) %l " LINK_PIE_SPEC "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
24277      %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
24278 +    %{Wno-poison-system-directories:--no-poison-system-directories}\
24279 +    %{Werror=poison-system-directories:--error-poison-system-directories}\
24280      %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\
24281      %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)} %(mflib)\
24282      %{fprofile-arcs|fprofile-generate|coverage:-lgcov}\
24283 @@ -882,7 +946,7 @@
24284  #endif
24285  
24286  static const char *const driver_self_specs[] = {
24287 -  DRIVER_SELF_SPECS, GOMP_SELF_SPECS
24288 +  DRIVER_SELF_SPECS, CONFIGURE_SPECS, GOMP_SELF_SPECS
24289  };
24290  
24291  #ifndef OPTION_DEFAULT_SPECS
24292 @@ -2853,6 +2917,29 @@
24293  
24294    gcc_assert (!processing_spec_function);
24295  
24296 +  if (executing_linker && using_libgcc)
24297 +    {
24298 +      const char *libgcc_a_filename;
24299 +
24300 +      /* Verify that the multilib being used is actually installed.  */
24301 +      libgcc_a_filename = (gcc_exec_prefix
24302 +                          ? gcc_exec_prefix
24303 +                          : concat (standard_exec_prefix,
24304 +                                    machine_suffix, NULL));
24305 +      if (multilib_dir && strcmp (multilib_dir, ".") != 0)
24306 +       libgcc_a_filename = concat (libgcc_a_filename, multilib_dir,
24307 +                                   dir_separator_str, NULL);
24308 +      libgcc_a_filename = concat (libgcc_a_filename, "libgcc.a", NULL);
24309 +      if (access (libgcc_a_filename, R_OK) != 0)
24310 +       {
24311 +         if (errno == ENOENT)
24312 +           fatal ("selected multilib '%s' not installed",
24313 +                  multilib_dir ? multilib_dir : ".");
24314 +         else
24315 +           pfatal_with_name (libgcc_a_filename);
24316 +       }
24317 +    }
24318 +
24319    if (wrapper_string)
24320      {
24321        string = find_a_file (&exec_prefixes, argbuf[0], X_OK, false);
24322 @@ -3688,6 +3775,16 @@
24323           add_assembler_option ("--target-help", 13);
24324           add_linker_option ("--target-help", 13);
24325         }
24326 +      else if (! strcmp (argv[i], "-nodefaultlibs"))
24327 +       {
24328 +         using_libgcc = 0;
24329 +         n_switches++;
24330 +       }
24331 +      else if (! strcmp (argv[i], "-nostdlib"))
24332 +       {
24333 +         using_libgcc = 0;
24334 +         n_switches++;
24335 +       }
24336        else if (! strcmp (argv[i], "-pass-exit-codes"))
24337         {
24338           pass_exit_codes = 1;
24339 @@ -3852,6 +3949,14 @@
24340           verbose_only_flag++;
24341           verbose_flag++;
24342         }
24343 +#ifdef TARGET_FLEXLM
24344 +      else if (strcmp (argv[i], "-flicense-me") == 0)
24345 +       license_me_flag = 1;  /* WRS LOCAL */
24346 +      else if (strcmp (argv[i], "-ffeature-proxy") == 0)
24347 +       feature_proxy_flag = 1;  /* WRS LOCAL */
24348 +      else if (strcmp (argv[i], "-fno-feature-proxy") == 0)
24349 +       feature_proxy_flag = 0;  /* WRS LOCAL */
24350 +#endif
24351        else if (argv[i][0] == '-' && argv[i][1] != 0)
24352         {
24353           const char *p = &argv[i][1];
24354 @@ -3905,6 +4010,7 @@
24355                             PREFIX_PRIORITY_B_OPT, 0, 0);
24356                 add_prefix (&include_prefixes, value, NULL,
24357                             PREFIX_PRIORITY_B_OPT, 0, 0);
24358 +               using_libgcc = 0;
24359                 n_switches++;
24360               }
24361               break;
24362 @@ -3967,6 +4073,21 @@
24363  #endif
24364               goto normal_switch;
24365  
24366 +             /* WRS LOCAL only invoke get_feature if we are running
24367 +                the compiler proper.  */
24368 +#ifdef TARGET_FLEXLM
24369 +           case 'E':
24370 +             if (argv[i][2] == '\0')
24371 +               license_checked = 1;
24372 +             goto normal_switch;
24373 +
24374 +           case 'M':
24375 +             if (argv[i][2] == '\0'
24376 +                 || (argv[i][2] == 'M' && argv[i][3] == '\0'))
24377 +               license_checked = 1;
24378 +             goto normal_switch;
24379 +#endif
24380 +
24381             default:
24382             normal_switch:
24383  
24384 @@ -4153,6 +4274,14 @@
24385         ;
24386        else if (! strcmp (argv[i], "-print-sysroot-headers-suffix"))
24387         ;
24388 +#ifdef TARGET_FLEXLM
24389 +      else if (! strcmp (argv[i], "-flicense-me"))
24390 +       ;
24391 +      else if (! strcmp (argv[i], "-ffeature-proxy"))
24392 +       ;
24393 +      else if (! strcmp (argv[i], "-fno-feature-proxy"))
24394 +       ;
24395 +#endif
24396        else if (! strncmp (argv[i], "--sysroot=", strlen ("--sysroot=")))
24397         {
24398           target_system_root = argv[i] + strlen ("--sysroot=");
24399 @@ -4616,27 +4745,53 @@
24400  
24401    if (argbuf_index > 0)
24402      {
24403 -      int i, first;
24404 +      int i, first, n;
24405  
24406        first = n_switches;
24407 -      n_switches += argbuf_index;
24408 -      switches = XRESIZEVEC (struct switchstr, switches, n_switches + 1);
24409 +      n = n_switches + argbuf_index;
24410 +      switches = XRESIZEVEC (struct switchstr, switches, n + 1);
24411 +      switches[n] = switches[first];
24412  
24413        switches[n_switches] = switches[first];
24414        for (i = 0; i < argbuf_index; i++)
24415         {
24416           struct switchstr *sw;
24417 +         const char *p = &argbuf[i][1];
24418 +         int c = *p;
24419  
24420           /* Each switch should start with '-'.  */
24421           if (argbuf[i][0] != '-')
24422             fatal ("switch '%s' does not start with '-'", argbuf[i]);
24423  
24424 -         sw = &switches[i + first];
24425 +         sw = &switches[n_switches];
24426           sw->part1 = &argbuf[i][1];
24427           sw->args = 0;
24428           sw->live_cond = 0;
24429           sw->validated = 0;
24430           sw->ordering = 0;
24431 +
24432 +         /* Deal with option arguments in separate argv elements.  */
24433 +         if ((SWITCH_TAKES_ARG (c) > (p[1] != 0))
24434 +             || WORD_SWITCH_TAKES_ARG (p))
24435 +           {
24436 +             int j = 0;
24437 +             int n_args = WORD_SWITCH_TAKES_ARG (p);
24438 +
24439 +             if (n_args == 0)
24440 +               {
24441 +                 /* Count only the option arguments in separate argv elements.  */
24442 +                 n_args = SWITCH_TAKES_ARG (c) - (p[1] != 0);
24443 +               }
24444 +             if (i + n_args >= argbuf_index)
24445 +               fatal ("argument to '-%s' is missing", p);
24446 +             switches[n_switches].args
24447 +               = XNEWVEC (const char *, n_args + 1);
24448 +             while (j < n_args)
24449 +               switches[n_switches].args[j++] = argbuf[++i];
24450 +             /* Null-terminate the vector.  */
24451 +             switches[n_switches].args[j] = 0;
24452 +           }
24453 +         n_switches++;
24454         }
24455      }
24456  }
24457 @@ -6225,6 +6380,10 @@
24458    const char *p;
24459    struct user_specs *uptr;
24460    char **old_argv = argv;
24461 +#ifdef CSL_LICENSE_FEATURE
24462 +  csl_license_impl *license_impl = csl_license_subproc;
24463 +  csl_license *license = NULL;
24464 +#endif
24465  
24466    /* Initialize here, not in definition.  The IRIX 6 O32 cc sometimes chokes
24467       on ?: in file-scope variable initializations.  */
24468 @@ -6792,10 +6951,84 @@
24469             }
24470           else
24471             {
24472 -             value = do_spec (input_file_compiler->spec);
24473 +             value = 0;
24474 +
24475 +#ifdef CSL_LICENSE_FEATURE
24476 +             if (!license_checked)
24477 +               {
24478 +                 const char *subproc, *found_subproc;
24479 +# ifdef TARGET_FLEXLM
24480 +                 const char *subproc_argv[10];
24481 +                 const char **p;
24482 +                 subproc = "get_feature";
24483 +                 p = subproc_argv;
24484 +                 *p++ = subproc;
24485 +                 if (feature_proxy_flag)
24486 +                   *p++ = "-p";
24487 +                 *p++ = "-co";
24488 +                 *p++ = xstrdup (DEFAULT_TARGET_MACHINE);
24489 +                 *p++ = "-v";
24490 +                 *p++ = "3.3";
24491 +                 *p++ = "gnu";
24492 +                 *p++ = infiles[i].language;
24493 +                 *p++ = (license_me_flag ? "-flicense-me" : "");
24494 +                 *p++ = 0;
24495 +# else /* !defined (TARGET_FLEXLM) */
24496 +                 const char **subproc_argv = NULL;
24497 +                 subproc = CSL_LICENSE_PROG;
24498 +# endif /* !defined (TARGET_FLEXLM) */
24499 +                 /* Find the licensing program.  */
24500 +                 found_subproc = find_a_file (&exec_prefixes, 
24501 +                                              subproc,
24502 +                                              X_OK,
24503 +                                              /*multilib=*/false);
24504 +                 if (found_subproc)
24505 +                   subproc = found_subproc;
24506 +                 /* Begin checking out the license.  */
24507 +                 license 
24508 +                   = csl_subproc_license_new (CSL_LICENSE_FEATURE,
24509 +                                              CSL_LICENSE_VERSION,
24510 +                                              /*argcp=*/NULL,
24511 +                                              /*argvp=*/NULL,
24512 +                                              subproc,
24513 +                                              subproc_argv);
24514 +                 if (!license)
24515 +                   {
24516 +                     error ("could not invoke license program");
24517 +                     license_checked = -1;
24518 +                   }
24519 +               }
24520 +             if (license_checked == -1 && license_me_flag)
24521 +               value = -1;
24522 +#endif /* defined (CSL_LICENSE_FEATURE) */ 
24523 +             /* Now do the compile.  */
24524 +             if (!value)
24525 +               value = do_spec (input_file_compiler->spec);
24526               infiles[i].compiled = true;
24527               if (value < 0)
24528                 this_file_error = 1;
24529 +#ifdef CSL_LICENSE_FEATURE
24530 +             if (!license_checked && license)
24531 +               {
24532 +                 /* Finish checking out the license.  */
24533 +                 const csl_license_status *license_status;
24534 +                 if  (!license_impl->license_check (license,
24535 +                                                    &license_status))
24536 +                   {
24537 +                     if (license_me_flag) /* WRS LOCAL */
24538 +                       error ("%s", license_status->msg);
24539 +                     /* Remember that the license check failed so
24540 +                        that we (a) do not check again, and (b) issue
24541 +                        errors about other files as well.  */
24542 +                     license_checked = -1;
24543 +                     if (license_me_flag) /* WRS LOCAL */
24544 +                       /* Remove this file.  */
24545 +                       this_file_error = 1;
24546 +                   }
24547 +                 else
24548 +                   license_checked = 1;
24549 +               }
24550 +#endif /* defined (CSL_LICENSE_FEATURE) */ 
24551             }
24552         }
24553  
24554 @@ -6873,7 +7106,9 @@
24555                     " to the linker.\n\n"));
24556           fflush (stdout);
24557         }
24558 +      executing_linker = 1;
24559        value = do_spec (link_command_spec);
24560 +      executing_linker = 0;
24561        if (value < 0)
24562         error_count = 1;
24563        linker_was_run = (tmp != execution_count);
24564 @@ -6901,6 +7136,12 @@
24565        printf ("%s\n", bug_report_url);
24566      }
24567  
24568 +#ifdef CSL_LICENSE_FEATURE
24569 +  /* Relinquish the license.  */
24570 +  if (license)
24571 +    license_impl->license_delete (license);
24572 +#endif
24573 +    
24574    return (signal_count != 0 ? 2
24575           : error_count > 0 ? (pass_exit_codes ? greatest_status : 1)
24576           : 0);
24577 diff -Nur a/gcc/gcse.c b/gcc/gcse.c
24578 --- a/gcc/gcse.c        2009-04-27 13:55:13.000000000 +0200
24579 +++ b/gcc/gcse.c        2010-01-25 09:50:29.145688053 +0100
24580 @@ -172,6 +172,7 @@
24581  #include "hashtab.h"
24582  #include "df.h"
24583  #include "dbgcnt.h"
24584 +#include "target.h"
24585  
24586  /* Propagate flow information through back edges and thus enable PRE's
24587     moving loop invariant calculations out of loops.
24588 @@ -1744,7 +1745,9 @@
24589              REG_EQUIV notes and if the argument slot is used somewhere
24590              explicitly, it means address of parameter has been taken,
24591              so we should not extend the lifetime of the pseudo.  */
24592 -         && (note == NULL_RTX || ! MEM_P (XEXP (note, 0))))
24593 +         && (note == NULL_RTX || ! MEM_P (XEXP (note, 0)))
24594 +         && ! (targetm.cannot_copy_insn_p && INSN_P (insn)
24595 +               && targetm.cannot_copy_insn_p (insn)))
24596         {
24597           /* An expression is not anticipatable if its operands are
24598              modified before this insn or if this is not the only SET in
24599 diff -Nur a/gcc/genautomata.c b/gcc/genautomata.c
24600 --- a/gcc/genautomata.c 2008-09-01 10:57:00.000000000 +0200
24601 +++ b/gcc/genautomata.c 2010-01-25 09:50:29.145688053 +0100
24602 @@ -1,5 +1,5 @@
24603  /* Pipeline hazard description translator.
24604 -   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
24605 +   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
24606     Free Software Foundation, Inc.
24607  
24608     Written by Vladimir Makarov <vmakarov@redhat.com>
24609 @@ -22,21 +22,25 @@
24610  
24611  /* References:
24612  
24613 -   1. Detecting pipeline structural hazards quickly. T. Proebsting,
24614 +   1. The finite state automaton based pipeline hazard recognizer and
24615 +      instruction scheduler in GCC.  V. Makarov.  Proceedings of GCC
24616 +      summit, 2003.
24617 +
24618 +   2. Detecting pipeline structural hazards quickly. T. Proebsting,
24619        C. Fraser. Proceedings of ACM SIGPLAN-SIGACT Symposium on
24620        Principles of Programming Languages, pages 280--286, 1994.
24621  
24622        This article is a good start point to understand usage of finite
24623        state automata for pipeline hazard recognizers.  But I'd
24624 -      recommend the 2nd article for more deep understanding.
24625 +      recommend the 1st and 3rd article for more deep understanding.
24626  
24627 -   2. Efficient Instruction Scheduling Using Finite State Automata:
24628 +   3. Efficient Instruction Scheduling Using Finite State Automata:
24629        V. Bala and N. Rubin, Proceedings of MICRO-28.  This is the best
24630        article about usage of finite state automata for pipeline hazard
24631        recognizers.
24632  
24633 -   The current implementation is different from the 2nd article in the
24634 -   following:
24635 +   The current implementation is described in the 1st article and it
24636 +   is different from the 3rd article in the following:
24637  
24638     1. New operator `|' (alternative) is permitted in functional unit
24639        reservation which can be treated deterministically and
24640 @@ -463,7 +467,10 @@
24641       insn.  */
24642    int insn_num;
24643    /* The following field value is list of bypasses in which given insn
24644 -     is output insn.  */
24645 +     is output insn.  Bypasses with the same input insn stay one after
24646 +     another in the list in the same order as their occurrences in the
24647 +     description but the bypass without a guard stays always the last
24648 +     in a row of bypasses with the same input insn.  */
24649    struct bypass_decl *bypass_list;
24650  
24651    /* The following fields are defined by automaton generator.  */
24652 @@ -2367,18 +2374,67 @@
24653  }
24654  
24655  
24656 -/* The function searches for bypass with given IN_INSN_RESERV in given
24657 -   BYPASS_LIST.  */
24658 -static struct bypass_decl *
24659 -find_bypass (struct bypass_decl *bypass_list,
24660 -            struct insn_reserv_decl *in_insn_reserv)
24661 -{
24662 -  struct bypass_decl *bypass;
24663 -
24664 -  for (bypass = bypass_list; bypass != NULL; bypass = bypass->next)
24665 -    if (bypass->in_insn_reserv == in_insn_reserv)
24666 -      break;
24667 -  return bypass;
24668 +/* The function inserts BYPASS in the list of bypasses of the
24669 +   corresponding output insn.  The order of bypasses in the list is
24670 +   decribed in a comment for member `bypass_list' (see above).  If
24671 +   there is already the same bypass in the list the function reports
24672 +   this and does nothing.  */
24673 +static void
24674 +insert_bypass (struct bypass_decl *bypass)
24675 +{
24676 +  struct bypass_decl *curr, *last;
24677 +  struct insn_reserv_decl *out_insn_reserv = bypass->out_insn_reserv;
24678 +  struct insn_reserv_decl *in_insn_reserv = bypass->in_insn_reserv;
24679 +  
24680 +  for (curr = out_insn_reserv->bypass_list, last = NULL;
24681 +       curr != NULL;
24682 +       last = curr, curr = curr->next)
24683 +    if (curr->in_insn_reserv == in_insn_reserv)
24684 +      {
24685 +       if ((bypass->bypass_guard_name != NULL
24686 +            && curr->bypass_guard_name != NULL
24687 +            && ! strcmp (bypass->bypass_guard_name, curr->bypass_guard_name))
24688 +           || bypass->bypass_guard_name == curr->bypass_guard_name)
24689 +         {
24690 +           if (bypass->bypass_guard_name == NULL)
24691 +             {
24692 +               if (!w_flag)
24693 +                 error ("the same bypass `%s - %s' is already defined",
24694 +                        bypass->out_insn_name, bypass->in_insn_name);
24695 +               else
24696 +                 warning (0, "the same bypass `%s - %s' is already defined",
24697 +                          bypass->out_insn_name, bypass->in_insn_name);
24698 +             }
24699 +           else if (!w_flag)
24700 +             error ("the same bypass `%s - %s' (guard %s) is already defined",
24701 +                    bypass->out_insn_name, bypass->in_insn_name,
24702 +                    bypass->bypass_guard_name);
24703 +           else
24704 +             warning
24705 +               (0, "the same bypass `%s - %s' (guard %s) is already defined",
24706 +                bypass->out_insn_name, bypass->in_insn_name,
24707 +                bypass->bypass_guard_name);
24708 +           return;
24709 +         }
24710 +       if (curr->bypass_guard_name == NULL)
24711 +         break;
24712 +       if (curr->next == NULL || curr->next->in_insn_reserv != in_insn_reserv)
24713 +         {
24714 +           last = curr;
24715 +           break;
24716 +         }
24717 +         
24718 +      }
24719 +  if (last == NULL)
24720 +    {
24721 +      bypass->next = out_insn_reserv->bypass_list;
24722 +      out_insn_reserv->bypass_list = bypass;
24723 +    }
24724 +  else
24725 +    {
24726 +      bypass->next = last->next;
24727 +      last->next = bypass;
24728 +    }
24729  }
24730  
24731  /* The function processes pipeline description declarations, checks
24732 @@ -2391,7 +2447,6 @@
24733    decl_t decl_in_table;
24734    decl_t out_insn_reserv;
24735    decl_t in_insn_reserv;
24736 -  struct bypass_decl *bypass;
24737    int automaton_presence;
24738    int i;
24739  
24740 @@ -2514,36 +2569,7 @@
24741                 = DECL_INSN_RESERV (out_insn_reserv);
24742               DECL_BYPASS (decl)->in_insn_reserv
24743                 = DECL_INSN_RESERV (in_insn_reserv);
24744 -             bypass
24745 -               = find_bypass (DECL_INSN_RESERV (out_insn_reserv)->bypass_list,
24746 -                              DECL_BYPASS (decl)->in_insn_reserv);
24747 -             if (bypass != NULL)
24748 -               {
24749 -                 if (DECL_BYPASS (decl)->latency == bypass->latency)
24750 -                   {
24751 -                     if (!w_flag)
24752 -                       error
24753 -                         ("the same bypass `%s - %s' is already defined",
24754 -                          DECL_BYPASS (decl)->out_insn_name,
24755 -                          DECL_BYPASS (decl)->in_insn_name);
24756 -                     else
24757 -                       warning
24758 -                         (0, "the same bypass `%s - %s' is already defined",
24759 -                          DECL_BYPASS (decl)->out_insn_name,
24760 -                          DECL_BYPASS (decl)->in_insn_name);
24761 -                   }
24762 -                 else
24763 -                   error ("bypass `%s - %s' is already defined",
24764 -                          DECL_BYPASS (decl)->out_insn_name,
24765 -                          DECL_BYPASS (decl)->in_insn_name);
24766 -               }
24767 -             else
24768 -               {
24769 -                 DECL_BYPASS (decl)->next
24770 -                   = DECL_INSN_RESERV (out_insn_reserv)->bypass_list;
24771 -                 DECL_INSN_RESERV (out_insn_reserv)->bypass_list
24772 -                   = DECL_BYPASS (decl);
24773 -               }
24774 +             insert_bypass (DECL_BYPASS (decl));
24775             }
24776         }
24777      }
24778 @@ -8159,19 +8185,32 @@
24779                             (advance_cycle_insn_decl)->insn_num));
24780             fprintf (output_file, "        case %d:\n",
24781                      bypass->in_insn_reserv->insn_num);
24782 -           if (bypass->bypass_guard_name == NULL)
24783 -             fprintf (output_file, "          return %d;\n",
24784 -                      bypass->latency);
24785 -           else
24786 +           for (;;)
24787               {
24788 -               fprintf (output_file,
24789 -                        "          if (%s (%s, %s))\n",
24790 -                        bypass->bypass_guard_name, INSN_PARAMETER_NAME,
24791 -                        INSN2_PARAMETER_NAME);
24792 -               fprintf (output_file,
24793 -                        "            return %d;\n          break;\n",
24794 -                        bypass->latency);
24795 +               if (bypass->bypass_guard_name == NULL)
24796 +                 {
24797 +                   gcc_assert (bypass->next == NULL
24798 +                               || (bypass->in_insn_reserv
24799 +                                   != bypass->next->in_insn_reserv));
24800 +                   fprintf (output_file, "          return %d;\n",
24801 +                            bypass->latency);
24802 +                 }
24803 +               else
24804 +                 {
24805 +                   fprintf (output_file,
24806 +                            "          if (%s (%s, %s))\n",
24807 +                            bypass->bypass_guard_name, INSN_PARAMETER_NAME,
24808 +                            INSN2_PARAMETER_NAME);
24809 +                   fprintf (output_file, "            return %d;\n",
24810 +                            bypass->latency);
24811 +                 }
24812 +               if (bypass->next == NULL
24813 +                   || bypass->in_insn_reserv != bypass->next->in_insn_reserv)
24814 +                 break;
24815 +               bypass = bypass->next;
24816               }
24817 +           if (bypass->bypass_guard_name != NULL)
24818 +             fprintf (output_file, "          break;\n");
24819           }
24820         fputs ("        }\n      break;\n", output_file);
24821        }
24822 diff -Nur a/gcc/gengtype-lex.c b/gcc/gengtype-lex.c
24823 --- a/gcc/gengtype-lex.c        2009-07-22 09:46:07.000000000 +0200
24824 +++ b/gcc/gengtype-lex.c        1970-01-01 01:00:00.000000000 +0100
24825 @@ -1,2638 +0,0 @@
24826 -#line 2 "gengtype-lex.c"
24827 -
24828 -#line 4 "gengtype-lex.c"
24829 -
24830 -#define  YY_INT_ALIGNED short int
24831 -
24832 -/* A lexical scanner generated by flex */
24833 -
24834 -#define FLEX_SCANNER
24835 -#define YY_FLEX_MAJOR_VERSION 2
24836 -#define YY_FLEX_MINOR_VERSION 5
24837 -#define YY_FLEX_SUBMINOR_VERSION 35
24838 -#if YY_FLEX_SUBMINOR_VERSION > 0
24839 -#define FLEX_BETA
24840 -#endif
24841 -
24842 -/* First, we deal with  platform-specific or compiler-specific issues. */
24843 -
24844 -/* begin standard C headers. */
24845 -#include <stdio.h>
24846 -#include <string.h>
24847 -#include <errno.h>
24848 -#include <stdlib.h>
24849 -
24850 -/* end standard C headers. */
24851 -
24852 -/* flex integer type definitions */
24853 -
24854 -#ifndef FLEXINT_H
24855 -#define FLEXINT_H
24856 -
24857 -/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
24858 -
24859 -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
24860 -
24861 -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
24862 - * if you want the limit (max/min) macros for int types. 
24863 - */
24864 -#ifndef __STDC_LIMIT_MACROS
24865 -#define __STDC_LIMIT_MACROS 1
24866 -#endif
24867 -
24868 -#include <inttypes.h>
24869 -typedef int8_t flex_int8_t;
24870 -typedef uint8_t flex_uint8_t;
24871 -typedef int16_t flex_int16_t;
24872 -typedef uint16_t flex_uint16_t;
24873 -typedef int32_t flex_int32_t;
24874 -typedef uint32_t flex_uint32_t;
24875 -#else
24876 -typedef signed char flex_int8_t;
24877 -typedef short int flex_int16_t;
24878 -typedef int flex_int32_t;
24879 -typedef unsigned char flex_uint8_t; 
24880 -typedef unsigned short int flex_uint16_t;
24881 -typedef unsigned int flex_uint32_t;
24882 -#endif /* ! C99 */
24883 -
24884 -/* Limits of integral types. */
24885 -#ifndef INT8_MIN
24886 -#define INT8_MIN               (-128)
24887 -#endif
24888 -#ifndef INT16_MIN
24889 -#define INT16_MIN              (-32767-1)
24890 -#endif
24891 -#ifndef INT32_MIN
24892 -#define INT32_MIN              (-2147483647-1)
24893 -#endif
24894 -#ifndef INT8_MAX
24895 -#define INT8_MAX               (127)
24896 -#endif
24897 -#ifndef INT16_MAX
24898 -#define INT16_MAX              (32767)
24899 -#endif
24900 -#ifndef INT32_MAX
24901 -#define INT32_MAX              (2147483647)
24902 -#endif
24903 -#ifndef UINT8_MAX
24904 -#define UINT8_MAX              (255U)
24905 -#endif
24906 -#ifndef UINT16_MAX
24907 -#define UINT16_MAX             (65535U)
24908 -#endif
24909 -#ifndef UINT32_MAX
24910 -#define UINT32_MAX             (4294967295U)
24911 -#endif
24912 -
24913 -#endif /* ! FLEXINT_H */
24914 -
24915 -#ifdef __cplusplus
24916 -
24917 -/* The "const" storage-class-modifier is valid. */
24918 -#define YY_USE_CONST
24919 -
24920 -#else  /* ! __cplusplus */
24921 -
24922 -/* C99 requires __STDC__ to be defined as 1. */
24923 -#if defined (__STDC__)
24924 -
24925 -#define YY_USE_CONST
24926 -
24927 -#endif /* defined (__STDC__) */
24928 -#endif /* ! __cplusplus */
24929 -
24930 -#ifdef YY_USE_CONST
24931 -#define yyconst const
24932 -#else
24933 -#define yyconst
24934 -#endif
24935 -
24936 -/* Returned upon end-of-file. */
24937 -#define YY_NULL 0
24938 -
24939 -/* Promotes a possibly negative, possibly signed char to an unsigned
24940 - * integer for use as an array index.  If the signed char is negative,
24941 - * we want to instead treat it as an 8-bit unsigned char, hence the
24942 - * double cast.
24943 - */
24944 -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
24945 -
24946 -/* Enter a start condition.  This macro really ought to take a parameter,
24947 - * but we do it the disgusting crufty way forced on us by the ()-less
24948 - * definition of BEGIN.
24949 - */
24950 -#define BEGIN (yy_start) = 1 + 2 *
24951 -
24952 -/* Translate the current start state into a value that can be later handed
24953 - * to BEGIN to return to the state.  The YYSTATE alias is for lex
24954 - * compatibility.
24955 - */
24956 -#define YY_START (((yy_start) - 1) / 2)
24957 -#define YYSTATE YY_START
24958 -
24959 -/* Action number for EOF rule of a given start state. */
24960 -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
24961 -
24962 -/* Special action meaning "start processing a new file". */
24963 -#define YY_NEW_FILE yyrestart(yyin  )
24964 -
24965 -#define YY_END_OF_BUFFER_CHAR 0
24966 -
24967 -/* Size of default input buffer. */
24968 -#ifndef YY_BUF_SIZE
24969 -#define YY_BUF_SIZE 16384
24970 -#endif
24971 -
24972 -/* The state buf must be large enough to hold one state per character in the main buffer.
24973 - */
24974 -#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
24975 -
24976 -#ifndef YY_TYPEDEF_YY_BUFFER_STATE
24977 -#define YY_TYPEDEF_YY_BUFFER_STATE
24978 -typedef struct yy_buffer_state *YY_BUFFER_STATE;
24979 -#endif
24980 -
24981 -extern int yyleng;
24982 -
24983 -extern FILE *yyin, *yyout;
24984 -
24985 -#define EOB_ACT_CONTINUE_SCAN 0
24986 -#define EOB_ACT_END_OF_FILE 1
24987 -#define EOB_ACT_LAST_MATCH 2
24988 -
24989 -    #define YY_LESS_LINENO(n)
24990 -    
24991 -/* Return all but the first "n" matched characters back to the input stream. */
24992 -#define yyless(n) \
24993 -       do \
24994 -               { \
24995 -               /* Undo effects of setting up yytext. */ \
24996 -        int yyless_macro_arg = (n); \
24997 -        YY_LESS_LINENO(yyless_macro_arg);\
24998 -               *yy_cp = (yy_hold_char); \
24999 -               YY_RESTORE_YY_MORE_OFFSET \
25000 -               (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
25001 -               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
25002 -               } \
25003 -       while ( 0 )
25004 -
25005 -#define unput(c) yyunput( c, (yytext_ptr)  )
25006 -
25007 -#ifndef YY_TYPEDEF_YY_SIZE_T
25008 -#define YY_TYPEDEF_YY_SIZE_T
25009 -typedef size_t yy_size_t;
25010 -#endif
25011 -
25012 -#ifndef YY_STRUCT_YY_BUFFER_STATE
25013 -#define YY_STRUCT_YY_BUFFER_STATE
25014 -struct yy_buffer_state
25015 -       {
25016 -       FILE *yy_input_file;
25017 -
25018 -       char *yy_ch_buf;                /* input buffer */
25019 -       char *yy_buf_pos;               /* current position in input buffer */
25020 -
25021 -       /* Size of input buffer in bytes, not including room for EOB
25022 -        * characters.
25023 -        */
25024 -       yy_size_t yy_buf_size;
25025 -
25026 -       /* Number of characters read into yy_ch_buf, not including EOB
25027 -        * characters.
25028 -        */
25029 -       int yy_n_chars;
25030 -
25031 -       /* Whether we "own" the buffer - i.e., we know we created it,
25032 -        * and can realloc() it to grow it, and should free() it to
25033 -        * delete it.
25034 -        */
25035 -       int yy_is_our_buffer;
25036 -
25037 -       /* Whether this is an "interactive" input source; if so, and
25038 -        * if we're using stdio for input, then we want to use getc()
25039 -        * instead of fread(), to make sure we stop fetching input after
25040 -        * each newline.
25041 -        */
25042 -       int yy_is_interactive;
25043 -
25044 -       /* Whether we're considered to be at the beginning of a line.
25045 -        * If so, '^' rules will be active on the next match, otherwise
25046 -        * not.
25047 -        */
25048 -       int yy_at_bol;
25049 -
25050 -    int yy_bs_lineno; /**< The line count. */
25051 -    int yy_bs_column; /**< The column count. */
25052 -    
25053 -       /* Whether to try to fill the input buffer when we reach the
25054 -        * end of it.
25055 -        */
25056 -       int yy_fill_buffer;
25057 -
25058 -       int yy_buffer_status;
25059 -
25060 -#define YY_BUFFER_NEW 0
25061 -#define YY_BUFFER_NORMAL 1
25062 -       /* When an EOF's been seen but there's still some text to process
25063 -        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
25064 -        * shouldn't try reading from the input source any more.  We might
25065 -        * still have a bunch of tokens to match, though, because of
25066 -        * possible backing-up.
25067 -        *
25068 -        * When we actually see the EOF, we change the status to "new"
25069 -        * (via yyrestart()), so that the user can continue scanning by
25070 -        * just pointing yyin at a new input file.
25071 -        */
25072 -#define YY_BUFFER_EOF_PENDING 2
25073 -
25074 -       };
25075 -#endif /* !YY_STRUCT_YY_BUFFER_STATE */
25076 -
25077 -/* Stack of input buffers. */
25078 -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
25079 -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
25080 -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
25081 -
25082 -/* We provide macros for accessing buffer states in case in the
25083 - * future we want to put the buffer states in a more general
25084 - * "scanner state".
25085 - *
25086 - * Returns the top of the stack, or NULL.
25087 - */
25088 -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
25089 -                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
25090 -                          : NULL)
25091 -
25092 -/* Same as previous macro, but useful when we know that the buffer stack is not
25093 - * NULL or when we need an lvalue. For internal use only.
25094 - */
25095 -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
25096 -
25097 -/* yy_hold_char holds the character lost when yytext is formed. */
25098 -static char yy_hold_char;
25099 -static int yy_n_chars;         /* number of characters read into yy_ch_buf */
25100 -int yyleng;
25101 -
25102 -/* Points to current character in buffer. */
25103 -static char *yy_c_buf_p = (char *) 0;
25104 -static int yy_init = 0;                /* whether we need to initialize */
25105 -static int yy_start = 0;       /* start state number */
25106 -
25107 -/* Flag which is used to allow yywrap()'s to do buffer switches
25108 - * instead of setting up a fresh yyin.  A bit of a hack ...
25109 - */
25110 -static int yy_did_buffer_switch_on_eof;
25111 -
25112 -void yyrestart (FILE *input_file  );
25113 -void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
25114 -YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
25115 -void yy_delete_buffer (YY_BUFFER_STATE b  );
25116 -void yy_flush_buffer (YY_BUFFER_STATE b  );
25117 -void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
25118 -void yypop_buffer_state (void );
25119 -
25120 -static void yyensure_buffer_stack (void );
25121 -static void yy_load_buffer_state (void );
25122 -static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
25123 -
25124 -#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
25125 -
25126 -YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
25127 -YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
25128 -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
25129 -
25130 -void *yyalloc (yy_size_t  );
25131 -void *yyrealloc (void *,yy_size_t  );
25132 -void yyfree (void *  );
25133 -
25134 -#define yy_new_buffer yy_create_buffer
25135 -
25136 -#define yy_set_interactive(is_interactive) \
25137 -       { \
25138 -       if ( ! YY_CURRENT_BUFFER ){ \
25139 -        yyensure_buffer_stack (); \
25140 -               YY_CURRENT_BUFFER_LVALUE =    \
25141 -            yy_create_buffer(yyin,YY_BUF_SIZE ); \
25142 -       } \
25143 -       YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
25144 -       }
25145 -
25146 -#define yy_set_bol(at_bol) \
25147 -       { \
25148 -       if ( ! YY_CURRENT_BUFFER ){\
25149 -        yyensure_buffer_stack (); \
25150 -               YY_CURRENT_BUFFER_LVALUE =    \
25151 -            yy_create_buffer(yyin,YY_BUF_SIZE ); \
25152 -       } \
25153 -       YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
25154 -       }
25155 -
25156 -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
25157 -
25158 -/* Begin user sect3 */
25159 -
25160 -#define yywrap(n) 1
25161 -#define YY_SKIP_YYWRAP
25162 -
25163 -typedef unsigned char YY_CHAR;
25164 -
25165 -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
25166 -
25167 -typedef int yy_state_type;
25168 -
25169 -extern int yylineno;
25170 -
25171 -int yylineno = 1;
25172 -
25173 -extern char *yytext;
25174 -#define yytext_ptr yytext
25175 -
25176 -static yy_state_type yy_get_previous_state (void );
25177 -static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
25178 -static int yy_get_next_buffer (void );
25179 -static void yy_fatal_error (yyconst char msg[]  );
25180 -
25181 -/* Done after the current pattern has been matched and before the
25182 - * corresponding action - sets up yytext.
25183 - */
25184 -#define YY_DO_BEFORE_ACTION \
25185 -       (yytext_ptr) = yy_bp; \
25186 -       yyleng = (size_t) (yy_cp - yy_bp); \
25187 -       (yy_hold_char) = *yy_cp; \
25188 -       *yy_cp = '\0'; \
25189 -       (yy_c_buf_p) = yy_cp;
25190 -
25191 -#define YY_NUM_RULES 49
25192 -#define YY_END_OF_BUFFER 50
25193 -/* This struct is not used in this scanner,
25194 -   but its presence is necessary. */
25195 -struct yy_trans_info
25196 -       {
25197 -       flex_int32_t yy_verify;
25198 -       flex_int32_t yy_nxt;
25199 -       };
25200 -static yyconst flex_int16_t yy_accept[445] =
25201 -    {   0,
25202 -        0,    0,    0,    0,    0,    0,    0,    0,   50,   36,
25203 -       36,   33,   45,   36,   45,   34,   36,   36,   34,   34,
25204 -       34,   34,   34,   31,   10,   10,   31,   29,   31,   31,
25205 -       31,   20,   31,   31,   31,   31,   31,   31,   31,   31,
25206 -       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
25207 -       31,   10,   31,   41,   39,   46,   46,    0,    0,    0,
25208 -       37,    0,    0,    0,   38,   32,   34,    0,    0,    0,
25209 -        0,    0,    0,    0,    0,    0,   34,   34,   34,   34,
25210 -       34,   10,    0,   25,    0,    0,    0,    0,    9,   20,
25211 -       24,    0,    0,    0,    0,    0,    0,    0,    0,   26,
25212 -
25213 -       11,    0,    0,    0,    0,    0,    0,    0,    0,    0,
25214 -        0,    0,    0,    0,    0,   10,    0,    0,    0,    0,
25215 -       42,   44,   43,    0,   35,    0,    0,    0,    0,    0,
25216 -        0,   34,   34,   34,   34,   34,   34,   27,   28,    0,
25217 -        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
25218 -        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
25219 -        0,    0,    0,   30,    0,    0,    0,    0,    0,    0,
25220 -        0,    0,    0,    0,   34,   34,   34,   34,   34,   34,
25221 -        0,    0,    0,   13,    0,   14,    0,    0,    0,    0,
25222 -       22,   22,    0,    0,    0,    0,    0,    0,    0,    0,
25223 -
25224 -        0,    0,    0,   48,    0,    0,    0,    0,    0,    0,
25225 -        0,   34,   34,   34,   34,   34,   34,    0,    0,    0,
25226 -        0,    0,   17,    0,    0,    0,    0,    0,    0,    0,
25227 -        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
25228 -        0,    0,    0,    0,    0,    0,    0,    0,    0,   34,
25229 -       34,   34,   34,   34,    3,    0,    0,    0,    0,   12,
25230 -        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
25231 -        0,    0,    0,    0,    0,    0,   15,    0,    0,    0,
25232 -        0,    0,    0,    0,   34,    4,    5,    2,   34,    0,
25233 -        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
25234 -
25235 -        0,    0,    0,    0,    0,    0,    0,    0,    0,   16,
25236 -        0,    0,    0,    0,   34,    1,    0,    0,    0,    0,
25237 -        0,    0,    0,    0,    0,   22,   22,    0,    0,    0,
25238 -        0,    0,    0,    0,    0,    0,    0,   34,   34,   34,
25239 -        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
25240 -       21,    0,    0,    0,    0,    0,    0,   34,    7,    6,
25241 -        0,    0,    0,    0,    0,    0,    0,    0,    0,   18,
25242 -        0,    0,    0,   34,    0,    0,    0,    0,    0,    0,
25243 -        0,    0,   19,    0,    0,   47,   34,    0,    0,    0,
25244 -        0,    0,    0,    0,    0,    0,    0,   34,    0,    0,
25245 -
25246 -        0,    0,    0,    0,    0,    0,   34,    0,   24,   24,
25247 -        0,    0,    0,    0,    0,    0,    0,   34,    0,    0,
25248 -        0,    0,    0,    0,    0,    0,    0,    0,    0,    8,
25249 -        0,   23,    0,    0,    0,    0,    0,   40,    0,    0,
25250 -        0,    0,    0,    0
25251 -    } ;
25252 -
25253 -static yyconst flex_int32_t yy_ec[256] =
25254 -    {   0,
25255 -        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
25256 -        2,    2,    2,    1,    1,    1,    1,    1,    1,    1,
25257 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25258 -        1,    2,    1,    4,    5,    1,    6,    1,    7,    8,
25259 -        9,   10,    1,    6,    6,   11,   12,   13,   13,   13,
25260 -       13,   13,   13,   13,   13,   13,   13,    6,    6,    6,
25261 -        6,    6,    1,    1,   14,   15,   16,   17,   18,   19,
25262 -       20,   21,   22,   23,   23,   24,   25,   26,   27,   28,
25263 -       23,   29,   30,   31,   32,   33,   34,   23,   35,   23,
25264 -       36,   37,   38,    1,   39,    1,   40,   41,   42,   43,
25265 -
25266 -       44,   45,   46,   47,   48,   49,   49,   50,   51,   52,
25267 -       53,   54,   49,   55,   56,   57,   58,   59,   49,   60,
25268 -       61,   62,    6,    6,    6,    1,    1,    1,    1,    1,
25269 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25270 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25271 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25272 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25273 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25274 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25275 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25276 -
25277 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25278 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25279 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25280 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25281 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25282 -        1,    1,    1,    1,    1
25283 -    } ;
25284 -
25285 -static yyconst flex_int32_t yy_meta[63] =
25286 -    {   0,
25287 -        1,    2,    3,    1,    1,    1,    1,    1,    4,    5,
25288 -        1,    1,    6,    7,    7,    7,    7,    7,    7,    7,
25289 -        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
25290 -        7,    7,    7,    7,    7,    8,    1,    1,    9,    9,
25291 -        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
25292 -        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
25293 -        9,    9
25294 -    } ;
25295 -
25296 -static yyconst flex_int16_t yy_base[483] =
25297 -    {   0,
25298 -        0,   38,   96,   12,   12,   13,   15,   16, 1028, 1444,
25299 -       32,   51,   20,  990, 1016,    0,  157,   18, 1007,  964,
25300 -      966,  961,  969, 1444,   25,   27,   27, 1444,  983, 1008,
25301 -     1008, 1004,  215,  253,    5,   32,   29,  974,   45,  962,
25302 -      996,   35,   38,   39,   40,   41,  134,   42,  136,  137,
25303 -      138,   75,  996,    0, 1444,  985,  984,  166,  964,  162,
25304 -     1444,    0,  987,  990, 1444, 1444,    0,  186,  165,  974,
25305 -      931,  933,  928,  936,  168,  943,  967,  928,  140,  930,
25306 -      935,   87,  167, 1444,  979,  974,  977,  968, 1444,  950,
25307 -     1444,  935,  934,  145,   52,   46,  148,  165,  922, 1444,
25308 -
25309 -     1444,  152,  156,  155,  170,  173,  175,  182,  183,  185,
25310 -      211,  214,  222,  218,  221,  269,  957,  956,  291,    0,
25311 -     1444, 1444, 1444,  922, 1444,  937,  898,  195,  900,  905,
25312 -      907,  912,  906,  892,  890,  903,  893, 1444, 1444,  209,
25313 -      254,  251,  353,  248,  391,  354,  350,  351,  340,  355,
25314 -      341,  429,  339,  356,  344,  347,  360,  390,   43,  361,
25315 -      391,  395,  429, 1444,    0,    0,  280,  906,  900,  886,
25316 -      884,  897,  872,  876,  890,  867,  873,  878,  876,  866,
25317 -      381,  348,  382, 1444,  384, 1444,  389,  397,  491,  398,
25318 -     1444,  528,  418,  399,  420,  477,  478,  422,  421,  480,
25319 -
25320 -      479,    0,  449, 1444,  884,  861,  867,  872,  870,  860,
25321 -      859,  892,  857,  866,  850,  862,  586,  493,  496,  494,
25322 -      484,  624, 1444,    0,  878,  876,  876,  834,  839,  841,
25323 -      832,  830,  199,  830,  490,  499,  486,  492,  488,  489,
25324 -      662,    0,  863,  828,  837,  821,  833,    0,  832,  859,
25325 -      700,  738,  776,  829, 1444,  431,  258,  437,  515, 1444,
25326 -      846,  844,  841,  817,  829,  809,  319,  815,  813,  478,
25327 -      809,  512,  528,  520,  525,  814, 1444,    0,  833,    0,
25328 -        0,    0,  803,  551,  808, 1444, 1444, 1444,  852,  383,
25329 -      521,  530,  539,  822,  829,  813,  793,  787,  802,  801,
25330 -
25331 -      556,  793,  783,  785,  792,  787,  523,  545,  535, 1444,
25332 -        0,  795,    0,  561,  585, 1444,  555,  343,  581,  584,
25333 -      794,  811,  792,  773,  772, 1444,    0,  771,  783,  772,
25334 -      764,  552,  890,  558,    0,  623,  778,  784,  928,  966,
25335 -      583,  593,  594,  613,  792,  792,  771,  761,  746,  591,
25336 -     1444, 1004,    0,  778,    0,    0,  766,  776, 1444, 1444,
25337 -      620,  621,  626,  627,  653,  777,  769,  775, 1042, 1444,
25338 -        0,  772,  787,  767,  556,  577,  615,  649,  629,  762,
25339 -      753,  774, 1444,    0,  763, 1444,  773,  632,  659,  662,
25340 -      656,  654,  754,  742,  753,    0,  754,  729,  665,  688,
25341 -
25342 -      667,  744,  742,  683,    0,  695,  692,  689,  715,  722,
25343 -      699,  711,  701,  666,  673,    0,  705, 1080,  704,  749,
25344 -      751,  753,  756,  663,  658,  618,  593,    0,    0, 1444,
25345 -      758, 1444,  760,  600,  588,  543,  483, 1444,  439,  386,
25346 -      247,  206,  167, 1444, 1118, 1127, 1136, 1145, 1154, 1158,
25347 -     1167, 1176, 1185, 1194, 1202, 1211, 1220, 1229, 1238, 1247,
25348 -     1256, 1265, 1273, 1282, 1290, 1298, 1306, 1314, 1323, 1331,
25349 -     1340, 1349, 1357, 1365, 1374, 1383, 1392, 1400, 1409, 1417,
25350 -     1426, 1435
25351 -    } ;
25352 -
25353 -static yyconst flex_int16_t yy_def[483] =
25354 -    {   0,
25355 -      445,  445,  444,    3,  446,  446,  446,  446,  444,  444,
25356 -      444,  444,  447,  448,  449,  450,  444,  444,  450,  450,
25357 -      450,  450,  450,  444,  444,  444,  451,  444,  452,  444,
25358 -      444,  444,  453,  453,   34,   34,   34,   34,   34,  454,
25359 -      444,   34,   34,   34,   34,   34,   34,   34,   34,   34,
25360 -       34,  444,  455,  456,  444,  457,  457,  444,  444,  447,
25361 -      444,  447,  444,  448,  444,  444,  450,  444,  444,  444,
25362 -      444,  444,  444,  444,  444,  444,  450,  450,  450,  450,
25363 -      450,  444,  451,  444,  451,  444,  452,  444,  444,  444,
25364 -      444,   34,   34,   34,   34,   34,   34,   34,  454,  444,
25365 -
25366 -      444,   34,   34,   34,   34,   34,   34,   34,   34,   34,
25367 -       34,   34,   34,   34,   34,  444,  455,  455,  444,  458,
25368 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25369 -      444,  450,  450,  450,  450,  450,  450,  444,  444,   34,
25370 -       34,   34,  453,   34,  453,   34,   34,   34,   34,   34,
25371 -       34,  453,   34,   34,   34,   34,   34,   34,   34,   34,
25372 -       34,   34,  119,  444,  119,  459,  444,  444,  444,  444,
25373 -      444,  444,  444,  444,  450,  450,  450,  450,  450,  450,
25374 -       34,   34,   34,  444,   34,  444,   34,   34,  453,   34,
25375 -      444,  444,   34,   34,   34,   34,   34,   34,   34,   34,
25376 -
25377 -       34,  460,  444,  444,  444,  444,  444,  444,  444,  444,
25378 -      444,  450,  450,  450,  450,  450,  450,   34,   34,   34,
25379 -       34,  453,  444,  192,  444,  444,  444,  444,  444,  444,
25380 -      444,  444,  444,  444,   34,   34,   34,   34,   34,   34,
25381 -      453,  461,  444,  444,  444,  444,  444,  462,  444,  450,
25382 -      450,  450,  450,  450,  444,   34,   34,   34,   34,  444,
25383 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25384 -      444,   34,   34,   34,   34,  453,  444,  463,  444,  464,
25385 -      465,  466,  444,  444,  450,  444,  444,  444,  450,   34,
25386 -       34,   34,   34,  444,  444,  444,  444,  444,  444,  444,
25387 -
25388 -      467,  444,  444,  444,  444,  444,   34,   34,   34,  444,
25389 -      468,  444,  469,  444,  450,  444,   34,   34,   34,   34,
25390 -      444,  444,  444,  444,  444,  444,  192,  444,  444,  444,
25391 -      444,   34,  453,   34,  470,  444,  444,  450,  450,  450,
25392 -       34,   34,   34,   34,  444,  444,  444,  444,  444,   34,
25393 -      444,  453,  471,  444,  472,  473,  444,  450,  444,  444,
25394 -       34,   34,   34,   34,   34,  444,  444,  444,  453,  444,
25395 -      474,  444,  444,  450,   34,   34,   34,   34,   34,  444,
25396 -      444,  444,  444,  475,  444,  444,  450,   34,   34,   34,
25397 -       34,   34,  444,  444,  444,  476,  444,  450,   34,   34,
25398 -
25399 -       34,  444,  444,  444,  477,  444,  450,   34,  444,  478,
25400 -       34,  444,  444,  444,  444,  479,  444,  450,   34,  444,
25401 -      478,  478,  480,  444,  444,  444,  444,  481,  482,  444,
25402 -      444,  444,  480,  444,  444,  444,  444,  444,  444,  444,
25403 -      444,  444,  444,    0,  444,  444,  444,  444,  444,  444,
25404 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25405 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25406 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25407 -      444,  444
25408 -    } ;
25409 -
25410 -static yyconst flex_int16_t yy_nxt[1507] =
25411 -    {   0,
25412 -       10,   11,   12,   13,   10,   10,   14,   10,   10,   10,
25413 -       10,   15,   10,   52,   55,   55,   53,   55,   55,   75,
25414 -      444,   56,   56,   61,   57,   57,   82,   82,   82,   82,
25415 -       84,   92,   94,   58,   58,   10,   10,   10,   10,   17,
25416 -       12,   13,   18,   10,   14,   10,   10,   10,   10,   15,
25417 -       10,   59,   58,   58,   19,   92,   62,   95,   92,   96,
25418 -       76,   92,   98,   85,   92,   92,   92,   92,   92,   92,
25419 -       59,   92,   92,   10,   10,   10,  116,   82,   92,  117,
25420 -      143,   20,  105,  142,  103,  109,  198,  102,   82,   82,
25421 -      104,  106,  107,   21,   22,   23,   24,   25,   26,   27,
25422 -
25423 -       24,   28,   29,   28,   28,   28,   30,   31,   32,   33,
25424 -       34,   35,   33,   36,   33,   37,   38,   33,   33,   33,
25425 -       33,   33,   33,   33,   33,   33,   33,   33,   39,   33,
25426 -       33,   40,   41,   24,   33,   33,   42,   43,   44,   45,
25427 -       33,   33,   33,   46,   33,   47,   33,   48,   33,   49,
25428 -       33,   50,   33,   51,   33,   33,   33,   33,   68,   58,
25429 -       92,   69,   92,   92,   92,   61,   75,   58,   58,   75,
25430 -       84,   92,  141,   70,   92,  110,   59,  144,   92,  134,
25431 -      145,   92,   92,  112,  113,   59,  108,   68,   58,  115,
25432 -       69,   92,  111,  114,  135,  147,   92,  301,   62,   92,
25433 -
25434 -       71,   92,   70,   85,  146,   59,  148,   76,   92,   92,
25435 -       76,   92,   72,   73,   74,   91,   91,   91,   91,   91,
25436 -       91,   91,   91,   91,   91,   91,   91,  151,  149,   71,
25437 -      150,  152,  181,  153,  170,   92,  301,   92,  154,  155,
25438 -       92,   72,   73,   74,   92,  269,  270,   92,   92,  171,
25439 -       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
25440 -       91,   91,   91,   91,   91,  156,  157,  158,  161,  182,
25441 -      116,   82,  160,  117,   92,  183,  162,   92,  185,   93,
25442 -       92,  203,  203,  159,   92,  443,  291,  204,   91,   91,
25443 -       91,  163,  163,  164,  163,  163,  163,  163,  163,  163,
25444 -
25445 -      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
25446 -      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
25447 -      163,  163,  163,  163,  163,  163,  163,  163,  163,  165,
25448 -      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
25449 -      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
25450 -      165,  165,  165,  184,  184,  184,  184,  184,  184,  184,
25451 -      184,  184,  184,  184,  184,   92,   92,   92,  219,   92,
25452 -       92,  300,  342,   92,   92,  301,   92,   92,  188,  190,
25453 -       92,   92,   92,  194,  152,  195,   92,   92,  184,  184,
25454 -      184,  186,  186,  186,  186,  186,  186,  186,  186,  186,
25455 -
25456 -      186,  186,  186,  152,  152,  189,  187,   92,   92,   92,
25457 -       92,  442,  193,  317,  196,   92,   92,   92,  199,  218,
25458 -      220,   92,  221,   92,   92,   92,  186,  186,  186,  191,
25459 -      192,  192,  191,  191,  191,  191,  191,  191,  191,  191,
25460 -      191,  197,  201,  200,   92,  222,   92,   92,   92,  236,
25461 -      203,  203,  290,  152,  152,  441,  204,   92,  292,  237,
25462 -      239,  235,  240,   92,  191,  191,  191,  163,  163,  163,
25463 -      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
25464 -      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
25465 -      163,  223,  223,  223,  223,  223,  223,  223,  223,  223,
25466 -
25467 -      223,  223,  223,   92,   92,   92,   92,  256,  258,  257,
25468 -       92,  273,   92,  301,   92,   92,   92,  259,   92,   92,
25469 -       92,  238,   92,  304,  158,   92,  223,  223,  223,  224,
25470 -      224,  241,  272,  152,  152,  275,  293,  274,   92,  305,
25471 -      273,   92,  225,  226,  152,  276,   92,   92,  227,   92,
25472 -      307,   92,  314,  314,   92,  320,   92,  327,  327,  318,
25473 -      319,   92,  314,  314,  440,   92,  274,  308,  228,  229,
25474 -      230,   92,  309,  341,  334,  231,  332,  232,   92,  388,
25475 -      337,   92,   92,  233,   92,  234,  255,  255,  255,  255,
25476 -      255,  255,  255,  255,  255,  255,  255,  255,  338,  343,
25477 -
25478 -      333,  344,  389,   92,  361,  439,  339,   92,  350,   92,
25479 -       92,  340,  340,  352,  362,  363,  301,   92,  437,   92,
25480 -       92,  255,  255,  255,  260,  260,  260,  260,  260,  260,
25481 -      260,  260,  260,  260,  260,  260,  354,  375,  390,   92,
25482 -      376,   92,  364,  377,  355,  369,   92,   92,  152,  356,
25483 -      356,  365,   92,   92,  392,   92,  436,  378,   92,  260,
25484 -      260,  260,  277,  277,  277,  277,  277,  277,  277,  277,
25485 -      277,  277,  277,  277,  379,   92,  399,  401,  400,   92,
25486 -       92,  408,   92,  435,  152,   92,  434,  391,   92,  409,
25487 -      409,   92,  411,   92,  427,  410,  426,  277,  277,  277,
25488 -
25489 -      286,  286,  286,  286,  286,  286,  286,  286,  286,  286,
25490 -      286,  286,  414,  418,   92,   92,  420,  420,  418,  418,
25491 -      425,  415,  421,  422,  422,   92,  429,  419,  424,  152,
25492 -       92,  429,  429,  417,  152,  286,  286,  286,  287,  287,
25493 -      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
25494 -      420,  420,  422,  422,  422,  422,  421,  431,  431,  431,
25495 -      431,  431,  431,  413,  432,  412,  432,  407,  432,  406,
25496 -      404,  403,  402,  287,  287,  287,  288,  288,  288,  288,
25497 -      288,  288,  288,  288,  288,  288,  288,  288,  398,  397,
25498 -      395,  394,  393,  387,  386,  385,  382,  381,  380,  374,
25499 -
25500 -      373,  372,  301,  301,  368,  367,  366,  358,  357,  304,
25501 -      349,  288,  288,  288,  310,  310,  310,  310,  310,  310,
25502 -      310,  310,  310,  310,  310,  310,  348,  301,  301,  301,
25503 -      347,  346,  345,  336,  331,  330,  329,  328,  301,  325,
25504 -      324,  301,  301,  323,  322,  321,  315,  313,  312,  310,
25505 -      310,  310,  316,  316,  316,  316,  316,  316,  316,  316,
25506 -      316,  316,  316,  316,  306,  303,  302,  299,  298,  297,
25507 -      296,  295,  294,  289,  285,  284,  283,  282,  281,  280,
25508 -      279,  271,  268,  267,  266,  265,  264,  316,  316,  316,
25509 -      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
25510 -
25511 -      351,  351,  263,  262,  261,  254,  253,  252,  251,  250,
25512 -      249,  248,  247,  246,  245,  244,  243,  217,  216,  215,
25513 -      214,  213,  212,  211,  210,  351,  351,  351,  359,  359,
25514 -      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
25515 -      209,  208,  207,  206,  205,  180,  179,  178,  177,  176,
25516 -      175,  174,  173,  172,  169,  168,  167,  118,  118,  100,
25517 -      140,   92,   90,  359,  359,  359,  360,  360,  360,  360,
25518 -      360,  360,  360,  360,  360,  360,  360,  360,  139,  444,
25519 -      138,  444,  137,  136,  133,  132,  131,  130,  129,  128,
25520 -      127,  126,  444,  125,  124,  123,  122,  118,  101,  100,
25521 -
25522 -       97,  360,  360,  360,  370,  370,  370,  370,  370,  370,
25523 -      370,  370,  370,  370,  370,  370,   90,   89,   88,   87,
25524 -       81,   80,   79,   78,   77,   66,   64,  444,  444,  444,
25525 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  370,
25526 -      370,  370,  383,  383,  383,  383,  383,  383,  383,  383,
25527 -      383,  383,  383,  383,  444,  444,  444,  444,  444,  444,
25528 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25529 -      444,  444,  444,  444,  444,  444,  444,  383,  383,  383,
25530 -      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
25531 -      430,  430,  444,  444,  444,  444,  444,  444,  444,  444,
25532 -
25533 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25534 -      444,  444,  444,  444,  444,  430,  430,  430,   16,   16,
25535 -       16,   16,   16,   16,   16,   16,   16,   54,   54,   54,
25536 -       54,   54,   54,   54,   54,   54,   60,   60,   60,   60,
25537 -       60,   60,   60,   60,   60,   63,   63,   63,   63,   63,
25538 -       63,   63,   63,   63,   65,   65,   65,   65,   65,   65,
25539 -       65,   65,   65,   67,   67,  444,   67,   83,   83,   83,
25540 -       83,   83,   83,   83,   83,   83,   86,   86,   86,   86,
25541 -       86,   86,   86,   86,   86,   92,   92,   92,   92,   92,
25542 -       92,   92,   92,   92,   99,   99,   99,   99,   99,   99,
25543 -
25544 -       99,  444,   99,  119,  444,  444,  444,  444,  444,  444,
25545 -      119,  120,  120,  444,  120,  444,  120,  120,  120,  120,
25546 -      121,  121,  121,  121,  121,  121,  121,  121,  121,  166,
25547 -      166,  444,  166,  444,  166,  166,  166,  166,  202,  202,
25548 -      444,  202,  444,  202,  202,  202,  202,  242,  242,  444,
25549 -      242,  444,  242,  242,  242,  242,  278,  278,  444,  278,
25550 -      444,  278,  278,  278,  278,  255,  255,  255,  255,  255,
25551 -      444,  444,  255,  311,  311,  444,  311,  444,  311,  311,
25552 -      311,  311,  286,  286,  286,  286,  286,  444,  444,  286,
25553 -      287,  287,  287,  287,  287,  444,  444,  287,  288,  288,
25554 -
25555 -      288,  288,  288,  444,  444,  288,  326,  326,  326,  326,
25556 -      326,  444,  444,  326,  335,  335,  444,  335,  444,  335,
25557 -      335,  335,  335,  316,  316,  316,  316,  316,  444,  444,
25558 -      316,  353,  353,  444,  353,  444,  353,  353,  353,  353,
25559 -      371,  371,  444,  371,  444,  371,  371,  371,  371,  359,
25560 -      359,  359,  359,  359,  444,  444,  359,  360,  360,  360,
25561 -      360,  360,  444,  444,  360,  384,  384,  444,  384,  444,
25562 -      384,  384,  384,  384,  396,  396,  444,  396,  444,  396,
25563 -      396,  396,  396,  405,  405,  444,  405,  444,  405,  405,
25564 -      405,  405,  416,  416,  444,  416,  444,  416,  416,  416,
25565 -
25566 -      416,  423,  423,  444,  444,  444,  423,  444,  423,  428,
25567 -      428,  444,  428,  444,  428,  428,  428,  428,  433,  433,
25568 -      433,  444,  433,  433,  444,  433,  438,  438,  444,  438,
25569 -      444,  438,  438,  438,  438,  430,  430,  430,  430,  430,
25570 -      444,  444,  430,    9,  444,  444,  444,  444,  444,  444,
25571 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25572 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25573 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25574 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25575 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25576 -
25577 -      444,  444,  444,  444,  444,  444
25578 -    } ;
25579 -
25580 -static yyconst flex_int16_t yy_chk[1507] =
25581 -    {   0,
25582 -        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
25583 -        1,    1,    1,    4,    5,    6,    4,    7,    8,   18,
25584 -        0,    5,    6,   13,    7,    8,   25,   25,   26,   26,
25585 -       27,   35,   35,   11,   11,    1,    1,    1,    2,    2,
25586 -        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
25587 -        2,   11,   12,   12,    2,   37,   13,   36,   36,   37,
25588 -       18,   42,   39,   27,   43,   44,   45,   46,   48,  159,
25589 -       12,   39,   96,    2,    2,    2,   52,   52,   95,   52,
25590 -       96,    2,   44,   95,   43,   48,  159,   42,   82,   82,
25591 -       43,   45,   46,    2,    2,    2,    3,    3,    3,    3,
25592 -
25593 -        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
25594 -        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
25595 -        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
25596 -        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
25597 -        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
25598 -        3,    3,    3,    3,    3,    3,    3,    3,   17,   17,
25599 -       47,   17,   49,   50,   51,   60,   69,   58,   58,   75,
25600 -       83,   94,   94,   17,   97,   49,   17,   97,  102,   79,
25601 -       98,  104,  103,   50,   50,   58,   47,   68,   68,   51,
25602 -       68,   98,   49,   50,   79,  103,  105,  443,   60,  106,
25603 -
25604 -       17,  107,   68,   83,  102,   68,  104,   69,  108,  109,
25605 -       75,  110,   17,   17,   17,   33,   33,   33,   33,   33,
25606 -       33,   33,   33,   33,   33,   33,   33,  107,  105,   68,
25607 -      106,  107,  140,  108,  128,  140,  442,  111,  109,  110,
25608 -      112,   68,   68,   68,  114,  233,  233,  115,  113,  128,
25609 -       33,   33,   33,   34,   34,   34,   34,   34,   34,   34,
25610 -       34,   34,   34,   34,   34,  111,  112,  113,  115,  141,
25611 -      116,  116,  114,  116,  144,  142,  115,  142,  144,   34,
25612 -      141,  167,  167,  113,  257,  441,  257,  167,   34,   34,
25613 -       34,  119,  119,  119,  119,  119,  119,  119,  119,  119,
25614 -
25615 -      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
25616 -      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
25617 -      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
25618 -      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
25619 -      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
25620 -      119,  119,  119,  143,  143,  143,  143,  143,  143,  143,
25621 -      143,  143,  143,  143,  143,  153,  149,  151,  182,  318,
25622 -      155,  267,  318,  156,  182,  267,  147,  148,  149,  151,
25623 -      146,  150,  154,  155,  153,  156,  157,  160,  143,  143,
25624 -      143,  145,  145,  145,  145,  145,  145,  145,  145,  145,
25625 -
25626 -      145,  145,  145,  146,  147,  150,  148,  181,  183,  290,
25627 -      185,  440,  154,  290,  157,  187,  158,  161,  160,  181,
25628 -      183,  162,  185,  188,  190,  194,  145,  145,  145,  152,
25629 -      152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
25630 -      152,  158,  162,  161,  193,  187,  195,  199,  198,  194,
25631 -      203,  203,  256,  188,  190,  439,  203,  256,  258,  195,
25632 -      198,  193,  199,  258,  152,  152,  152,  163,  163,  163,
25633 -      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
25634 -      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
25635 -      163,  189,  189,  189,  189,  189,  189,  189,  189,  189,
25636 -
25637 -      189,  189,  189,  196,  197,  201,  200,  218,  220,  219,
25638 -      221,  236,  237,  437,  239,  240,  235,  221,  238,  218,
25639 -      220,  197,  219,  270,  201,  236,  189,  189,  189,  192,
25640 -      192,  200,  235,  196,  238,  237,  259,  236,  272,  270,
25641 -      273,  259,  192,  192,  239,  240,  274,  291,  192,  307,
25642 -      272,  275,  284,  284,  273,  293,  292,  301,  301,  291,
25643 -      292,  309,  314,  314,  436,  293,  273,  274,  192,  192,
25644 -      192,  308,  275,  317,  309,  192,  307,  192,  332,  375,
25645 -      314,  317,  375,  192,  334,  192,  217,  217,  217,  217,
25646 -      217,  217,  217,  217,  217,  217,  217,  217,  315,  319,
25647 -
25648 -      308,  320,  376,  376,  341,  435,  315,  319,  332,  341,
25649 -      320,  315,  315,  334,  342,  343,  434,  350,  427,  342,
25650 -      343,  217,  217,  217,  222,  222,  222,  222,  222,  222,
25651 -      222,  222,  222,  222,  222,  222,  336,  361,  377,  344,
25652 -      362,  377,  344,  363,  336,  350,  361,  362,  388,  336,
25653 -      336,  344,  363,  364,  379,  379,  426,  364,  388,  222,
25654 -      222,  222,  241,  241,  241,  241,  241,  241,  241,  241,
25655 -      241,  241,  241,  241,  365,  378,  389,  391,  390,  365,
25656 -      392,  399,  391,  425,  392,  389,  424,  378,  390,  400,
25657 -      400,  399,  401,  401,  415,  400,  414,  241,  241,  241,
25658 -
25659 -      251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
25660 -      251,  251,  404,  407,  400,  408,  409,  409,  407,  407,
25661 -      413,  404,  409,  410,  410,  411,  417,  408,  412,  411,
25662 -      419,  417,  417,  406,  419,  251,  251,  251,  252,  252,
25663 -      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
25664 -      420,  420,  421,  421,  422,  422,  420,  423,  423,  431,
25665 -      431,  433,  433,  403,  423,  402,  431,  398,  433,  397,
25666 -      395,  394,  393,  252,  252,  252,  253,  253,  253,  253,
25667 -      253,  253,  253,  253,  253,  253,  253,  253,  387,  385,
25668 -      382,  381,  380,  374,  373,  372,  368,  367,  366,  358,
25669 -
25670 -      357,  354,  349,  348,  347,  346,  345,  338,  337,  331,
25671 -      330,  253,  253,  253,  276,  276,  276,  276,  276,  276,
25672 -      276,  276,  276,  276,  276,  276,  329,  328,  325,  324,
25673 -      323,  322,  321,  312,  306,  305,  304,  303,  302,  300,
25674 -      299,  298,  297,  296,  295,  294,  285,  283,  279,  276,
25675 -      276,  276,  289,  289,  289,  289,  289,  289,  289,  289,
25676 -      289,  289,  289,  289,  271,  269,  268,  266,  265,  264,
25677 -      263,  262,  261,  254,  250,  249,  247,  246,  245,  244,
25678 -      243,  234,  232,  231,  230,  229,  228,  289,  289,  289,
25679 -      333,  333,  333,  333,  333,  333,  333,  333,  333,  333,
25680 -
25681 -      333,  333,  227,  226,  225,  216,  215,  214,  213,  212,
25682 -      211,  210,  209,  208,  207,  206,  205,  180,  179,  178,
25683 -      177,  176,  175,  174,  173,  333,  333,  333,  339,  339,
25684 -      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
25685 -      172,  171,  170,  169,  168,  137,  136,  135,  134,  133,
25686 -      132,  131,  130,  129,  127,  126,  124,  118,  117,   99,
25687 -       93,   92,   90,  339,  339,  339,  340,  340,  340,  340,
25688 -      340,  340,  340,  340,  340,  340,  340,  340,   88,   87,
25689 -       86,   85,   81,   80,   78,   77,   76,   74,   73,   72,
25690 -       71,   70,   64,   63,   59,   57,   56,   53,   41,   40,
25691 -
25692 -       38,  340,  340,  340,  352,  352,  352,  352,  352,  352,
25693 -      352,  352,  352,  352,  352,  352,   32,   31,   30,   29,
25694 -       23,   22,   21,   20,   19,   15,   14,    9,    0,    0,
25695 -        0,    0,    0,    0,    0,    0,    0,    0,    0,  352,
25696 -      352,  352,  369,  369,  369,  369,  369,  369,  369,  369,
25697 -      369,  369,  369,  369,    0,    0,    0,    0,    0,    0,
25698 -        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
25699 -        0,    0,    0,    0,    0,    0,    0,  369,  369,  369,
25700 -      418,  418,  418,  418,  418,  418,  418,  418,  418,  418,
25701 -      418,  418,    0,    0,    0,    0,    0,    0,    0,    0,
25702 -
25703 -        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
25704 -        0,    0,    0,    0,    0,  418,  418,  418,  445,  445,
25705 -      445,  445,  445,  445,  445,  445,  445,  446,  446,  446,
25706 -      446,  446,  446,  446,  446,  446,  447,  447,  447,  447,
25707 -      447,  447,  447,  447,  447,  448,  448,  448,  448,  448,
25708 -      448,  448,  448,  448,  449,  449,  449,  449,  449,  449,
25709 -      449,  449,  449,  450,  450,    0,  450,  451,  451,  451,
25710 -      451,  451,  451,  451,  451,  451,  452,  452,  452,  452,
25711 -      452,  452,  452,  452,  452,  453,  453,  453,  453,  453,
25712 -      453,  453,  453,  453,  454,  454,  454,  454,  454,  454,
25713 -
25714 -      454,    0,  454,  455,    0,    0,    0,    0,    0,    0,
25715 -      455,  456,  456,    0,  456,    0,  456,  456,  456,  456,
25716 -      457,  457,  457,  457,  457,  457,  457,  457,  457,  458,
25717 -      458,    0,  458,    0,  458,  458,  458,  458,  459,  459,
25718 -        0,  459,    0,  459,  459,  459,  459,  460,  460,    0,
25719 -      460,    0,  460,  460,  460,  460,  461,  461,    0,  461,
25720 -        0,  461,  461,  461,  461,  462,  462,  462,  462,  462,
25721 -        0,    0,  462,  463,  463,    0,  463,    0,  463,  463,
25722 -      463,  463,  464,  464,  464,  464,  464,    0,    0,  464,
25723 -      465,  465,  465,  465,  465,    0,    0,  465,  466,  466,
25724 -
25725 -      466,  466,  466,    0,    0,  466,  467,  467,  467,  467,
25726 -      467,    0,    0,  467,  468,  468,    0,  468,    0,  468,
25727 -      468,  468,  468,  469,  469,  469,  469,  469,    0,    0,
25728 -      469,  470,  470,    0,  470,    0,  470,  470,  470,  470,
25729 -      471,  471,    0,  471,    0,  471,  471,  471,  471,  472,
25730 -      472,  472,  472,  472,    0,    0,  472,  473,  473,  473,
25731 -      473,  473,    0,    0,  473,  474,  474,    0,  474,    0,
25732 -      474,  474,  474,  474,  475,  475,    0,  475,    0,  475,
25733 -      475,  475,  475,  476,  476,    0,  476,    0,  476,  476,
25734 -      476,  476,  477,  477,    0,  477,    0,  477,  477,  477,
25735 -
25736 -      477,  478,  478,    0,    0,    0,  478,    0,  478,  479,
25737 -      479,    0,  479,    0,  479,  479,  479,  479,  480,  480,
25738 -      480,    0,  480,  480,    0,  480,  481,  481,    0,  481,
25739 -        0,  481,  481,  481,  481,  482,  482,  482,  482,  482,
25740 -        0,    0,  482,  444,  444,  444,  444,  444,  444,  444,
25741 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25742 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25743 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25744 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25745 -      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
25746 -
25747 -      444,  444,  444,  444,  444,  444
25748 -    } ;
25749 -
25750 -static yy_state_type yy_last_accepting_state;
25751 -static char *yy_last_accepting_cpos;
25752 -
25753 -extern int yy_flex_debug;
25754 -int yy_flex_debug = 0;
25755 -
25756 -/* The intent behind this definition is that it'll catch
25757 - * any uses of REJECT which flex missed.
25758 - */
25759 -#define REJECT reject_used_but_not_detected
25760 -#define yymore() yymore_used_but_not_detected
25761 -#define YY_MORE_ADJ 0
25762 -#define YY_RESTORE_YY_MORE_OFFSET
25763 -char *yytext;
25764 -#line 1 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
25765 -/* -*- indented-text -*- */
25766 -/* Process source files and output type information.
25767 -   Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009
25768 -   Free Software Foundation, Inc.
25769 -
25770 -This file is part of GCC.
25771 -
25772 -GCC is free software; you can redistribute it and/or modify it under
25773 -the terms of the GNU General Public License as published by the Free
25774 -Software Foundation; either version 3, or (at your option) any later
25775 -version.
25776 -
25777 -GCC is distributed in the hope that it will be useful, but WITHOUT ANY
25778 -WARRANTY; without even the implied warranty of MERCHANTABILITY or
25779 -FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
25780 -for more details.
25781 -
25782 -You should have received a copy of the GNU General Public License
25783 -along with GCC; see the file COPYING3.  If not see
25784 -<http://www.gnu.org/licenses/>.  */
25785 -#line 23 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
25786 -#include "bconfig.h"
25787 -#include "system.h"
25788 -
25789 -#define malloc xmalloc
25790 -#define realloc xrealloc
25791 -
25792 -#include "gengtype.h"
25793 -
25794 -#define YY_NO_INPUT
25795 -#define YY_DECL int yylex (const char **yylval)
25796 -#define yyterminate() return EOF_TOKEN
25797 -
25798 -struct fileloc lexer_line;
25799 -int lexer_toplevel_done;
25800 -
25801 -static void 
25802 -update_lineno (const char *l, size_t len)
25803 -{
25804 -  while (len-- > 0)
25805 -    if (*l++ == '\n')
25806 -      lexer_line.line++;
25807 -}
25808 -
25809 -
25810 -#line 986 "gengtype-lex.c"
25811 -
25812 -#define INITIAL 0
25813 -#define in_struct 1
25814 -#define in_struct_comment 2
25815 -#define in_comment 3
25816 -
25817 -#ifndef YY_NO_UNISTD_H
25818 -/* Special case for "unistd.h", since it is non-ANSI. We include it way
25819 - * down here because we want the user's section 1 to have been scanned first.
25820 - * The user has a chance to override it with an option.
25821 - */
25822 -#include <unistd.h>
25823 -#endif
25824 -
25825 -#ifndef YY_EXTRA_TYPE
25826 -#define YY_EXTRA_TYPE void *
25827 -#endif
25828 -
25829 -static int yy_init_globals (void );
25830 -
25831 -/* Accessor methods to globals.
25832 -   These are made visible to non-reentrant scanners for convenience. */
25833 -
25834 -int yylex_destroy (void );
25835 -
25836 -int yyget_debug (void );
25837 -
25838 -void yyset_debug (int debug_flag  );
25839 -
25840 -YY_EXTRA_TYPE yyget_extra (void );
25841 -
25842 -void yyset_extra (YY_EXTRA_TYPE user_defined  );
25843 -
25844 -FILE *yyget_in (void );
25845 -
25846 -void yyset_in  (FILE * in_str  );
25847 -
25848 -FILE *yyget_out (void );
25849 -
25850 -void yyset_out  (FILE * out_str  );
25851 -
25852 -int yyget_leng (void );
25853 -
25854 -char *yyget_text (void );
25855 -
25856 -int yyget_lineno (void );
25857 -
25858 -void yyset_lineno (int line_number  );
25859 -
25860 -/* Macros after this point can all be overridden by user definitions in
25861 - * section 1.
25862 - */
25863 -
25864 -#ifndef YY_SKIP_YYWRAP
25865 -#ifdef __cplusplus
25866 -extern "C" int yywrap (void );
25867 -#else
25868 -extern int yywrap (void );
25869 -#endif
25870 -#endif
25871 -
25872 -#ifndef yytext_ptr
25873 -static void yy_flex_strncpy (char *,yyconst char *,int );
25874 -#endif
25875 -
25876 -#ifdef YY_NEED_STRLEN
25877 -static int yy_flex_strlen (yyconst char * );
25878 -#endif
25879 -
25880 -#ifndef YY_NO_INPUT
25881 -
25882 -#ifdef __cplusplus
25883 -static int yyinput (void );
25884 -#else
25885 -static int input (void );
25886 -#endif
25887 -
25888 -#endif
25889 -
25890 -/* Amount of stuff to slurp up with each read. */
25891 -#ifndef YY_READ_BUF_SIZE
25892 -#define YY_READ_BUF_SIZE 8192
25893 -#endif
25894 -
25895 -/* Copy whatever the last rule matched to the standard output. */
25896 -#ifndef ECHO
25897 -/* This used to be an fputs(), but since the string might contain NUL's,
25898 - * we now use fwrite().
25899 - */
25900 -#define ECHO fwrite( yytext, yyleng, 1, yyout )
25901 -#endif
25902 -
25903 -/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
25904 - * is returned in "result".
25905 - */
25906 -#ifndef YY_INPUT
25907 -#define YY_INPUT(buf,result,max_size) \
25908 -       if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
25909 -               { \
25910 -               int c = '*'; \
25911 -               unsigned n; \
25912 -               for ( n = 0; n < max_size && \
25913 -                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
25914 -                       buf[n] = (char) c; \
25915 -               if ( c == '\n' ) \
25916 -                       buf[n++] = (char) c; \
25917 -               if ( c == EOF && ferror( yyin ) ) \
25918 -                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
25919 -               result = n; \
25920 -               } \
25921 -       else \
25922 -               { \
25923 -               errno=0; \
25924 -               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
25925 -                       { \
25926 -                       if( errno != EINTR) \
25927 -                               { \
25928 -                               YY_FATAL_ERROR( "input in flex scanner failed" ); \
25929 -                               break; \
25930 -                               } \
25931 -                       errno=0; \
25932 -                       clearerr(yyin); \
25933 -                       } \
25934 -               }\
25935 -\
25936 -
25937 -#endif
25938 -
25939 -/* No semi-colon after return; correct usage is to write "yyterminate();" -
25940 - * we don't want an extra ';' after the "return" because that will cause
25941 - * some compilers to complain about unreachable statements.
25942 - */
25943 -#ifndef yyterminate
25944 -#define yyterminate() return YY_NULL
25945 -#endif
25946 -
25947 -/* Number of entries by which start-condition stack grows. */
25948 -#ifndef YY_START_STACK_INCR
25949 -#define YY_START_STACK_INCR 25
25950 -#endif
25951 -
25952 -/* Report a fatal error. */
25953 -#ifndef YY_FATAL_ERROR
25954 -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
25955 -#endif
25956 -
25957 -/* end tables serialization structures and prototypes */
25958 -
25959 -/* Default declaration of generated scanner - a define so the user can
25960 - * easily add parameters.
25961 - */
25962 -#ifndef YY_DECL
25963 -#define YY_DECL_IS_OURS 1
25964 -
25965 -extern int yylex (void);
25966 -
25967 -#define YY_DECL int yylex (void)
25968 -#endif /* !YY_DECL */
25969 -
25970 -/* Code executed at the beginning of each rule, after yytext and yyleng
25971 - * have been set up.
25972 - */
25973 -#ifndef YY_USER_ACTION
25974 -#define YY_USER_ACTION
25975 -#endif
25976 -
25977 -/* Code executed at the end of each rule. */
25978 -#ifndef YY_BREAK
25979 -#define YY_BREAK break;
25980 -#endif
25981 -
25982 -#define YY_RULE_SETUP \
25983 -       if ( yyleng > 0 ) \
25984 -               YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
25985 -                               (yytext[yyleng - 1] == '\n'); \
25986 -       YY_USER_ACTION
25987 -
25988 -/** The main scanner function which does all the work.
25989 - */
25990 -YY_DECL
25991 -{
25992 -       register yy_state_type yy_current_state;
25993 -       register char *yy_cp, *yy_bp;
25994 -       register int yy_act;
25995 -    
25996 -#line 58 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
25997 -
25998 -  /* Do this on entry to yylex():  */
25999 -  *yylval = 0;
26000 -  if (lexer_toplevel_done)
26001 -    {
26002 -      BEGIN(INITIAL);
26003 -      lexer_toplevel_done = 0;
26004 -    }
26005 -
26006 -  /* Things we look for in skipping mode: */
26007 -#line 1183 "gengtype-lex.c"
26008 -
26009 -       if ( !(yy_init) )
26010 -               {
26011 -               (yy_init) = 1;
26012 -
26013 -#ifdef YY_USER_INIT
26014 -               YY_USER_INIT;
26015 -#endif
26016 -
26017 -               if ( ! (yy_start) )
26018 -                       (yy_start) = 1; /* first start state */
26019 -
26020 -               if ( ! yyin )
26021 -                       yyin = stdin;
26022 -
26023 -               if ( ! yyout )
26024 -                       yyout = stdout;
26025 -
26026 -               if ( ! YY_CURRENT_BUFFER ) {
26027 -                       yyensure_buffer_stack ();
26028 -                       YY_CURRENT_BUFFER_LVALUE =
26029 -                               yy_create_buffer(yyin,YY_BUF_SIZE );
26030 -               }
26031 -
26032 -               yy_load_buffer_state( );
26033 -               }
26034 -
26035 -       while ( 1 )             /* loops until end-of-file is reached */
26036 -               {
26037 -               yy_cp = (yy_c_buf_p);
26038 -
26039 -               /* Support of yytext. */
26040 -               *yy_cp = (yy_hold_char);
26041 -
26042 -               /* yy_bp points to the position in yy_ch_buf of the start of
26043 -                * the current run.
26044 -                */
26045 -               yy_bp = yy_cp;
26046 -
26047 -               yy_current_state = (yy_start);
26048 -               yy_current_state += YY_AT_BOL();
26049 -yy_match:
26050 -               do
26051 -                       {
26052 -                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
26053 -                       if ( yy_accept[yy_current_state] )
26054 -                               {
26055 -                               (yy_last_accepting_state) = yy_current_state;
26056 -                               (yy_last_accepting_cpos) = yy_cp;
26057 -                               }
26058 -                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
26059 -                               {
26060 -                               yy_current_state = (int) yy_def[yy_current_state];
26061 -                               if ( yy_current_state >= 445 )
26062 -                                       yy_c = yy_meta[(unsigned int) yy_c];
26063 -                               }
26064 -                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
26065 -                       ++yy_cp;
26066 -                       }
26067 -               while ( yy_current_state != 444 );
26068 -               yy_cp = (yy_last_accepting_cpos);
26069 -               yy_current_state = (yy_last_accepting_state);
26070 -
26071 -yy_find_action:
26072 -               yy_act = yy_accept[yy_current_state];
26073 -
26074 -               YY_DO_BEFORE_ACTION;
26075 -
26076 -do_action:     /* This label is used only to access EOF actions. */
26077 -
26078 -               switch ( yy_act )
26079 -       { /* beginning of action switch */
26080 -                       case 0: /* must back up */
26081 -                       /* undo the effects of YY_DO_BEFORE_ACTION */
26082 -                       *yy_cp = (yy_hold_char);
26083 -                       yy_cp = (yy_last_accepting_cpos);
26084 -                       yy_current_state = (yy_last_accepting_state);
26085 -                       goto yy_find_action;
26086 -
26087 -case 1:
26088 -/* rule 1 can match eol */
26089 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26090 -(yy_c_buf_p) = yy_cp -= 1;
26091 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26092 -YY_RULE_SETUP
26093 -#line 69 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26094 -{
26095 -  BEGIN(in_struct);
26096 -  return TYPEDEF;
26097 -}
26098 -       YY_BREAK
26099 -case 2:
26100 -/* rule 2 can match eol */
26101 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26102 -(yy_c_buf_p) = yy_cp -= 1;
26103 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26104 -YY_RULE_SETUP
26105 -#line 73 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26106 -{
26107 -  BEGIN(in_struct);
26108 -  return STRUCT;
26109 -}
26110 -       YY_BREAK
26111 -case 3:
26112 -/* rule 3 can match eol */
26113 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26114 -(yy_c_buf_p) = yy_cp -= 1;
26115 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26116 -YY_RULE_SETUP
26117 -#line 77 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26118 -{
26119 -  BEGIN(in_struct);
26120 -  return UNION;
26121 -}
26122 -       YY_BREAK
26123 -case 4:
26124 -/* rule 4 can match eol */
26125 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26126 -(yy_c_buf_p) = yy_cp -= 1;
26127 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26128 -YY_RULE_SETUP
26129 -#line 81 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26130 -{
26131 -  BEGIN(in_struct);
26132 -  return EXTERN;
26133 -}
26134 -       YY_BREAK
26135 -case 5:
26136 -/* rule 5 can match eol */
26137 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26138 -(yy_c_buf_p) = yy_cp -= 1;
26139 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26140 -YY_RULE_SETUP
26141 -#line 85 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26142 -{
26143 -  BEGIN(in_struct);
26144 -  return STATIC;
26145 -}
26146 -       YY_BREAK
26147 -case 6:
26148 -/* rule 6 can match eol */
26149 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26150 -(yy_c_buf_p) = yy_cp -= 1;
26151 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26152 -YY_RULE_SETUP
26153 -#line 90 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26154 -{
26155 -  BEGIN(in_struct);
26156 -  return DEFVEC_OP;
26157 -}
26158 -       YY_BREAK
26159 -case 7:
26160 -/* rule 7 can match eol */
26161 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26162 -(yy_c_buf_p) = yy_cp -= 1;
26163 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26164 -YY_RULE_SETUP
26165 -#line 94 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26166 -{
26167 -  BEGIN(in_struct);
26168 -  return DEFVEC_I;
26169 -}
26170 -       YY_BREAK
26171 -case 8:
26172 -/* rule 8 can match eol */
26173 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26174 -(yy_c_buf_p) = yy_cp -= 1;
26175 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26176 -YY_RULE_SETUP
26177 -#line 98 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26178 -{
26179 -  BEGIN(in_struct);
26180 -  return DEFVEC_ALLOC;
26181 -}
26182 -       YY_BREAK
26183 -
26184 -
26185 -case 9:
26186 -YY_RULE_SETUP
26187 -#line 106 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26188 -{ BEGIN(in_struct_comment); }
26189 -       YY_BREAK
26190 -case 10:
26191 -/* rule 10 can match eol */
26192 -YY_RULE_SETUP
26193 -#line 108 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26194 -{ update_lineno (yytext, yyleng); }
26195 -       YY_BREAK
26196 -case 11:
26197 -/* rule 11 can match eol */
26198 -YY_RULE_SETUP
26199 -#line 109 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26200 -{ lexer_line.line++; }
26201 -       YY_BREAK
26202 -case 12:
26203 -/* rule 12 can match eol */
26204 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26205 -(yy_c_buf_p) = yy_cp = yy_bp + 5;
26206 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26207 -YY_RULE_SETUP
26208 -#line 111 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26209 -/* don't care */
26210 -       YY_BREAK
26211 -case 13:
26212 -/* rule 13 can match eol */
26213 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26214 -(yy_c_buf_p) = yy_cp = yy_bp + 3;
26215 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26216 -YY_RULE_SETUP
26217 -#line 112 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26218 -{ return GTY_TOKEN; }
26219 -       YY_BREAK
26220 -case 14:
26221 -/* rule 14 can match eol */
26222 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26223 -(yy_c_buf_p) = yy_cp = yy_bp + 3;
26224 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26225 -YY_RULE_SETUP
26226 -#line 113 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26227 -{ return VEC_TOKEN; }
26228 -       YY_BREAK
26229 -case 15:
26230 -/* rule 15 can match eol */
26231 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26232 -(yy_c_buf_p) = yy_cp = yy_bp + 5;
26233 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26234 -YY_RULE_SETUP
26235 -#line 114 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26236 -{ return UNION; }
26237 -       YY_BREAK
26238 -case 16:
26239 -/* rule 16 can match eol */
26240 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26241 -(yy_c_buf_p) = yy_cp = yy_bp + 6;
26242 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26243 -YY_RULE_SETUP
26244 -#line 115 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26245 -{ return STRUCT; }
26246 -       YY_BREAK
26247 -case 17:
26248 -/* rule 17 can match eol */
26249 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26250 -(yy_c_buf_p) = yy_cp = yy_bp + 4;
26251 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26252 -YY_RULE_SETUP
26253 -#line 116 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26254 -{ return ENUM; }
26255 -       YY_BREAK
26256 -case 18:
26257 -/* rule 18 can match eol */
26258 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26259 -(yy_c_buf_p) = yy_cp = yy_bp + 9;
26260 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26261 -YY_RULE_SETUP
26262 -#line 117 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26263 -{ return PTR_ALIAS; }
26264 -       YY_BREAK
26265 -case 19:
26266 -/* rule 19 can match eol */
26267 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26268 -(yy_c_buf_p) = yy_cp = yy_bp + 10;
26269 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26270 -YY_RULE_SETUP
26271 -#line 118 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26272 -{ return NESTED_PTR; }
26273 -       YY_BREAK
26274 -case 20:
26275 -YY_RULE_SETUP
26276 -#line 119 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26277 -{ return NUM; }
26278 -       YY_BREAK
26279 -case 21:
26280 -/* rule 21 can match eol */
26281 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26282 -(yy_c_buf_p) = yy_cp -= 1;
26283 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26284 -YY_RULE_SETUP
26285 -#line 120 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26286 -{
26287 -  *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
26288 -  return PARAM_IS;
26289 -}
26290 -       YY_BREAK
26291 -case 22:
26292 -/* rule 22 can match eol */
26293 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26294 -(yy_c_buf_p) = yy_cp -= 1;
26295 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26296 -#line 126 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26297 -case 23:
26298 -/* rule 23 can match eol */
26299 -YY_RULE_SETUP
26300 -#line 126 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26301 -{
26302 -  size_t len;
26303 -
26304 -  for (len = yyleng; ISSPACE (yytext[len-1]); len--)
26305 -    ;
26306 -
26307 -  *yylval = XDUPVAR (const char, yytext, len, len+1);
26308 -  update_lineno (yytext, yyleng);
26309 -  return SCALAR;
26310 -}
26311 -       YY_BREAK
26312 -case 24:
26313 -/* rule 24 can match eol */
26314 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26315 -(yy_c_buf_p) = yy_cp -= 1;
26316 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26317 -YY_RULE_SETUP
26318 -#line 138 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26319 -{
26320 -  *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
26321 -  return ID;
26322 -}
26323 -       YY_BREAK
26324 -case 25:
26325 -/* rule 25 can match eol */
26326 -YY_RULE_SETUP
26327 -#line 143 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26328 -{
26329 -  *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
26330 -  return STRING;
26331 -}
26332 -       YY_BREAK
26333 -/* This "terminal" avoids having to parse integer constant expressions.  */
26334 -case 26:
26335 -/* rule 26 can match eol */
26336 -YY_RULE_SETUP
26337 -#line 148 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26338 -{
26339 -  *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
26340 -  return ARRAY;
26341 -}
26342 -       YY_BREAK
26343 -case 27:
26344 -/* rule 27 can match eol */
26345 -YY_RULE_SETUP
26346 -#line 152 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26347 -{
26348 -  *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng);
26349 -  return CHAR;
26350 -}
26351 -       YY_BREAK
26352 -case 28:
26353 -YY_RULE_SETUP
26354 -#line 157 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26355 -{ return ELLIPSIS; }
26356 -       YY_BREAK
26357 -case 29:
26358 -YY_RULE_SETUP
26359 -#line 158 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26360 -{ return yytext[0]; }
26361 -       YY_BREAK
26362 -/* ignore pp-directives */
26363 -case 30:
26364 -/* rule 30 can match eol */
26365 -YY_RULE_SETUP
26366 -#line 161 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26367 -{lexer_line.line++;}
26368 -       YY_BREAK
26369 -case 31:
26370 -YY_RULE_SETUP
26371 -#line 163 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26372 -{
26373 -  error_at_line (&lexer_line, "unexpected character `%s'", yytext);
26374 -}
26375 -       YY_BREAK
26376 -
26377 -case 32:
26378 -YY_RULE_SETUP
26379 -#line 168 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26380 -{ BEGIN(in_comment); }
26381 -       YY_BREAK
26382 -case 33:
26383 -/* rule 33 can match eol */
26384 -YY_RULE_SETUP
26385 -#line 169 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26386 -{ lexer_line.line++; }
26387 -       YY_BREAK
26388 -case 34:
26389 -#line 171 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26390 -case 35:
26391 -/* rule 35 can match eol */
26392 -#line 172 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26393 -case 36:
26394 -/* rule 36 can match eol */
26395 -YY_RULE_SETUP
26396 -#line 172 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26397 -/* do nothing */
26398 -       YY_BREAK
26399 -case 37:
26400 -/* rule 37 can match eol */
26401 -YY_RULE_SETUP
26402 -#line 173 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26403 -{ update_lineno (yytext, yyleng); }
26404 -       YY_BREAK
26405 -case 38:
26406 -/* rule 38 can match eol */
26407 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26408 -(yy_c_buf_p) = yy_cp = yy_bp + 1;
26409 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26410 -YY_RULE_SETUP
26411 -#line 174 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26412 -/* do nothing */
26413 -       YY_BREAK
26414 -
26415 -case 39:
26416 -/* rule 39 can match eol */
26417 -YY_RULE_SETUP
26418 -#line 177 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26419 -{ lexer_line.line++; }
26420 -       YY_BREAK
26421 -case 40:
26422 -#line 179 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26423 -case 41:
26424 -YY_RULE_SETUP
26425 -#line 179 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26426 -/* do nothing */
26427 -       YY_BREAK
26428 -case 42:
26429 -/* rule 42 can match eol */
26430 -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
26431 -(yy_c_buf_p) = yy_cp = yy_bp + 1;
26432 -YY_DO_BEFORE_ACTION; /* set up yytext again */
26433 -YY_RULE_SETUP
26434 -#line 180 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26435 -/* do nothing */
26436 -       YY_BREAK
26437 -
26438 -case 43:
26439 -YY_RULE_SETUP
26440 -#line 182 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26441 -{ BEGIN(INITIAL); } 
26442 -       YY_BREAK
26443 -case 44:
26444 -YY_RULE_SETUP
26445 -#line 183 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26446 -{ BEGIN(in_struct); }
26447 -       YY_BREAK
26448 -case 45:
26449 -#line 186 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26450 -case 46:
26451 -YY_RULE_SETUP
26452 -#line 186 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26453 -{
26454 -  error_at_line (&lexer_line, 
26455 -                "unterminated comment or string; unexpected EOF");
26456 -}
26457 -       YY_BREAK
26458 -case 47:
26459 -/* rule 47 can match eol */
26460 -YY_RULE_SETUP
26461 -#line 191 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26462 -/* do nothing */
26463 -       YY_BREAK
26464 -case 48:
26465 -/* rule 48 can match eol */
26466 -YY_RULE_SETUP
26467 -#line 192 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26468 -{
26469 -  error_at_line (&lexer_line, "stray GTY marker");
26470 -}
26471 -       YY_BREAK
26472 -case 49:
26473 -YY_RULE_SETUP
26474 -#line 196 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
26475 -YY_FATAL_ERROR( "flex scanner jammed" );
26476 -       YY_BREAK
26477 -#line 1653 "gengtype-lex.c"
26478 -case YY_STATE_EOF(INITIAL):
26479 -case YY_STATE_EOF(in_struct):
26480 -case YY_STATE_EOF(in_struct_comment):
26481 -case YY_STATE_EOF(in_comment):
26482 -       yyterminate();
26483 -
26484 -       case YY_END_OF_BUFFER:
26485 -               {
26486 -               /* Amount of text matched not including the EOB char. */
26487 -               int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
26488 -
26489 -               /* Undo the effects of YY_DO_BEFORE_ACTION. */
26490 -               *yy_cp = (yy_hold_char);
26491 -               YY_RESTORE_YY_MORE_OFFSET
26492 -
26493 -               if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
26494 -                       {
26495 -                       /* We're scanning a new file or input source.  It's
26496 -                        * possible that this happened because the user
26497 -                        * just pointed yyin at a new source and called
26498 -                        * yylex().  If so, then we have to assure
26499 -                        * consistency between YY_CURRENT_BUFFER and our
26500 -                        * globals.  Here is the right place to do so, because
26501 -                        * this is the first action (other than possibly a
26502 -                        * back-up) that will match for the new input source.
26503 -                        */
26504 -                       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
26505 -                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
26506 -                       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
26507 -                       }
26508 -
26509 -               /* Note that here we test for yy_c_buf_p "<=" to the position
26510 -                * of the first EOB in the buffer, since yy_c_buf_p will
26511 -                * already have been incremented past the NUL character
26512 -                * (since all states make transitions on EOB to the
26513 -                * end-of-buffer state).  Contrast this with the test
26514 -                * in input().
26515 -                */
26516 -               if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
26517 -                       { /* This was really a NUL. */
26518 -                       yy_state_type yy_next_state;
26519 -
26520 -                       (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
26521 -
26522 -                       yy_current_state = yy_get_previous_state(  );
26523 -
26524 -                       /* Okay, we're now positioned to make the NUL
26525 -                        * transition.  We couldn't have
26526 -                        * yy_get_previous_state() go ahead and do it
26527 -                        * for us because it doesn't know how to deal
26528 -                        * with the possibility of jamming (and we don't
26529 -                        * want to build jamming into it because then it
26530 -                        * will run more slowly).
26531 -                        */
26532 -
26533 -                       yy_next_state = yy_try_NUL_trans( yy_current_state );
26534 -
26535 -                       yy_bp = (yytext_ptr) + YY_MORE_ADJ;
26536 -
26537 -                       if ( yy_next_state )
26538 -                               {
26539 -                               /* Consume the NUL. */
26540 -                               yy_cp = ++(yy_c_buf_p);
26541 -                               yy_current_state = yy_next_state;
26542 -                               goto yy_match;
26543 -                               }
26544 -
26545 -                       else
26546 -                               {
26547 -                               yy_cp = (yy_last_accepting_cpos);
26548 -                               yy_current_state = (yy_last_accepting_state);
26549 -                               goto yy_find_action;
26550 -                               }
26551 -                       }
26552 -
26553 -               else switch ( yy_get_next_buffer(  ) )
26554 -                       {
26555 -                       case EOB_ACT_END_OF_FILE:
26556 -                               {
26557 -                               (yy_did_buffer_switch_on_eof) = 0;
26558 -
26559 -                               if ( yywrap( ) )
26560 -                                       {
26561 -                                       /* Note: because we've taken care in
26562 -                                        * yy_get_next_buffer() to have set up
26563 -                                        * yytext, we can now set up
26564 -                                        * yy_c_buf_p so that if some total
26565 -                                        * hoser (like flex itself) wants to
26566 -                                        * call the scanner after we return the
26567 -                                        * YY_NULL, it'll still work - another
26568 -                                        * YY_NULL will get returned.
26569 -                                        */
26570 -                                       (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
26571 -
26572 -                                       yy_act = YY_STATE_EOF(YY_START);
26573 -                                       goto do_action;
26574 -                                       }
26575 -
26576 -                               else
26577 -                                       {
26578 -                                       if ( ! (yy_did_buffer_switch_on_eof) )
26579 -                                               YY_NEW_FILE;
26580 -                                       }
26581 -                               break;
26582 -                               }
26583 -
26584 -                       case EOB_ACT_CONTINUE_SCAN:
26585 -                               (yy_c_buf_p) =
26586 -                                       (yytext_ptr) + yy_amount_of_matched_text;
26587 -
26588 -                               yy_current_state = yy_get_previous_state(  );
26589 -
26590 -                               yy_cp = (yy_c_buf_p);
26591 -                               yy_bp = (yytext_ptr) + YY_MORE_ADJ;
26592 -                               goto yy_match;
26593 -
26594 -                       case EOB_ACT_LAST_MATCH:
26595 -                               (yy_c_buf_p) =
26596 -                               &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
26597 -
26598 -                               yy_current_state = yy_get_previous_state(  );
26599 -
26600 -                               yy_cp = (yy_c_buf_p);
26601 -                               yy_bp = (yytext_ptr) + YY_MORE_ADJ;
26602 -                               goto yy_find_action;
26603 -                       }
26604 -               break;
26605 -               }
26606 -
26607 -       default:
26608 -               YY_FATAL_ERROR(
26609 -                       "fatal flex scanner internal error--no action found" );
26610 -       } /* end of action switch */
26611 -               } /* end of scanning one token */
26612 -} /* end of yylex */
26613 -
26614 -/* yy_get_next_buffer - try to read in a new buffer
26615 - *
26616 - * Returns a code representing an action:
26617 - *     EOB_ACT_LAST_MATCH -
26618 - *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
26619 - *     EOB_ACT_END_OF_FILE - end of file
26620 - */
26621 -static int yy_get_next_buffer (void)
26622 -{
26623 -       register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
26624 -       register char *source = (yytext_ptr);
26625 -       register int number_to_move, i;
26626 -       int ret_val;
26627 -
26628 -       if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
26629 -               YY_FATAL_ERROR(
26630 -               "fatal flex scanner internal error--end of buffer missed" );
26631 -
26632 -       if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
26633 -               { /* Don't try to fill the buffer, so this is an EOF. */
26634 -               if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
26635 -                       {
26636 -                       /* We matched a single character, the EOB, so
26637 -                        * treat this as a final EOF.
26638 -                        */
26639 -                       return EOB_ACT_END_OF_FILE;
26640 -                       }
26641 -
26642 -               else
26643 -                       {
26644 -                       /* We matched some text prior to the EOB, first
26645 -                        * process it.
26646 -                        */
26647 -                       return EOB_ACT_LAST_MATCH;
26648 -                       }
26649 -               }
26650 -
26651 -       /* Try to read more data. */
26652 -
26653 -       /* First move last chars to start of buffer. */
26654 -       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
26655 -
26656 -       for ( i = 0; i < number_to_move; ++i )
26657 -               *(dest++) = *(source++);
26658 -
26659 -       if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
26660 -               /* don't do the read, it's not guaranteed to return an EOF,
26661 -                * just force an EOF
26662 -                */
26663 -               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
26664 -
26665 -       else
26666 -               {
26667 -                       int num_to_read =
26668 -                       YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
26669 -
26670 -               while ( num_to_read <= 0 )
26671 -                       { /* Not enough room in the buffer - grow it. */
26672 -
26673 -                       /* just a shorter name for the current buffer */
26674 -                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
26675 -
26676 -                       int yy_c_buf_p_offset =
26677 -                               (int) ((yy_c_buf_p) - b->yy_ch_buf);
26678 -
26679 -                       if ( b->yy_is_our_buffer )
26680 -                               {
26681 -                               int new_size = b->yy_buf_size * 2;
26682 -
26683 -                               if ( new_size <= 0 )
26684 -                                       b->yy_buf_size += b->yy_buf_size / 8;
26685 -                               else
26686 -                                       b->yy_buf_size *= 2;
26687 -
26688 -                               b->yy_ch_buf = (char *)
26689 -                                       /* Include room in for 2 EOB chars. */
26690 -                                       yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
26691 -                               }
26692 -                       else
26693 -                               /* Can't grow it, we don't own it. */
26694 -                               b->yy_ch_buf = 0;
26695 -
26696 -                       if ( ! b->yy_ch_buf )
26697 -                               YY_FATAL_ERROR(
26698 -                               "fatal error - scanner input buffer overflow" );
26699 -
26700 -                       (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
26701 -
26702 -                       num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
26703 -                                               number_to_move - 1;
26704 -
26705 -                       }
26706 -
26707 -               if ( num_to_read > YY_READ_BUF_SIZE )
26708 -                       num_to_read = YY_READ_BUF_SIZE;
26709 -
26710 -               /* Read in more data. */
26711 -               YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
26712 -                       (yy_n_chars), (size_t) num_to_read );
26713 -
26714 -               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
26715 -               }
26716 -
26717 -       if ( (yy_n_chars) == 0 )
26718 -               {
26719 -               if ( number_to_move == YY_MORE_ADJ )
26720 -                       {
26721 -                       ret_val = EOB_ACT_END_OF_FILE;
26722 -                       yyrestart(yyin  );
26723 -                       }
26724 -
26725 -               else
26726 -                       {
26727 -                       ret_val = EOB_ACT_LAST_MATCH;
26728 -                       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
26729 -                               YY_BUFFER_EOF_PENDING;
26730 -                       }
26731 -               }
26732 -
26733 -       else
26734 -               ret_val = EOB_ACT_CONTINUE_SCAN;
26735 -
26736 -       if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
26737 -               /* Extend the array by 50%, plus the number we really need. */
26738 -               yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
26739 -               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
26740 -               if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
26741 -                       YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
26742 -       }
26743 -
26744 -       (yy_n_chars) += number_to_move;
26745 -       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
26746 -       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
26747 -
26748 -       (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
26749 -
26750 -       return ret_val;
26751 -}
26752 -
26753 -/* yy_get_previous_state - get the state just before the EOB char was reached */
26754 -
26755 -    static yy_state_type yy_get_previous_state (void)
26756 -{
26757 -       register yy_state_type yy_current_state;
26758 -       register char *yy_cp;
26759 -    
26760 -       yy_current_state = (yy_start);
26761 -       yy_current_state += YY_AT_BOL();
26762 -
26763 -       for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
26764 -               {
26765 -               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
26766 -               if ( yy_accept[yy_current_state] )
26767 -                       {
26768 -                       (yy_last_accepting_state) = yy_current_state;
26769 -                       (yy_last_accepting_cpos) = yy_cp;
26770 -                       }
26771 -               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
26772 -                       {
26773 -                       yy_current_state = (int) yy_def[yy_current_state];
26774 -                       if ( yy_current_state >= 445 )
26775 -                               yy_c = yy_meta[(unsigned int) yy_c];
26776 -                       }
26777 -               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
26778 -               }
26779 -
26780 -       return yy_current_state;
26781 -}
26782 -
26783 -/* yy_try_NUL_trans - try to make a transition on the NUL character
26784 - *
26785 - * synopsis
26786 - *     next_state = yy_try_NUL_trans( current_state );
26787 - */
26788 -    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
26789 -{
26790 -       register int yy_is_jam;
26791 -       register char *yy_cp = (yy_c_buf_p);
26792 -
26793 -       register YY_CHAR yy_c = 1;
26794 -       if ( yy_accept[yy_current_state] )
26795 -               {
26796 -               (yy_last_accepting_state) = yy_current_state;
26797 -               (yy_last_accepting_cpos) = yy_cp;
26798 -               }
26799 -       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
26800 -               {
26801 -               yy_current_state = (int) yy_def[yy_current_state];
26802 -               if ( yy_current_state >= 445 )
26803 -                       yy_c = yy_meta[(unsigned int) yy_c];
26804 -               }
26805 -       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
26806 -       yy_is_jam = (yy_current_state == 444);
26807 -
26808 -       return yy_is_jam ? 0 : yy_current_state;
26809 -}
26810 -
26811 -#ifndef YY_NO_INPUT
26812 -#ifdef __cplusplus
26813 -    static int yyinput (void)
26814 -#else
26815 -    static int input  (void)
26816 -#endif
26817 -
26818 -{
26819 -       int c;
26820 -    
26821 -       *(yy_c_buf_p) = (yy_hold_char);
26822 -
26823 -       if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
26824 -               {
26825 -               /* yy_c_buf_p now points to the character we want to return.
26826 -                * If this occurs *before* the EOB characters, then it's a
26827 -                * valid NUL; if not, then we've hit the end of the buffer.
26828 -                */
26829 -               if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
26830 -                       /* This was really a NUL. */
26831 -                       *(yy_c_buf_p) = '\0';
26832 -
26833 -               else
26834 -                       { /* need more input */
26835 -                       int offset = (yy_c_buf_p) - (yytext_ptr);
26836 -                       ++(yy_c_buf_p);
26837 -
26838 -                       switch ( yy_get_next_buffer(  ) )
26839 -                               {
26840 -                               case EOB_ACT_LAST_MATCH:
26841 -                                       /* This happens because yy_g_n_b()
26842 -                                        * sees that we've accumulated a
26843 -                                        * token and flags that we need to
26844 -                                        * try matching the token before
26845 -                                        * proceeding.  But for input(),
26846 -                                        * there's no matching to consider.
26847 -                                        * So convert the EOB_ACT_LAST_MATCH
26848 -                                        * to EOB_ACT_END_OF_FILE.
26849 -                                        */
26850 -
26851 -                                       /* Reset buffer status. */
26852 -                                       yyrestart(yyin );
26853 -
26854 -                                       /*FALLTHROUGH*/
26855 -
26856 -                               case EOB_ACT_END_OF_FILE:
26857 -                                       {
26858 -                                       if ( yywrap( ) )
26859 -                                               return EOF;
26860 -
26861 -                                       if ( ! (yy_did_buffer_switch_on_eof) )
26862 -                                               YY_NEW_FILE;
26863 -#ifdef __cplusplus
26864 -                                       return yyinput();
26865 -#else
26866 -                                       return input();
26867 -#endif
26868 -                                       }
26869 -
26870 -                               case EOB_ACT_CONTINUE_SCAN:
26871 -                                       (yy_c_buf_p) = (yytext_ptr) + offset;
26872 -                                       break;
26873 -                               }
26874 -                       }
26875 -               }
26876 -
26877 -       c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
26878 -       *(yy_c_buf_p) = '\0';   /* preserve yytext */
26879 -       (yy_hold_char) = *++(yy_c_buf_p);
26880 -
26881 -       YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
26882 -
26883 -       return c;
26884 -}
26885 -#endif /* ifndef YY_NO_INPUT */
26886 -
26887 -/** Immediately switch to a different input stream.
26888 - * @param input_file A readable stream.
26889 - * 
26890 - * @note This function does not reset the start condition to @c INITIAL .
26891 - */
26892 -    void yyrestart  (FILE * input_file )
26893 -{
26894 -    
26895 -       if ( ! YY_CURRENT_BUFFER ){
26896 -        yyensure_buffer_stack ();
26897 -               YY_CURRENT_BUFFER_LVALUE =
26898 -            yy_create_buffer(yyin,YY_BUF_SIZE );
26899 -       }
26900 -
26901 -       yy_init_buffer(YY_CURRENT_BUFFER,input_file );
26902 -       yy_load_buffer_state( );
26903 -}
26904 -
26905 -/** Switch to a different input buffer.
26906 - * @param new_buffer The new input buffer.
26907 - * 
26908 - */
26909 -    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
26910 -{
26911 -    
26912 -       /* TODO. We should be able to replace this entire function body
26913 -        * with
26914 -        *              yypop_buffer_state();
26915 -        *              yypush_buffer_state(new_buffer);
26916 -     */
26917 -       yyensure_buffer_stack ();
26918 -       if ( YY_CURRENT_BUFFER == new_buffer )
26919 -               return;
26920 -
26921 -       if ( YY_CURRENT_BUFFER )
26922 -               {
26923 -               /* Flush out information for old buffer. */
26924 -               *(yy_c_buf_p) = (yy_hold_char);
26925 -               YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
26926 -               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
26927 -               }
26928 -
26929 -       YY_CURRENT_BUFFER_LVALUE = new_buffer;
26930 -       yy_load_buffer_state( );
26931 -
26932 -       /* We don't actually know whether we did this switch during
26933 -        * EOF (yywrap()) processing, but the only time this flag
26934 -        * is looked at is after yywrap() is called, so it's safe
26935 -        * to go ahead and always set it.
26936 -        */
26937 -       (yy_did_buffer_switch_on_eof) = 1;
26938 -}
26939 -
26940 -static void yy_load_buffer_state  (void)
26941 -{
26942 -       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
26943 -       (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
26944 -       yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
26945 -       (yy_hold_char) = *(yy_c_buf_p);
26946 -}
26947 -
26948 -/** Allocate and initialize an input buffer state.
26949 - * @param file A readable stream.
26950 - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
26951 - * 
26952 - * @return the allocated buffer state.
26953 - */
26954 -    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
26955 -{
26956 -       YY_BUFFER_STATE b;
26957 -    
26958 -       b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
26959 -       if ( ! b )
26960 -               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
26961 -
26962 -       b->yy_buf_size = size;
26963 -
26964 -       /* yy_ch_buf has to be 2 characters longer than the size given because
26965 -        * we need to put in 2 end-of-buffer characters.
26966 -        */
26967 -       b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
26968 -       if ( ! b->yy_ch_buf )
26969 -               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
26970 -
26971 -       b->yy_is_our_buffer = 1;
26972 -
26973 -       yy_init_buffer(b,file );
26974 -
26975 -       return b;
26976 -}
26977 -
26978 -/** Destroy the buffer.
26979 - * @param b a buffer created with yy_create_buffer()
26980 - * 
26981 - */
26982 -    void yy_delete_buffer (YY_BUFFER_STATE  b )
26983 -{
26984 -    
26985 -       if ( ! b )
26986 -               return;
26987 -
26988 -       if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
26989 -               YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
26990 -
26991 -       if ( b->yy_is_our_buffer )
26992 -               yyfree((void *) b->yy_ch_buf  );
26993 -
26994 -       yyfree((void *) b  );
26995 -}
26996 -
26997 -/* Initializes or reinitializes a buffer.
26998 - * This function is sometimes called more than once on the same buffer,
26999 - * such as during a yyrestart() or at EOF.
27000 - */
27001 -    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
27002 -
27003 -{
27004 -       int oerrno = errno;
27005 -    
27006 -       yy_flush_buffer(b );
27007 -
27008 -       b->yy_input_file = file;
27009 -       b->yy_fill_buffer = 1;
27010 -
27011 -    /* If b is the current buffer, then yy_init_buffer was _probably_
27012 -     * called from yyrestart() or through yy_get_next_buffer.
27013 -     * In that case, we don't want to reset the lineno or column.
27014 -     */
27015 -    if (b != YY_CURRENT_BUFFER){
27016 -        b->yy_bs_lineno = 1;
27017 -        b->yy_bs_column = 0;
27018 -    }
27019 -
27020 -        b->yy_is_interactive = 0;
27021 -    
27022 -       errno = oerrno;
27023 -}
27024 -
27025 -/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
27026 - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
27027 - * 
27028 - */
27029 -    void yy_flush_buffer (YY_BUFFER_STATE  b )
27030 -{
27031 -       if ( ! b )
27032 -               return;
27033 -
27034 -       b->yy_n_chars = 0;
27035 -
27036 -       /* We always need two end-of-buffer characters.  The first causes
27037 -        * a transition to the end-of-buffer state.  The second causes
27038 -        * a jam in that state.
27039 -        */
27040 -       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
27041 -       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
27042 -
27043 -       b->yy_buf_pos = &b->yy_ch_buf[0];
27044 -
27045 -       b->yy_at_bol = 1;
27046 -       b->yy_buffer_status = YY_BUFFER_NEW;
27047 -
27048 -       if ( b == YY_CURRENT_BUFFER )
27049 -               yy_load_buffer_state( );
27050 -}
27051 -
27052 -/** Pushes the new state onto the stack. The new state becomes
27053 - *  the current state. This function will allocate the stack
27054 - *  if necessary.
27055 - *  @param new_buffer The new state.
27056 - *  
27057 - */
27058 -void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
27059 -{
27060 -       if (new_buffer == NULL)
27061 -               return;
27062 -
27063 -       yyensure_buffer_stack();
27064 -
27065 -       /* This block is copied from yy_switch_to_buffer. */
27066 -       if ( YY_CURRENT_BUFFER )
27067 -               {
27068 -               /* Flush out information for old buffer. */
27069 -               *(yy_c_buf_p) = (yy_hold_char);
27070 -               YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
27071 -               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
27072 -               }
27073 -
27074 -       /* Only push if top exists. Otherwise, replace top. */
27075 -       if (YY_CURRENT_BUFFER)
27076 -               (yy_buffer_stack_top)++;
27077 -       YY_CURRENT_BUFFER_LVALUE = new_buffer;
27078 -
27079 -       /* copied from yy_switch_to_buffer. */
27080 -       yy_load_buffer_state( );
27081 -       (yy_did_buffer_switch_on_eof) = 1;
27082 -}
27083 -
27084 -/** Removes and deletes the top of the stack, if present.
27085 - *  The next element becomes the new top.
27086 - *  
27087 - */
27088 -void yypop_buffer_state (void)
27089 -{
27090 -       if (!YY_CURRENT_BUFFER)
27091 -               return;
27092 -
27093 -       yy_delete_buffer(YY_CURRENT_BUFFER );
27094 -       YY_CURRENT_BUFFER_LVALUE = NULL;
27095 -       if ((yy_buffer_stack_top) > 0)
27096 -               --(yy_buffer_stack_top);
27097 -
27098 -       if (YY_CURRENT_BUFFER) {
27099 -               yy_load_buffer_state( );
27100 -               (yy_did_buffer_switch_on_eof) = 1;
27101 -       }
27102 -}
27103 -
27104 -/* Allocates the stack if it does not exist.
27105 - *  Guarantees space for at least one push.
27106 - */
27107 -static void yyensure_buffer_stack (void)
27108 -{
27109 -       int num_to_alloc;
27110 -    
27111 -       if (!(yy_buffer_stack)) {
27112 -
27113 -               /* First allocation is just for 2 elements, since we don't know if this
27114 -                * scanner will even need a stack. We use 2 instead of 1 to avoid an
27115 -                * immediate realloc on the next call.
27116 -         */
27117 -               num_to_alloc = 1;
27118 -               (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
27119 -                                                               (num_to_alloc * sizeof(struct yy_buffer_state*)
27120 -                                                               );
27121 -               if ( ! (yy_buffer_stack) )
27122 -                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
27123 -                                                                 
27124 -               memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
27125 -                               
27126 -               (yy_buffer_stack_max) = num_to_alloc;
27127 -               (yy_buffer_stack_top) = 0;
27128 -               return;
27129 -       }
27130 -
27131 -       if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
27132 -
27133 -               /* Increase the buffer to prepare for a possible push. */
27134 -               int grow_size = 8 /* arbitrary grow size */;
27135 -
27136 -               num_to_alloc = (yy_buffer_stack_max) + grow_size;
27137 -               (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
27138 -                                                               ((yy_buffer_stack),
27139 -                                                               num_to_alloc * sizeof(struct yy_buffer_state*)
27140 -                                                               );
27141 -               if ( ! (yy_buffer_stack) )
27142 -                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
27143 -
27144 -               /* zero only the new slots.*/
27145 -               memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
27146 -               (yy_buffer_stack_max) = num_to_alloc;
27147 -       }
27148 -}
27149 -
27150 -/** Setup the input buffer state to scan directly from a user-specified character buffer.
27151 - * @param base the character buffer
27152 - * @param size the size in bytes of the character buffer
27153 - * 
27154 - * @return the newly allocated buffer state object. 
27155 - */
27156 -YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
27157 -{
27158 -       YY_BUFFER_STATE b;
27159 -    
27160 -       if ( size < 2 ||
27161 -            base[size-2] != YY_END_OF_BUFFER_CHAR ||
27162 -            base[size-1] != YY_END_OF_BUFFER_CHAR )
27163 -               /* They forgot to leave room for the EOB's. */
27164 -               return 0;
27165 -
27166 -       b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
27167 -       if ( ! b )
27168 -               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
27169 -
27170 -       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
27171 -       b->yy_buf_pos = b->yy_ch_buf = base;
27172 -       b->yy_is_our_buffer = 0;
27173 -       b->yy_input_file = 0;
27174 -       b->yy_n_chars = b->yy_buf_size;
27175 -       b->yy_is_interactive = 0;
27176 -       b->yy_at_bol = 1;
27177 -       b->yy_fill_buffer = 0;
27178 -       b->yy_buffer_status = YY_BUFFER_NEW;
27179 -
27180 -       yy_switch_to_buffer(b  );
27181 -
27182 -       return b;
27183 -}
27184 -
27185 -/** Setup the input buffer state to scan a string. The next call to yylex() will
27186 - * scan from a @e copy of @a str.
27187 - * @param yystr a NUL-terminated string to scan
27188 - * 
27189 - * @return the newly allocated buffer state object.
27190 - * @note If you want to scan bytes that may contain NUL values, then use
27191 - *       yy_scan_bytes() instead.
27192 - */
27193 -YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
27194 -{
27195 -    
27196 -       return yy_scan_bytes(yystr,strlen(yystr) );
27197 -}
27198 -
27199 -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
27200 - * scan from a @e copy of @a bytes.
27201 - * @param bytes the byte buffer to scan
27202 - * @param len the number of bytes in the buffer pointed to by @a bytes.
27203 - * 
27204 - * @return the newly allocated buffer state object.
27205 - */
27206 -YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
27207 -{
27208 -       YY_BUFFER_STATE b;
27209 -       char *buf;
27210 -       yy_size_t n;
27211 -       int i;
27212 -    
27213 -       /* Get memory for full buffer, including space for trailing EOB's. */
27214 -       n = _yybytes_len + 2;
27215 -       buf = (char *) yyalloc(n  );
27216 -       if ( ! buf )
27217 -               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
27218 -
27219 -       for ( i = 0; i < _yybytes_len; ++i )
27220 -               buf[i] = yybytes[i];
27221 -
27222 -       buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
27223 -
27224 -       b = yy_scan_buffer(buf,n );
27225 -       if ( ! b )
27226 -               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
27227 -
27228 -       /* It's okay to grow etc. this buffer, and we should throw it
27229 -        * away when we're done.
27230 -        */
27231 -       b->yy_is_our_buffer = 1;
27232 -
27233 -       return b;
27234 -}
27235 -
27236 -#ifndef YY_EXIT_FAILURE
27237 -#define YY_EXIT_FAILURE 2
27238 -#endif
27239 -
27240 -static void yy_fatal_error (yyconst char* msg )
27241 -{
27242 -       (void) fprintf( stderr, "%s\n", msg );
27243 -       exit( YY_EXIT_FAILURE );
27244 -}
27245 -
27246 -/* Redefine yyless() so it works in section 3 code. */
27247 -
27248 -#undef yyless
27249 -#define yyless(n) \
27250 -       do \
27251 -               { \
27252 -               /* Undo effects of setting up yytext. */ \
27253 -        int yyless_macro_arg = (n); \
27254 -        YY_LESS_LINENO(yyless_macro_arg);\
27255 -               yytext[yyleng] = (yy_hold_char); \
27256 -               (yy_c_buf_p) = yytext + yyless_macro_arg; \
27257 -               (yy_hold_char) = *(yy_c_buf_p); \
27258 -               *(yy_c_buf_p) = '\0'; \
27259 -               yyleng = yyless_macro_arg; \
27260 -               } \
27261 -       while ( 0 )
27262 -
27263 -/* Accessor  methods (get/set functions) to struct members. */
27264 -
27265 -/** Get the current line number.
27266 - * 
27267 - */
27268 -int yyget_lineno  (void)
27269 -{
27270 -        
27271 -    return yylineno;
27272 -}
27273 -
27274 -/** Get the input stream.
27275 - * 
27276 - */
27277 -FILE *yyget_in  (void)
27278 -{
27279 -        return yyin;
27280 -}
27281 -
27282 -/** Get the output stream.
27283 - * 
27284 - */
27285 -FILE *yyget_out  (void)
27286 -{
27287 -        return yyout;
27288 -}
27289 -
27290 -/** Get the length of the current token.
27291 - * 
27292 - */
27293 -int yyget_leng  (void)
27294 -{
27295 -        return yyleng;
27296 -}
27297 -
27298 -/** Get the current token.
27299 - * 
27300 - */
27301 -
27302 -char *yyget_text  (void)
27303 -{
27304 -        return yytext;
27305 -}
27306 -
27307 -/** Set the current line number.
27308 - * @param line_number
27309 - * 
27310 - */
27311 -void yyset_lineno (int  line_number )
27312 -{
27313 -    
27314 -    yylineno = line_number;
27315 -}
27316 -
27317 -/** Set the input stream. This does not discard the current
27318 - * input buffer.
27319 - * @param in_str A readable stream.
27320 - * 
27321 - * @see yy_switch_to_buffer
27322 - */
27323 -void yyset_in (FILE *  in_str )
27324 -{
27325 -        yyin = in_str ;
27326 -}
27327 -
27328 -void yyset_out (FILE *  out_str )
27329 -{
27330 -        yyout = out_str ;
27331 -}
27332 -
27333 -int yyget_debug  (void)
27334 -{
27335 -        return yy_flex_debug;
27336 -}
27337 -
27338 -void yyset_debug (int  bdebug )
27339 -{
27340 -        yy_flex_debug = bdebug ;
27341 -}
27342 -
27343 -static int yy_init_globals (void)
27344 -{
27345 -        /* Initialization is the same as for the non-reentrant scanner.
27346 -     * This function is called from yylex_destroy(), so don't allocate here.
27347 -     */
27348 -
27349 -    (yy_buffer_stack) = 0;
27350 -    (yy_buffer_stack_top) = 0;
27351 -    (yy_buffer_stack_max) = 0;
27352 -    (yy_c_buf_p) = (char *) 0;
27353 -    (yy_init) = 0;
27354 -    (yy_start) = 0;
27355 -
27356 -/* Defined in main.c */
27357 -#ifdef YY_STDINIT
27358 -    yyin = stdin;
27359 -    yyout = stdout;
27360 -#else
27361 -    yyin = (FILE *) 0;
27362 -    yyout = (FILE *) 0;
27363 -#endif
27364 -
27365 -    /* For future reference: Set errno on error, since we are called by
27366 -     * yylex_init()
27367 -     */
27368 -    return 0;
27369 -}
27370 -
27371 -/* yylex_destroy is for both reentrant and non-reentrant scanners. */
27372 -int yylex_destroy  (void)
27373 -{
27374 -    
27375 -    /* Pop the buffer stack, destroying each element. */
27376 -       while(YY_CURRENT_BUFFER){
27377 -               yy_delete_buffer(YY_CURRENT_BUFFER  );
27378 -               YY_CURRENT_BUFFER_LVALUE = NULL;
27379 -               yypop_buffer_state();
27380 -       }
27381 -
27382 -       /* Destroy the stack itself. */
27383 -       yyfree((yy_buffer_stack) );
27384 -       (yy_buffer_stack) = NULL;
27385 -
27386 -    /* Reset the globals. This is important in a non-reentrant scanner so the next time
27387 -     * yylex() is called, initialization will occur. */
27388 -    yy_init_globals( );
27389 -
27390 -    return 0;
27391 -}
27392 -
27393 -/*
27394 - * Internal utility routines.
27395 - */
27396 -
27397 -#ifndef yytext_ptr
27398 -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
27399 -{
27400 -       register int i;
27401 -       for ( i = 0; i < n; ++i )
27402 -               s1[i] = s2[i];
27403 -}
27404 -#endif
27405 -
27406 -#ifdef YY_NEED_STRLEN
27407 -static int yy_flex_strlen (yyconst char * s )
27408 -{
27409 -       register int n;
27410 -       for ( n = 0; s[n]; ++n )
27411 -               ;
27412 -
27413 -       return n;
27414 -}
27415 -#endif
27416 -
27417 -void *yyalloc (yy_size_t  size )
27418 -{
27419 -       return (void *) malloc( size );
27420 -}
27421 -
27422 -void *yyrealloc  (void * ptr, yy_size_t  size )
27423 -{
27424 -       /* The cast to (char *) in the following accommodates both
27425 -        * implementations that use char* generic pointers, and those
27426 -        * that use void* generic pointers.  It works with the latter
27427 -        * because both ANSI C and C++ allow castless assignment from
27428 -        * any pointer type to void*, and deal with argument conversions
27429 -        * as though doing an assignment.
27430 -        */
27431 -       return (void *) realloc( (char *) ptr, size );
27432 -}
27433 -
27434 -void yyfree (void * ptr )
27435 -{
27436 -       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
27437 -}
27438 -
27439 -#define YYTABLES_NAME "yytables"
27440 -
27441 -#line 196 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
27442 -
27443 -
27444 -
27445 -void
27446 -yybegin (const char *fname)
27447 -{
27448 -  yyin = fopen (fname, "r");
27449 -  if (yyin == NULL)
27450 -    {
27451 -      perror (fname);
27452 -      exit (1);
27453 -    }
27454 -  lexer_line.file = fname;
27455 -  lexer_line.line = 1;
27456 -}
27457 -
27458 -void
27459 -yyend (void)
27460 -{
27461 -  fclose (yyin);
27462 -}
27463 -
27464 diff -Nur a/gcc/gengtype-lex.l b/gcc/gengtype-lex.l
27465 --- a/gcc/gengtype-lex.l        2009-02-20 16:20:38.000000000 +0100
27466 +++ b/gcc/gengtype-lex.l        2010-01-25 09:50:29.145688053 +0100
27467 @@ -48,7 +48,7 @@
27468  ID     [[:alpha:]_][[:alnum:]_]*
27469  WS     [[:space:]]+
27470  HWS    [ \t\r\v\f]*
27471 -IWORD  short|long|(un)?signed|char|int|HOST_WIDE_INT|HOST_WIDEST_INT|bool|size_t|BOOL_BITFIELD|CPPCHAR_SIGNED_T|ino_t|dev_t
27472 +IWORD  short|long|(un)?signed|char|int|HOST_WIDE_INT|HOST_WIDEST_INT|bool|size_t|BOOL_BITFIELD|CPPCHAR_SIGNED_T|ino_t|dev_t|HARD_REG_SET
27473  ITYPE  {IWORD}({WS}{IWORD})*
27474  EOID   [^[:alnum:]_]
27475  
27476 diff -Nur a/gcc/genmultilib b/gcc/genmultilib
27477 --- a/gcc/genmultilib   2007-07-26 10:37:01.000000000 +0200
27478 +++ b/gcc/genmultilib   2010-01-25 09:50:29.145688053 +0100
27479 @@ -73,6 +73,20 @@
27480  # the os directory names are used exclusively.  Use the mapping when
27481  # there is no one-to-one equivalence between GCC levels and the OS.
27482  
27483 +# The optional eighth option is a list of multilib aliases.  This takes the
27484 +# same form as the third argument.  It specifies that the second multilib is
27485 +# a synonym for the first.  This allows a suitable multilib to be selected
27486 +# for all option combinations while only building a subset of all possible
27487 +# multilibs.
27488 +# For example:
27489 +#   genmultilib "mbig-endian mthumb" "eb thumb" "" "" "" "" "" \
27490 +#              "mbig-endian=mbig-endian/mthumb" yes
27491 +# This produces:
27492 +#   ". !mbig-endian !mthumb;",
27493 +#   "be mbig-endian !mthumb;",
27494 +#   "be mbig-endian mthumb;",
27495 +#   "thumb !mbig-endian mthumb;",
27496 +
27497  # The last option should be "yes" if multilibs are enabled.  If it is not
27498  # "yes", all GCC multilib dir names will be ".".
27499  
27500 @@ -121,7 +135,8 @@
27501  extra=$5
27502  exclusions=$6
27503  osdirnames=$7
27504 -enable_multilib=$8
27505 +aliases=$8
27506 +enable_multilib=$9
27507  
27508  echo "static const char *const multilib_raw[] = {"
27509  
27510 @@ -129,6 +144,23 @@
27511  # Use cd ./foo to avoid CDPATH output.
27512  cd ./tmpmultilib.$$ || exit 1
27513  
27514 +# Handle aliases
27515 +cat >tmpmultilib3 <<\EOF
27516 +#!/bin/sh
27517 +# Output a list of aliases (including the original name) for a multilib.
27518 +
27519 +echo $1
27520 +EOF
27521 +for a in ${aliases}; do
27522 +  l=`echo $a | sed -e 's/=.*$//' -e 's/?/=/g'`
27523 +  r=`echo $a | sed -e 's/^.*=//' -e 's/?/=/g'`
27524 +  echo "[ \$1 == /$l/ ] && echo /$r/" >>tmpmultilib3
27525 +  
27526 +  # Also add the alias to the exclusion list
27527 +  exceptions="${exceptions} $r"
27528 +done
27529 +chmod +x tmpmultilib3
27530 +
27531  # What we want to do is select all combinations of the sets in
27532  # options.  Each combination which includes a set of mutually
27533  # exclusive options must then be output multiple times, once for each
27534 @@ -195,6 +227,21 @@
27535    combinations=`./tmpmultilib2 ${combinations}`
27536  fi
27537  
27538 +# Check that all the aliases actually exist
27539 +for a in ${aliases}; do
27540 +  l=`echo $a | sed -e 's/=.*$//' -e 's/?/=/g'`
27541 +  for c in ${combinations}; do
27542 +    if [ "/$l/" = "$c" ]; then
27543 +      l=""
27544 +      break;
27545 +    fi
27546 +  done
27547 +  if [ -n "$l" ] ;then
27548 +    echo "Missing multilib $l for alias $a" 1>&2
27549 +    exit 1
27550 +  fi
27551 +done
27552 +
27553  # Construct a sed pattern which will convert option names to directory
27554  # names.
27555  todirnames=
27556 @@ -343,23 +390,25 @@
27557      fi
27558    fi
27559  
27560 -  # Look through the options.  We must output each option that is
27561 -  # present, and negate each option that is not present.
27562 -  optout=
27563 -  for set in ${options}; do
27564 -    setopts=`echo ${set} | sed -e 's_[/|]_ _g'`
27565 -    for opt in ${setopts}; do
27566 -      if expr "${combo} " : ".*/${opt}/.*" > /dev/null; then
27567 -       optout="${optout} ${opt}"
27568 -      else
27569 -       optout="${optout} !${opt}"
27570 -      fi
27571 +  for optcombo in `./tmpmultilib3 ${combo}`; do
27572 +    # Look through the options.  We must output each option that is
27573 +    # present, and negate each option that is not present.
27574 +    optout=
27575 +    for set in ${options}; do
27576 +      setopts=`echo ${set} | sed -e 's_[/|]_ _g'`
27577 +      for opt in ${setopts}; do
27578 +       if expr "${optcombo} " : ".*/${opt}/.*" > /dev/null; then
27579 +         optout="${optout} ${opt}"
27580 +       else
27581 +         optout="${optout} !${opt}"
27582 +       fi
27583 +      done
27584      done
27585 -  done
27586 -  optout=`echo ${optout} | sed -e 's/^ //'`
27587 +    optout=`echo ${optout} | sed -e 's/^ //'`
27588  
27589 -  # Output the line with all appropriate matches.
27590 -  dirout="${dirout}" optout="${optout}" ./tmpmultilib2
27591 +    # Output the line with all appropriate matches.
27592 +    dirout="${dirout}" optout="${optout}" ./tmpmultilib2
27593 +  done
27594  done
27595  
27596  # Terminate the list of string.
27597 diff -Nur a/gcc/haifa-sched.c b/gcc/haifa-sched.c
27598 --- a/gcc/haifa-sched.c 2008-10-14 14:52:19.000000000 +0200
27599 +++ b/gcc/haifa-sched.c 2010-01-25 09:50:29.145688053 +0100
27600 @@ -1990,6 +1990,23 @@
27601    SCHED_GROUP_P (insn) = 0;  
27602  }
27603  
27604 +/* Return true if scheduling INSN will finish current clock cycle.  */
27605 +static bool
27606 +insn_finishes_cycle_p (rtx insn)
27607 +{
27608 +  if (SCHED_GROUP_P (insn))
27609 +    /* After issuing INSN, rest of the sched_group will be forced to issue
27610 +       in order.  Don't make any plans for the rest of cycle.  */
27611 +    return true;
27612 +
27613 +  /* Finishing the block will, apparently, finish the cycle.  */
27614 +  if (current_sched_info->insn_finishes_block_p
27615 +      && current_sched_info->insn_finishes_block_p (insn))
27616 +    return true;
27617 +
27618 +  return false;
27619 +}
27620 +
27621  /* The following structure describe an entry of the stack of choices.  */
27622  struct choice_entry
27623  {
27624 @@ -2168,7 +2185,10 @@
27625           delay = state_transition (state, insn);
27626           if (delay < 0)
27627             {
27628 -             if (state_dead_lock_p (state))
27629 +             if (state_dead_lock_p (state)
27630 +                 || insn_finishes_cycle_p (insn))
27631 +               /* We won't issue any more instructions in the next
27632 +                  choice_state.  */
27633                 top->rest = 0;
27634               else
27635                 top->rest--;
27636 diff -Nur a/gcc/hooks.c b/gcc/hooks.c
27637 --- a/gcc/hooks.c       2009-02-20 16:20:38.000000000 +0100
27638 +++ b/gcc/hooks.c       2010-01-25 09:50:29.145688053 +0100
27639 @@ -335,3 +335,10 @@
27640  {
27641    return NULL;
27642  }
27643 +
27644 +/* Generic hook that takes a const_tree and returns NULL_TREE.  */
27645 +tree
27646 +hook_tree_const_tree_null (const_tree t ATTRIBUTE_UNUSED)
27647 +{
27648 +  return NULL;
27649 +}
27650 diff -Nur a/gcc/hooks.h b/gcc/hooks.h
27651 --- a/gcc/hooks.h       2009-02-20 16:20:38.000000000 +0100
27652 +++ b/gcc/hooks.h       2010-01-25 09:50:29.145688053 +0100
27653 @@ -64,6 +64,8 @@
27654  extern int hook_int_size_t_constcharptr_int_0 (size_t, const char *, int);
27655  extern int hook_int_void_no_regs (void);
27656  
27657 +extern tree hook_tree_const_tree_null (const_tree);
27658 +
27659  extern tree hook_tree_tree_tree_null (tree, tree);
27660  extern tree hook_tree_tree_tree_tree_null (tree, tree, tree);
27661  extern tree hook_tree_tree_tree_tree_3rd_identity (tree, tree, tree);
27662 diff -Nur a/gcc/incpath.c b/gcc/incpath.c
27663 --- a/gcc/incpath.c     2009-02-20 16:20:38.000000000 +0100
27664 +++ b/gcc/incpath.c     2010-01-25 09:50:29.145688053 +0100
27665 @@ -30,6 +30,8 @@
27666  #include "intl.h"
27667  #include "incpath.h"
27668  #include "cppdefault.h"
27669 +#include "flags.h"
27670 +#include "toplev.h"
27671  
27672  /* Microsoft Windows does not natively support inodes.
27673     VMS has non-numeric inodes.  */
27674 @@ -353,6 +355,24 @@
27675         }
27676        fprintf (stderr, _("End of search list.\n"));
27677      }
27678 +
27679 +#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
27680 +  if (flag_poison_system_directories)
27681 +    {
27682 +       struct cpp_dir *p;
27683 +
27684 +       for (p = heads[QUOTE]; p; p = p->next)
27685 +         {
27686 +          if ((!strncmp (p->name, "/usr/include", 12))
27687 +              || (!strncmp (p->name, "/usr/local/include", 18))
27688 +              || (!strncmp (p->name, "/usr/X11R6/include", 18)))
27689 +            warning (OPT_Wpoison_system_directories,
27690 +                     "include location \"%s\" is unsafe for "
27691 +                     "cross-compilation",
27692 +                     p->name);
27693 +         }
27694 +    }
27695 +#endif
27696  }
27697  
27698  /* Use given -I paths for #include "..." but not #include <...>, and
27699 diff -Nur a/gcc/ira.c b/gcc/ira.c
27700 --- a/gcc/ira.c 2009-07-04 00:46:30.000000000 +0200
27701 +++ b/gcc/ira.c 2010-01-25 09:50:29.145688053 +0100
27702 @@ -1349,14 +1349,12 @@
27703    return for_each_rtx (&insn, insn_contains_asm_1, NULL);
27704  }
27705  
27706 -/* Set up regs_asm_clobbered.  */
27707 +/* Add register clobbers from asm statements.  */
27708  static void
27709 -compute_regs_asm_clobbered (char *regs_asm_clobbered)
27710 +compute_regs_asm_clobbered (void)
27711  {
27712    basic_block bb;
27713  
27714 -  memset (regs_asm_clobbered, 0, sizeof (char) * FIRST_PSEUDO_REGISTER);
27715 -  
27716    FOR_EACH_BB (bb)
27717      {
27718        rtx insn;
27719 @@ -1377,7 +1375,7 @@
27720                       + hard_regno_nregs[dregno][mode] - 1;
27721  
27722                     for (i = dregno; i <= end; ++i)
27723 -                     regs_asm_clobbered[i] = 1;
27724 +                     SET_HARD_REG_BIT(crtl->asm_clobbers, i);
27725                   }
27726               }
27727         }
27728 @@ -1415,7 +1413,8 @@
27729    COPY_HARD_REG_SET (ira_no_alloc_regs, no_unit_alloc_regs);
27730    CLEAR_HARD_REG_SET (eliminable_regset);
27731  
27732 -  compute_regs_asm_clobbered (regs_asm_clobbered);
27733 +  compute_regs_asm_clobbered ();
27734 +
27735    /* Build the regset of all eliminable registers and show we can't
27736       use those that we already know won't be eliminated.  */
27737  #ifdef ELIMINABLE_REGS
27738 @@ -1425,7 +1424,7 @@
27739         = (! CAN_ELIMINATE (eliminables[i].from, eliminables[i].to)
27740            || (eliminables[i].to == STACK_POINTER_REGNUM && need_fp));
27741  
27742 -      if (! regs_asm_clobbered[eliminables[i].from])
27743 +      if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, eliminables[i].from))
27744         {
27745             SET_HARD_REG_BIT (eliminable_regset, eliminables[i].from);
27746  
27747 @@ -1439,7 +1438,7 @@
27748         df_set_regs_ever_live (eliminables[i].from, true);
27749      }
27750  #if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
27751 -  if (! regs_asm_clobbered[HARD_FRAME_POINTER_REGNUM])
27752 +  if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
27753      {
27754        SET_HARD_REG_BIT (eliminable_regset, HARD_FRAME_POINTER_REGNUM);
27755        if (need_fp)
27756 @@ -1453,7 +1452,7 @@
27757  #endif
27758  
27759  #else
27760 -  if (! regs_asm_clobbered[FRAME_POINTER_REGNUM])
27761 +  if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
27762      {
27763        SET_HARD_REG_BIT (eliminable_regset, FRAME_POINTER_REGNUM);
27764        if (need_fp)
27765 diff -Nur a/gcc/ira-costs.c b/gcc/ira-costs.c
27766 --- a/gcc/ira-costs.c   2009-04-22 22:16:13.000000000 +0200
27767 +++ b/gcc/ira-costs.c   2010-01-25 09:50:29.145688053 +0100
27768 @@ -706,11 +706,11 @@
27769  
27770  /* Wrapper around REGNO_OK_FOR_INDEX_P, to allow pseudo registers.  */
27771  static inline bool
27772 -ok_for_index_p_nonstrict (rtx reg)
27773 +ok_for_index_p_nonstrict (rtx reg, enum machine_mode mode)
27774  {
27775    unsigned regno = REGNO (reg);
27776  
27777 -  return regno >= FIRST_PSEUDO_REGISTER || REGNO_OK_FOR_INDEX_P (regno);
27778 +  return regno >= FIRST_PSEUDO_REGISTER || ok_for_index_p_1 (regno, mode);
27779  }
27780  
27781  /* A version of regno_ok_for_base_p for use here, when all
27782 @@ -748,7 +748,7 @@
27783    enum reg_class rclass;
27784  
27785    if (context == 1)
27786 -    rclass = INDEX_REG_CLASS;
27787 +    rclass = index_reg_class (mode);
27788    else
27789      rclass = base_reg_class (mode, outer_code, index_code);
27790  
27791 @@ -795,7 +795,8 @@
27792            just record registers in any non-constant operands.  We
27793            assume here, as well as in the tests below, that all
27794            addresses are in canonical form.  */
27795 -       else if (INDEX_REG_CLASS == base_reg_class (VOIDmode, PLUS, SCRATCH))
27796 +       else if (index_reg_class (mode)
27797 +                == base_reg_class (mode, PLUS, SCRATCH))
27798           {
27799             record_address_regs (mode, arg0, context, PLUS, code1, scale);
27800             if (! CONSTANT_P (arg1))
27801 @@ -816,7 +817,7 @@
27802         else if (code0 == REG && code1 == REG
27803                  && REGNO (arg0) < FIRST_PSEUDO_REGISTER
27804                  && (ok_for_base_p_nonstrict (arg0, mode, PLUS, REG)
27805 -                    || ok_for_index_p_nonstrict (arg0)))
27806 +                    || ok_for_index_p_nonstrict (arg0, mode)))
27807           record_address_regs (mode, arg1,
27808                                ok_for_base_p_nonstrict (arg0, mode, PLUS, REG)
27809                                ? 1 : 0,
27810 @@ -824,7 +825,7 @@
27811         else if (code0 == REG && code1 == REG
27812                  && REGNO (arg1) < FIRST_PSEUDO_REGISTER
27813                  && (ok_for_base_p_nonstrict (arg1, mode, PLUS, REG)
27814 -                    || ok_for_index_p_nonstrict (arg1)))
27815 +                    || ok_for_index_p_nonstrict (arg1, mode)))
27816           record_address_regs (mode, arg0,
27817                                ok_for_base_p_nonstrict (arg1, mode, PLUS, REG)
27818                                ? 1 : 0,
27819 diff -Nur a/gcc/longlong.h b/gcc/longlong.h
27820 --- a/gcc/longlong.h    2009-02-12 17:30:53.000000000 +0100
27821 +++ b/gcc/longlong.h    2010-01-25 09:50:29.145688053 +0100
27822 @@ -982,7 +982,7 @@
27823  "      or r1,%0"                                                       \
27824         : "=r" (q), "=&z" (r)                                           \
27825         : "1" (n1), "r" (n0), "rm" (d), "r" (&__udiv_qrnnd_16)          \
27826 -       : "r1", "r2", "r4", "r5", "r6", "pr");                          \
27827 +       : "r1", "r2", "r4", "r5", "r6", "pr", "t");                     \
27828    } while (0)
27829  
27830  #define UDIV_TIME 80
27831 diff -Nur a/gcc/Makefile.in b/gcc/Makefile.in
27832 --- a/gcc/Makefile.in   2009-05-22 01:17:37.000000000 +0200
27833 +++ b/gcc/Makefile.in   2010-01-25 09:50:29.145688053 +0100
27834 @@ -327,6 +327,8 @@
27835  # It also specifies -isystem ./include to find, e.g., stddef.h.
27836  GCC_CFLAGS=$(CFLAGS_FOR_TARGET) $(INTERNAL_CFLAGS) $(T_CFLAGS) $(LOOSE_WARN) -Wold-style-definition $($@-warn) -isystem ./include $(TCFLAGS)
27837  
27838 +EGLIBC_CONFIGS = @EGLIBC_CONFIGS@
27839 +
27840  # ---------------------------------------------------
27841  # Programs which produce files for the target machine
27842  # ---------------------------------------------------
27843 @@ -408,6 +410,9 @@
27844  
27845  xmake_file=@xmake_file@
27846  tmake_file=@tmake_file@
27847 +TM_ENDIAN_CONFIG=@TM_ENDIAN_CONFIG@
27848 +TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@
27849 +TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@
27850  out_file=$(srcdir)/config/@out_file@
27851  out_object_file=@out_object_file@
27852  md_file=$(srcdir)/config/@md_file@
27853 @@ -542,6 +547,23 @@
27854  exeext = @host_exeext@
27855  build_exeext = @build_exeext@
27856  
27857 +licensedir = @licensedir@
27858 +ifneq ($(licensedir),) 
27859 +# Header files for licensing.
27860 +CSL_LICENSEINC = -I $(licensedir)/include
27861 +# Libraries for licensing.
27862 +CSL_LICENSELIB = -L$(licensedir)/lib -lcsllicense
27863 +# The licensing program.  If the program does not exist, assume that
27864 +# it is not needed.
27865 +CSL_LICENSE_PROG = cs-license$(exeext)
27866 +$(CSL_LICENSE_PROG):
27867 +       if [ -f "$(licensedir)/libexec/cs-license$(exeext)" ] ; then \
27868 +         $(LN_S) $(licensedir)/libexec/cs-license$(exeext) . ;  \
27869 +        else \
27870 +         touch $@; \
27871 +       fi
27872 +endif
27873 +
27874  # Directory in which to put man pages.
27875  mandir = @mandir@
27876  man1dir = $(mandir)/man1
27877 @@ -684,7 +706,7 @@
27878  
27879  # List of things which should already be built whenever we try to use xgcc
27880  # to compile anything (without linking).
27881 -GCC_PASSES=xgcc$(exeext) cc1$(exeext) specs $(EXTRA_PASSES)
27882 +GCC_PASSES=xgcc$(exeext) cc1$(exeext) specs $(EXTRA_PASSES) $(CSL_LICENSE_PROG)
27883  
27884  # Directory to link to, when using the target `maketest'.
27885  DIR = ../gcc
27886 @@ -913,7 +935,7 @@
27887  
27888  # How to link with both our special library facilities
27889  # and the system's installed libraries.
27890 -LIBS = @LIBS@ $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) $(LIBDECNUMBER)
27891 +LIBS = @LIBS@ $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) $(LIBDECNUMBER) $(CSL_LICENSELIB)
27892  BACKENDLIBS = $(CLOOGLIBS) $(PPLLIBS) $(GMPLIBS)
27893  # Any system libraries needed just for GNAT.
27894  SYSLIBS = @GNAT_LIBEXC@
27895 @@ -943,7 +965,7 @@
27896  INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
27897            -I$(srcdir)/../include @INCINTL@ \
27898            $(CPPINC) $(GMPINC) $(DECNUMINC) \
27899 -          $(PPLINC) $(CLOOGINC)
27900 +          $(PPLINC) $(CLOOGINC) $(CSL_LICENSEINC)
27901  
27902  .c.o:
27903         $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION)
27904 @@ -1249,6 +1271,7 @@
27905         tree-ssa-loop-manip.o \
27906         tree-ssa-loop-niter.o \
27907         tree-ssa-loop-prefetch.o \
27908 +       tree-ssa-loop-promote.o \
27909         tree-ssa-loop-unswitch.o \
27910         tree-ssa-loop.o \
27911         tree-ssa-math-opts.o \
27912 @@ -1258,6 +1281,7 @@
27913         tree-ssa-pre.o \
27914         tree-ssa-propagate.o \
27915         tree-ssa-reassoc.o \
27916 +       tree-ssa-remove-local-statics.o \
27917         tree-ssa-sccvn.o \
27918         tree-ssa-sink.o \
27919         tree-ssa-structalias.o \
27920 @@ -1674,7 +1698,7 @@
27921         $(MACHMODE_H) $(FPBIT) $(DPBIT) $(TPBIT) $(LIB2ADD) \
27922         $(LIB2ADD_ST) $(LIB2ADDEH) $(srcdir)/emutls.c gcov-iov.h $(SFP_MACHINE)
27923  
27924 -libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs \
27925 +libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs $(tmake_file) \
27926                 xgcc$(exeext)
27927         : > tmp-libgcc.mvars
27928         echo LIB1ASMFUNCS = '$(LIB1ASMFUNCS)' >> tmp-libgcc.mvars
27929 @@ -1728,7 +1752,7 @@
27930  # driver program needs to select the library directory based on the
27931  # switches.
27932  multilib.h: s-mlib; @true
27933 -s-mlib: $(srcdir)/genmultilib Makefile
27934 +s-mlib: $(srcdir)/genmultilib Makefile $(tmakefile)
27935         if test @enable_multilib@ = yes \
27936            || test -n "$(MULTILIB_OSDIRNAMES)"; then \
27937           $(SHELL) $(srcdir)/genmultilib \
27938 @@ -1739,10 +1763,11 @@
27939             "$(MULTILIB_EXTRA_OPTS)" \
27940             "$(MULTILIB_EXCLUSIONS)" \
27941             "$(MULTILIB_OSDIRNAMES)" \
27942 +           "$(MULTILIB_ALIASES)" \
27943             "@enable_multilib@" \
27944             > tmp-mlib.h; \
27945         else \
27946 -         $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' no \
27947 +         $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' '' no \
27948             > tmp-mlib.h; \
27949         fi
27950         $(SHELL) $(srcdir)/../move-if-change tmp-mlib.h multilib.h
27951 @@ -1816,7 +1841,7 @@
27952  
27953  incpath.o: incpath.c incpath.h $(CONFIG_H) $(SYSTEM_H) $(CPPLIB_H) \
27954                 intl.h prefix.h coretypes.h $(TM_H) cppdefault.h $(TARGET_H) \
27955 -               $(MACHMODE_H)
27956 +               $(MACHMODE_H) $(FLAGS_H) toplev.h
27957  
27958  c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
27959      $(RTL_H) $(C_TREE_H) $(GGC_H) $(TARGET_H) $(FLAGS_H) $(FUNCTION_H) output.h \
27960 @@ -1900,7 +1925,7 @@
27961          $(TREE_H) $(C_PRAGMA_H) $(FLAGS_H) $(TOPLEV_H) langhooks.h             \
27962          $(TREE_INLINE_H) $(DIAGNOSTIC_H) intl.h debug.h $(C_COMMON_H)  \
27963          opts.h options.h $(MKDEPS_H) incpath.h cppdefault.h $(TARGET_H) \
27964 -       $(TM_P_H) $(VARRAY_H)
27965 +       $(TM_P_H) $(VARRAY_H) $(C_TREE_H)
27966         $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \
27967                 $< $(OUTPUT_OPTION) @TARGET_SYSTEM_ROOT_DEFINE@
27968  
27969 @@ -1953,7 +1978,8 @@
27970    -DTOOLDIR_BASE_PREFIX=\"$(libsubdir_to_prefix)$(prefix_to_exec_prefix)\" \
27971    @TARGET_SYSTEM_ROOT_DEFINE@ \
27972    $(VALGRIND_DRIVER_DEFINES) \
27973 -  `test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"`
27974 +  `test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"` \
27975 +  -DCONFIGURE_SPECS="\"@CONFIGURE_SPECS@\""
27976  
27977  gcc.o: gcc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h multilib.h \
27978      Makefile $(lang_specs_files) specs.h prefix.h $(GCC_H) $(FLAGS_H) \
27979 @@ -2176,6 +2202,9 @@
27980     alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) $(HASHTAB_H) $(GIMPLE_H) \
27981     $(TREE_INLINE_H) tree-iterator.h tree-ssa-sccvn.h $(PARAMS_H) \
27982     $(DBGCNT_H)
27983 +tree-ssa-remove-local-statics.o: tree-ssa-remove-local-statics.c \
27984 +   coretypes.h $(CONFIG_H) $(SYSTEM_H) $(BASIC_BLOCK_H) tree.h tree-pass.h \
27985 +   $(TM_H) $(HASHTAB_H) $(BASIC_BLOCK_H)
27986  tree-ssa-sccvn.o : tree-ssa-sccvn.c $(TREE_FLOW_H) $(CONFIG_H) \
27987     $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(FIBHEAP_H) \
27988     $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(CFGLOOP_H) \
27989 @@ -2271,6 +2300,12 @@
27990     $(CFGLOOP_H) $(PARAMS_H) langhooks.h $(BASIC_BLOCK_H) hard-reg-set.h \
27991     tree-chrec.h $(TOPLEV_H) langhooks.h $(TREE_INLINE_H) $(TREE_DATA_REF_H) \
27992     $(OPTABS_H)
27993 +tree-ssa-loop-promote.o: tree-ssa-loop-promote.c \
27994 +   coretypes.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TOPLEV_H) \
27995 +   $(RTL_H) $(TM_P_H) hard-reg-set.h $(OBSTACK_H) $(BASIC_BLOCK_H) \
27996 +   pointer-set.h intl.h $(TREE_H) $(GIMPLE_H) $(HASHTAB_H) $(DIAGNOSTIC_H) \
27997 +   $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(FLAGS_H) $(TIMEVAR_H) \
27998 +   tree-pass.h $(TM_H)
27999  tree-predcom.o: tree-predcom.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) \
28000     $(CFGLOOP_H) $(TREE_FLOW_H) $(GGC_H) $(TREE_DATA_REF_H) $(SCEV_H) \
28001     $(PARAMS_H) $(DIAGNOSTIC_H) tree-pass.h $(TM_H) coretypes.h tree-affine.h \
28002 @@ -2865,7 +2900,7 @@
28003     $(RTL_H) $(REAL_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \
28004     hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \
28005     $(FUNCTION_H) $(TOPLEV_H) cselib.h $(TM_P_H) except.h $(TREE_H) $(MACHMODE_H) \
28006 -   $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h $(DF_H) $(DBGCNT_H)
28007 +   $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h addresses.h $(DF_H) $(DBGCNT_H)
28008  postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
28009     $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
28010     $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
28011 @@ -3582,7 +3617,7 @@
28012  # be rebuilt.
28013  
28014  # Build the include directories.
28015 -stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H) fixinc_list
28016 +stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H)
28017  # Copy in the headers provided with gcc.
28018  # The sed command gets just the last file name component;
28019  # this is necessary because VPATH could add a dirname.
28020 @@ -3601,21 +3636,23 @@
28021         done
28022         rm -f include/unwind.h
28023         cp $(UNWIND_H) include/unwind.h
28024 -       set -e; for ml in `cat fixinc_list`; do \
28025 -         sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
28026 -         multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
28027 -         fix_dir=include-fixed$${multi_dir}; \
28028 -         if $(LIMITS_H_TEST) ; then \
28029 -           cat $(srcdir)/limitx.h $(srcdir)/glimits.h $(srcdir)/limity.h > tmp-xlimits.h; \
28030 -         else \
28031 -           cat $(srcdir)/glimits.h > tmp-xlimits.h; \
28032 -         fi; \
28033 -         $(mkinstalldirs) $${fix_dir}; \
28034 -         chmod a+rx $${fix_dir} || true; \
28035 -         rm -f $${fix_dir}/limits.h; \
28036 -         mv tmp-xlimits.h $${fix_dir}/limits.h; \
28037 -         chmod a+r $${fix_dir}/limits.h; \
28038 -       done
28039 +       set -e; if [ -f fixinc_list ] ; then \
28040 +         for ml in `cat fixinc_list`; do \
28041 +           sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
28042 +           multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
28043 +           fix_dir=include-fixed$${multi_dir}; \
28044 +           if $(LIMITS_H_TEST) ; then \
28045 +             cat $(srcdir)/limitx.h $(srcdir)/glimits.h $(srcdir)/limity.h > tmp-xlimits.h; \
28046 +           else \
28047 +             cat $(srcdir)/glimits.h > tmp-xlimits.h; \
28048 +           fi; \
28049 +           $(mkinstalldirs) $${fix_dir}; \
28050 +           chmod a+rx $${fix_dir} || true; \
28051 +           rm -f $${fix_dir}/limits.h; \
28052 +           mv tmp-xlimits.h $${fix_dir}/limits.h; \
28053 +           chmod a+r $${fix_dir}/limits.h; \
28054 +         done; \
28055 +       fi
28056  # Install the README
28057         rm -f include-fixed/README
28058         cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README
28059 @@ -4340,16 +4377,18 @@
28060  
28061  # Install supporting files for fixincludes to be run later.
28062  install-mkheaders: stmp-int-hdrs $(STMP_FIXPROTO) install-itoolsdirs \
28063 -  macro_list fixinc_list
28064 +  macro_list
28065         $(INSTALL_DATA) $(srcdir)/gsyslimits.h \
28066           $(DESTDIR)$(itoolsdatadir)/gsyslimits.h
28067         $(INSTALL_DATA) macro_list $(DESTDIR)$(itoolsdatadir)/macro_list
28068 -       $(INSTALL_DATA) fixinc_list $(DESTDIR)$(itoolsdatadir)/fixinc_list
28069 -       set -e; for ml in `cat fixinc_list`; do \
28070 -         multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
28071 -         $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}; \
28072 -         $(INSTALL_DATA) include-fixed$${multidir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \
28073 -       done
28074 +       set -e; if [ -f fixinc_list ] ; then \
28075 +         $(INSTALL_DATA) fixinc_list $(DESTDIR)$(itoolsdatadir)/fixinc_list; \
28076 +         for ml in `cat fixinc_list`; do \
28077 +           multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
28078 +           $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}; \
28079 +           $(INSTALL_DATA) include-fixed$${multidir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \
28080 +         done; \
28081 +       fi
28082         $(INSTALL_SCRIPT) $(srcdir)/../mkinstalldirs \
28083                 $(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
28084         if [ x$(STMP_FIXPROTO) != x ] ; then \
28085 diff -Nur a/gcc/modulo-sched.c b/gcc/modulo-sched.c
28086 --- a/gcc/modulo-sched.c        2008-09-01 10:57:00.000000000 +0200
28087 +++ b/gcc/modulo-sched.c        2010-01-25 09:50:29.155687438 +0100
28088 @@ -270,6 +270,7 @@
28089    NULL,
28090    sms_print_insn,
28091    NULL,
28092 +  NULL, /* insn_finishes_block_p */
28093    NULL, NULL,
28094    NULL, NULL,
28095    0, 0,
28096 diff -Nur a/gcc/optabs.c b/gcc/optabs.c
28097 --- a/gcc/optabs.c      2009-03-17 18:46:23.000000000 +0100
28098 +++ b/gcc/optabs.c      2010-01-25 09:50:29.155687438 +0100
28099 @@ -3300,7 +3300,8 @@
28100        if (unoptab == ffs_optab || unoptab == clz_optab || unoptab == ctz_optab
28101           || unoptab == popcount_optab || unoptab == parity_optab)
28102         outmode
28103 -           = GET_MODE (hard_libcall_value (TYPE_MODE (integer_type_node)));
28104 +         = GET_MODE (hard_libcall_value (TYPE_MODE (integer_type_node),
28105 +                                         optab_libfunc (unoptab, mode)));
28106  
28107        start_sequence ();
28108  
28109 @@ -4357,10 +4358,12 @@
28110         mode != VOIDmode;
28111         mode = GET_MODE_WIDER_MODE (mode))
28112      {
28113 -      if ((libfunc = optab_libfunc (code_to_optab[comparison], mode)))
28114 +      if (code_to_optab[comparison]
28115 +         && (libfunc = optab_libfunc (code_to_optab[comparison], mode)))
28116         break;
28117  
28118 -      if ((libfunc = optab_libfunc (code_to_optab[swapped] , mode)))
28119 +      if (code_to_optab[swapped]
28120 +         && (libfunc = optab_libfunc (code_to_optab[swapped], mode)))
28121         {
28122           rtx tmp;
28123           tmp = x; x = y; y = tmp;
28124 @@ -4368,7 +4371,8 @@
28125           break;
28126         }
28127  
28128 -      if ((libfunc = optab_libfunc (code_to_optab[reversed], mode))
28129 +      if (code_to_optab[reversed]
28130 +         && (libfunc = optab_libfunc (code_to_optab[reversed], mode))
28131           && FLOAT_LIB_COMPARE_RETURNS_BOOL (mode, reversed))
28132         {
28133           comparison = reversed;
28134 diff -Nur a/gcc/opts.c b/gcc/opts.c
28135 --- a/gcc/opts.c        2009-03-28 18:28:45.000000000 +0100
28136 +++ b/gcc/opts.c        2010-01-25 09:50:29.155687438 +0100
28137 @@ -904,7 +904,7 @@
28138    flag_tree_vrp = opt2;
28139    flag_tree_builtin_call_dce = opt2;
28140    flag_tree_pre = opt2;
28141 -  flag_tree_switch_conversion = 1;
28142 +  flag_tree_switch_conversion = opt2;
28143    flag_ipa_cp = opt2;
28144  
28145    /* Allow more virtual operators to increase alias precision.  */
28146 @@ -928,6 +928,7 @@
28147    flag_gcse_after_reload = opt3;
28148    flag_tree_vectorize = opt3;
28149    flag_ipa_cp_clone = opt3;
28150 +  flag_tree_pre_partial_partial = opt3;
28151    if (flag_ipa_cp_clone)
28152      flag_ipa_cp = 1;
28153  
28154 @@ -951,10 +952,13 @@
28155          being declared inline.  */
28156        flag_inline_functions = 1;
28157  
28158 -      /* Basic optimization options.  */
28159 -      optimize_size = 1;
28160 +      /* Basic optimization options at -Os are almost the same as -O2.  The
28161 +        only difference is that we disable PRE, because it sometimes still
28162 +        increases code size.  If the user want to run PRE with -Os, he/she
28163 +        will have to indicate so explicitly.  */
28164        if (optimize > 2)
28165         optimize = 2;
28166 +      flag_tree_pre = 0;
28167  
28168        /* We want to crossjump as much as possible.  */
28169        set_param_value ("min-crossjump-insns", 1);
28170 @@ -2060,6 +2064,10 @@
28171        /* These are no-ops, preserved for backward compatibility.  */
28172        break;
28173  
28174 +    case OPT_feglibc_:
28175 +      /* This is a no-op at the moment.  */
28176 +      break;
28177 +
28178      default:
28179        /* If the flag was handled in a standard way, assume the lack of
28180          processing here is intentional.  */
28181 diff -Nur a/gcc/passes.c b/gcc/passes.c
28182 --- a/gcc/passes.c      2009-02-20 16:20:38.000000000 +0100
28183 +++ b/gcc/passes.c      2010-01-25 09:50:29.155687438 +0100
28184 @@ -591,6 +591,7 @@
28185        NEXT_PASS (pass_rename_ssa_copies);
28186        NEXT_PASS (pass_complete_unrolli);
28187        NEXT_PASS (pass_ccp);
28188 +      NEXT_PASS (pass_promote_indices);
28189        NEXT_PASS (pass_forwprop);
28190        /* Ideally the function call conditional
28191          dead code elimination phase can be delayed
28192 @@ -605,6 +606,7 @@
28193          alias information also rewrites no longer addressed
28194          locals into SSA form if possible.  */
28195        NEXT_PASS (pass_build_alias);
28196 +      NEXT_PASS (pass_remove_local_statics);
28197        NEXT_PASS (pass_return_slot);
28198        NEXT_PASS (pass_phiprop);
28199        NEXT_PASS (pass_fre);
28200 diff -Nur a/gcc/pointer-set.c b/gcc/pointer-set.c
28201 --- a/gcc/pointer-set.c 2007-08-16 16:31:21.000000000 +0200
28202 +++ b/gcc/pointer-set.c 2010-01-25 09:50:29.155687438 +0100
28203 @@ -181,6 +181,23 @@
28204        break;
28205  }
28206  
28207 +/* Return the number of elements in PSET.  */
28208 +
28209 +size_t
28210 +pointer_set_n_elements (struct pointer_set_t *pset)
28211 +{
28212 +  return pset->n_elements;
28213 +}
28214 +
28215 +/* Remove all entries from PSET.  */
28216 +
28217 +void
28218 +pointer_set_clear (struct pointer_set_t *pset)
28219 +{
28220 +  pset->n_elements = 0;
28221 +  memset (pset->slots, 0, sizeof (pset->slots[0]) * pset->n_slots);
28222 +}
28223 +
28224  \f
28225  /* A pointer map is represented the same way as a pointer_set, so
28226     the hash code is based on the address of the key, rather than
28227 @@ -301,3 +318,20 @@
28228      if (pmap->keys[i] && !fn (pmap->keys[i], &pmap->values[i], data))
28229        break;
28230  }
28231 +
28232 +/* Return the number of elements in PMAP.  */
28233 +
28234 +size_t
28235 +pointer_map_n_elements (struct pointer_map_t *pmap)
28236 +{
28237 +  return pmap->n_elements;
28238 +}
28239 +
28240 +/* Remove all entries from PMAP.  */
28241 +
28242 +void pointer_map_clear (struct pointer_map_t *pmap)
28243 +{
28244 +  pmap->n_elements = 0;
28245 +  memset (pmap->keys, 0, sizeof (pmap->keys[0]) * pmap->n_slots);
28246 +  memset (pmap->values, 0, sizeof (pmap->values[0]) * pmap->n_slots);
28247 +}
28248 diff -Nur a/gcc/pointer-set.h b/gcc/pointer-set.h
28249 --- a/gcc/pointer-set.h 2007-08-16 16:31:21.000000000 +0200
28250 +++ b/gcc/pointer-set.h 2010-01-25 09:50:29.155687438 +0100
28251 @@ -29,6 +29,8 @@
28252  void pointer_set_traverse (const struct pointer_set_t *,
28253                            bool (*) (const void *, void *),
28254                            void *);
28255 +size_t pointer_set_n_elements (struct pointer_set_t *);
28256 +void pointer_set_clear (struct pointer_set_t *);
28257  
28258  struct pointer_map_t;
28259  struct pointer_map_t *pointer_map_create (void);
28260 @@ -38,5 +40,7 @@
28261  void **pointer_map_insert (struct pointer_map_t *pmap, const void *p);
28262  void pointer_map_traverse (const struct pointer_map_t *,
28263                            bool (*) (const void *, void **, void *), void *);
28264 +size_t pointer_map_n_elements (struct pointer_map_t *);
28265 +void pointer_map_clear (struct pointer_map_t *);
28266  
28267  #endif  /* POINTER_SET_H  */
28268 diff -Nur a/gcc/postreload.c b/gcc/postreload.c
28269 --- a/gcc/postreload.c  2008-08-31 11:44:25.000000000 +0200
28270 +++ b/gcc/postreload.c  2010-01-25 09:50:29.155687438 +0100
28271 @@ -46,6 +46,7 @@
28272  #include "tree.h"
28273  #include "timevar.h"
28274  #include "tree-pass.h"
28275 +#include "addresses.h"
28276  #include "df.h"
28277  #include "dbgcnt.h"
28278  
28279 @@ -708,17 +709,19 @@
28280    int last_label_ruid;
28281    int min_labelno, n_labels;
28282    HARD_REG_SET ever_live_at_start, *label_live;
28283 +  enum reg_class index_regs;
28284  
28285    /* If reg+reg can be used in offsetable memory addresses, the main chunk of
28286       reload has already used it where appropriate, so there is no use in
28287       trying to generate it now.  */
28288 -  if (double_reg_address_ok && INDEX_REG_CLASS != NO_REGS)
28289 +  index_regs = index_reg_class (VOIDmode);
28290 +  if (double_reg_address_ok && index_regs != NO_REGS)
28291      return;
28292  
28293    /* To avoid wasting too much time later searching for an index register,
28294       determine the minimum and maximum index register numbers.  */
28295    for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
28296 -    if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], r))
28297 +    if (TEST_HARD_REG_BIT (reg_class_contents[index_regs], r))
28298        {
28299         if (first_index_reg == -1)
28300           first_index_reg = r;
28301 @@ -826,8 +829,8 @@
28302              substitute uses of REG (typically in MEMs) with.
28303              First check REG and BASE for being index registers;
28304              we can use them even if they are not dead.  */
28305 -         if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], regno)
28306 -             || TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS],
28307 +         if (TEST_HARD_REG_BIT (reg_class_contents[index_regs], regno)
28308 +             || TEST_HARD_REG_BIT (reg_class_contents[index_regs],
28309                                     REGNO (base)))
28310             {
28311               const_reg = reg;
28312 @@ -841,8 +844,7 @@
28313                  two registers.  */
28314               for (i = first_index_reg; i <= last_index_reg; i++)
28315                 {
28316 -                 if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS],
28317 -                                        i)
28318 +                 if (TEST_HARD_REG_BIT (reg_class_contents[index_regs], i)
28319                       && reg_state[i].use_index == RELOAD_COMBINE_MAX_USES
28320                       && reg_state[i].store_ruid <= reg_state[regno].use_ruid
28321                       && hard_regno_nregs[i][GET_MODE (reg)] == 1)
28322 diff -Nur a/gcc/real.c b/gcc/real.c
28323 --- a/gcc/real.c        2009-02-06 22:01:46.000000000 +0100
28324 +++ b/gcc/real.c        2010-01-25 09:50:29.155687438 +0100
28325 @@ -4513,6 +4513,167 @@
28326      false
28327    };
28328  \f
28329 +/* Encode half-precision floats.  This routine is used both for the IEEE
28330 +   ARM alternative encodings.  */
28331 +static void
28332 +encode_ieee_half (const struct real_format *fmt, long *buf,
28333 +                 const REAL_VALUE_TYPE *r)
28334 +{
28335 +  unsigned long image, sig, exp;
28336 +  unsigned long sign = r->sign;
28337 +  bool denormal = (r->sig[SIGSZ-1] & SIG_MSB) == 0;
28338 +
28339 +  image = sign << 15;
28340 +  sig = (r->sig[SIGSZ-1] >> (HOST_BITS_PER_LONG - 11)) & 0x3ff;
28341 +
28342 +  switch (r->cl)
28343 +    {
28344 +    case rvc_zero:
28345 +      break;
28346 +
28347 +    case rvc_inf:
28348 +      if (fmt->has_inf)
28349 +       image |= 31 << 10;
28350 +      else
28351 +       image |= 0x7fff;
28352 +      break;
28353 +
28354 +    case rvc_nan:
28355 +      if (fmt->has_nans)
28356 +       {
28357 +         if (r->canonical)
28358 +           sig = (fmt->canonical_nan_lsbs_set ? (1 << 9) - 1 : 0);
28359 +         if (r->signalling == fmt->qnan_msb_set)
28360 +           sig &= ~(1 << 9);
28361 +         else
28362 +           sig |= 1 << 9;
28363 +         if (sig == 0)
28364 +           sig = 1 << 8;
28365 +
28366 +         image |= 31 << 10;
28367 +         image |= sig;
28368 +       }
28369 +      else
28370 +       image |= 0x3ff;
28371 +      break;
28372 +
28373 +    case rvc_normal:
28374 +      /* Recall that IEEE numbers are interpreted as 1.F x 2**exp,
28375 +        whereas the intermediate representation is 0.F x 2**exp.
28376 +        Which means we're off by one.  */
28377 +      if (denormal)
28378 +       exp = 0;
28379 +      else
28380 +       exp = REAL_EXP (r) + 15 - 1;
28381 +      image |= exp << 10;
28382 +      image |= sig;
28383 +      break;
28384 +
28385 +    default:
28386 +      gcc_unreachable ();
28387 +    }
28388 +
28389 +  buf[0] = image;
28390 +}
28391 +
28392 +/* Decode half-precision floats.  This routine is used both for the IEEE
28393 +   ARM alternative encodings.  */
28394 +static void
28395 +decode_ieee_half (const struct real_format *fmt, REAL_VALUE_TYPE *r,
28396 +                 const long *buf)
28397 +{
28398 +  unsigned long image = buf[0] & 0xffff;
28399 +  bool sign = (image >> 15) & 1;
28400 +  int exp = (image >> 10) & 0x1f;
28401 +
28402 +  memset (r, 0, sizeof (*r));
28403 +  image <<= HOST_BITS_PER_LONG - 11;
28404 +  image &= ~SIG_MSB;
28405 +
28406 +  if (exp == 0)
28407 +    {
28408 +      if (image && fmt->has_denorm)
28409 +       {
28410 +         r->cl = rvc_normal;
28411 +         r->sign = sign;
28412 +         SET_REAL_EXP (r, -14);
28413 +         r->sig[SIGSZ-1] = image << 1;
28414 +         normalize (r);
28415 +       }
28416 +      else if (fmt->has_signed_zero)
28417 +       r->sign = sign;
28418 +    }
28419 +  else if (exp == 31 && (fmt->has_nans || fmt->has_inf))
28420 +    {
28421 +      if (image)
28422 +       {
28423 +         r->cl = rvc_nan;
28424 +         r->sign = sign;
28425 +         r->signalling = (((image >> (HOST_BITS_PER_LONG - 2)) & 1)
28426 +                          ^ fmt->qnan_msb_set);
28427 +         r->sig[SIGSZ-1] = image;
28428 +       }
28429 +      else
28430 +       {
28431 +         r->cl = rvc_inf;
28432 +         r->sign = sign;
28433 +       }
28434 +    }
28435 +  else
28436 +    {
28437 +      r->cl = rvc_normal;
28438 +      r->sign = sign;
28439 +      SET_REAL_EXP (r, exp - 15 + 1);
28440 +      r->sig[SIGSZ-1] = image | SIG_MSB;
28441 +    }
28442 +}
28443 +
28444 +/* Half-precision format, as specified in IEEE 754R.  */
28445 +const struct real_format ieee_half_format =
28446 +  {
28447 +    encode_ieee_half,
28448 +    decode_ieee_half,
28449 +    2,
28450 +    11,
28451 +    11,
28452 +    -13,
28453 +    16,
28454 +    15,
28455 +    15,
28456 +    false,
28457 +    true,
28458 +    true,
28459 +    true,
28460 +    true,
28461 +    true,
28462 +    true,
28463 +    false
28464 +  };
28465 +
28466 +/* ARM's alternative half-precision format, similar to IEEE but with
28467 +   no reserved exponent value for NaNs and infinities; rather, it just
28468 +   extends the range of exponents by one.  */
28469 +const struct real_format arm_half_format =
28470 +  {
28471 +    encode_ieee_half,
28472 +    decode_ieee_half,
28473 +    2,
28474 +    11,
28475 +    11,
28476 +    -13,
28477 +    17,
28478 +    15,
28479 +    15,
28480 +    false,
28481 +    true,
28482 +    false,
28483 +    false,
28484 +    true,
28485 +    true,
28486 +    false,
28487 +    false
28488 +  };
28489 +\f
28490  /* A synthetic "format" for internal arithmetic.  It's the size of the
28491     internal significand minus the two bits needed for proper rounding.
28492     The encode and decode routines exist only to satisfy our paranoia
28493 diff -Nur a/gcc/real.h b/gcc/real.h
28494 --- a/gcc/real.h        2008-10-29 18:05:42.000000000 +0100
28495 +++ b/gcc/real.h        2010-01-25 09:50:29.155687438 +0100
28496 @@ -304,6 +304,8 @@
28497  extern const struct real_format decimal_single_format;
28498  extern const struct real_format decimal_double_format;
28499  extern const struct real_format decimal_quad_format;
28500 +extern const struct real_format ieee_half_format;
28501 +extern const struct real_format arm_half_format;
28502  
28503  
28504  /* ====================================================================== */
28505 diff -Nur a/gcc/regrename.c b/gcc/regrename.c
28506 --- a/gcc/regrename.c   2009-02-20 16:20:38.000000000 +0100
28507 +++ b/gcc/regrename.c   2010-01-25 09:50:29.155687438 +0100
28508 @@ -567,14 +567,14 @@
28509             int index_op;
28510             unsigned regno0 = REGNO (op0), regno1 = REGNO (op1);
28511  
28512 -           if (REGNO_OK_FOR_INDEX_P (regno1)
28513 +           if (regno_ok_for_index_p (regno1, mode)
28514                 && regno_ok_for_base_p (regno0, mode, PLUS, REG))
28515               index_op = 1;
28516 -           else if (REGNO_OK_FOR_INDEX_P (regno0)
28517 +           else if (regno_ok_for_index_p (regno0, mode)
28518                      && regno_ok_for_base_p (regno1, mode, PLUS, REG))
28519               index_op = 0;
28520             else if (regno_ok_for_base_p (regno0, mode, PLUS, REG)
28521 -                    || REGNO_OK_FOR_INDEX_P (regno1))
28522 +                    || regno_ok_for_index_p (regno1, mode))
28523               index_op = 1;
28524             else if (regno_ok_for_base_p (regno1, mode, PLUS, REG))
28525               index_op = 0;
28526 @@ -599,7 +599,7 @@
28527           }
28528  
28529         if (locI)
28530 -         scan_rtx_address (insn, locI, INDEX_REG_CLASS, action, mode);
28531 +         scan_rtx_address (insn, locI, index_reg_class (mode), action, mode);
28532         if (locB)
28533           scan_rtx_address (insn, locB, base_reg_class (mode, PLUS, index_code),
28534                             action, mode);
28535 @@ -1488,14 +1488,14 @@
28536             int index_op;
28537             unsigned regno0 = REGNO (op0), regno1 = REGNO (op1);
28538  
28539 -           if (REGNO_OK_FOR_INDEX_P (regno1)
28540 +           if (regno_ok_for_index_p (regno1, mode)
28541                 && regno_ok_for_base_p (regno0, mode, PLUS, REG))
28542               index_op = 1;
28543 -           else if (REGNO_OK_FOR_INDEX_P (regno0)
28544 +           else if (regno_ok_for_index_p (regno0, mode)
28545                      && regno_ok_for_base_p (regno1, mode, PLUS, REG))
28546               index_op = 0;
28547             else if (regno_ok_for_base_p (regno0, mode, PLUS, REG)
28548 -                    || REGNO_OK_FOR_INDEX_P (regno1))
28549 +                    || regno_ok_for_index_p (regno1, mode))
28550               index_op = 1;
28551             else if (regno_ok_for_base_p (regno1, mode, PLUS, REG))
28552               index_op = 0;
28553 @@ -1520,8 +1520,8 @@
28554           }
28555  
28556         if (locI)
28557 -         changed |= replace_oldest_value_addr (locI, INDEX_REG_CLASS, mode,
28558 -                                               insn, vd);
28559 +         changed |= replace_oldest_value_addr (locI, index_reg_class (mode),
28560 +                                               mode, insn, vd);
28561         if (locB)
28562           changed |= replace_oldest_value_addr (locB,
28563                                                 base_reg_class (mode, PLUS,
28564 diff -Nur a/gcc/reload.c b/gcc/reload.c
28565 --- a/gcc/reload.c      2009-02-20 16:20:38.000000000 +0100
28566 +++ b/gcc/reload.c      2010-01-25 09:50:29.155687438 +0100
28567 @@ -5046,7 +5046,7 @@
28568             loc = &XEXP (*loc, 0);
28569         }
28570  
28571 -      if (double_reg_address_ok)
28572 +      if (double_reg_address_ok && index_reg_class (mode) != NO_REGS)
28573         {
28574           /* Unshare the sum as well.  */
28575           *loc = ad = copy_rtx (ad);
28576 @@ -5054,8 +5054,8 @@
28577           /* Reload the displacement into an index reg.
28578              We assume the frame pointer or arg pointer is a base reg.  */
28579           find_reloads_address_part (XEXP (ad, 1), &XEXP (ad, 1),
28580 -                                    INDEX_REG_CLASS, GET_MODE (ad), opnum,
28581 -                                    type, ind_levels);
28582 +                                    index_reg_class (mode), GET_MODE (ad),
28583 +                                    opnum, type, ind_levels);
28584           return 0;
28585         }
28586        else
28587 @@ -5448,13 +5448,13 @@
28588  #define REG_OK_FOR_CONTEXT(CONTEXT, REGNO, MODE, OUTER, INDEX)         \
28589    ((CONTEXT) == 0                                                      \
28590     ? regno_ok_for_base_p (REGNO, MODE, OUTER, INDEX)                   \
28591 -   : REGNO_OK_FOR_INDEX_P (REGNO))                                     
28592 +   : regno_ok_for_index_p (REGNO, MODE))
28593  
28594    enum reg_class context_reg_class;
28595    RTX_CODE code = GET_CODE (x);
28596  
28597    if (context == 1)
28598 -    context_reg_class = INDEX_REG_CLASS;
28599 +    context_reg_class = index_reg_class (mode);
28600    else
28601      context_reg_class = base_reg_class (mode, outer_code, index_code);
28602  
28603 @@ -5546,17 +5546,17 @@
28604  
28605         else if (code0 == REG && code1 == REG)
28606           {
28607 -           if (REGNO_OK_FOR_INDEX_P (REGNO (op1))
28608 +           if (regno_ok_for_index_p (REGNO (op1), mode)
28609                 && regno_ok_for_base_p (REGNO (op0), mode, PLUS, REG))
28610               return 0;
28611 -           else if (REGNO_OK_FOR_INDEX_P (REGNO (op0))
28612 +           else if (regno_ok_for_index_p (REGNO (op0), mode)
28613                      && regno_ok_for_base_p (REGNO (op1), mode, PLUS, REG))
28614               return 0;
28615             else if (regno_ok_for_base_p (REGNO (op0), mode, PLUS, REG))
28616               find_reloads_address_1 (mode, orig_op1, 1, PLUS, SCRATCH,
28617                                       &XEXP (x, 1), opnum, type, ind_levels,
28618                                       insn);
28619 -           else if (REGNO_OK_FOR_INDEX_P (REGNO (op1)))
28620 +           else if (regno_ok_for_index_p (REGNO (op1), mode))
28621               find_reloads_address_1 (mode, orig_op0, 0, PLUS, REG,
28622                                       &XEXP (x, 0), opnum, type, ind_levels,
28623                                       insn);
28624 @@ -5564,7 +5564,7 @@
28625               find_reloads_address_1 (mode, orig_op0, 1, PLUS, SCRATCH,
28626                                       &XEXP (x, 0), opnum, type, ind_levels,
28627                                       insn);
28628 -           else if (REGNO_OK_FOR_INDEX_P (REGNO (op0)))
28629 +           else if (regno_ok_for_index_p (REGNO (op0), mode))
28630               find_reloads_address_1 (mode, orig_op1, 0, PLUS, REG,
28631                                       &XEXP (x, 1), opnum, type, ind_levels,
28632                                       insn);
28633 @@ -5634,7 +5634,7 @@
28634            need to live longer than a TYPE reload normally would, so be
28635            conservative and class it as RELOAD_OTHER.  */
28636         if ((REG_P (XEXP (op1, 1))
28637 -            && !REGNO_OK_FOR_INDEX_P (REGNO (XEXP (op1, 1))))
28638 +            && !regno_ok_for_index_p (REGNO (XEXP (op1, 1)), mode))
28639             || GET_CODE (XEXP (op1, 1)) == PLUS)
28640           find_reloads_address_1 (mode, XEXP (op1, 1), 1, code, SCRATCH,
28641                                   &XEXP (op1, 1), opnum, RELOAD_OTHER,
28642 @@ -6128,18 +6128,26 @@
28643               /* For some processors an address may be valid in the
28644                  original mode but not in a smaller mode.  For
28645                  example, ARM accepts a scaled index register in
28646 -                SImode but not in HImode.  Similarly, the address may
28647 -                have been valid before the subreg offset was added,
28648 -                but not afterwards.  find_reloads_address
28649 -                assumes that we pass it a valid address, and doesn't
28650 -                force a reload.  This will probably be fine if
28651 -                find_reloads_address finds some reloads.  But if it
28652 -                doesn't find any, then we may have just converted a
28653 -                valid address into an invalid one.  Check for that
28654 -                here.  */
28655 +                SImode but not in HImode.  Note that this is only
28656 +                a problem if the address in reg_equiv_mem is already
28657 +                invalid in the new mode; other cases would be fixed
28658 +                by find_reloads_address as usual.
28659 +
28660 +                ??? We attempt to handle such cases here by doing an
28661 +                additional reload of the full address after the
28662 +                usual processing by find_reloads_address.  Note that
28663 +                this may not work in the general case, but it seems
28664 +                to cover the cases where this situation currently
28665 +                occurs.  A more general fix might be to reload the
28666 +                *value* instead of the address, but this would not
28667 +                be expected by the callers of this routine as-is.
28668 +
28669 +                If find_reloads_address already completed replaced
28670 +                the address, there is nothing further to do.  */
28671               if (reloaded == 0
28672 -                 && !strict_memory_address_p (GET_MODE (tem),
28673 -                                              XEXP (tem, 0)))
28674 +                 && reg_equiv_mem[regno] != 0
28675 +                 && !strict_memory_address_p (GET_MODE (x),
28676 +                                              XEXP (reg_equiv_mem[regno], 0)))
28677                 push_reload (XEXP (tem, 0), NULL_RTX, &XEXP (tem, 0), (rtx*) 0,
28678                              base_reg_class (GET_MODE (tem), MEM, SCRATCH),
28679                              GET_MODE (XEXP (tem, 0)), VOIDmode, 0, 0,
28680 diff -Nur a/gcc/rtlanal.c b/gcc/rtlanal.c
28681 --- a/gcc/rtlanal.c     2009-03-14 09:10:55.000000000 +0100
28682 +++ b/gcc/rtlanal.c     2010-01-25 09:50:29.155687438 +0100
28683 @@ -2913,62 +2913,78 @@
28684  commutative_operand_precedence (rtx op)
28685  {
28686    enum rtx_code code = GET_CODE (op);
28687 +  int value;
28688    
28689    /* Constants always come the second operand.  Prefer "nice" constants.  */
28690    if (code == CONST_INT)
28691 -    return -8;
28692 -  if (code == CONST_DOUBLE)
28693 -    return -7;
28694 -  if (code == CONST_FIXED)
28695 -    return -7;
28696 -  op = avoid_constant_pool_reference (op);
28697 -  code = GET_CODE (op);
28698 -
28699 -  switch (GET_RTX_CLASS (code))
28700 -    {
28701 -    case RTX_CONST_OBJ:
28702 -      if (code == CONST_INT)
28703 -        return -6;
28704 -      if (code == CONST_DOUBLE)
28705 -        return -5;
28706 -      if (code == CONST_FIXED)
28707 -        return -5;
28708 -      return -4;
28709 -
28710 -    case RTX_EXTRA:
28711 -      /* SUBREGs of objects should come second.  */
28712 -      if (code == SUBREG && OBJECT_P (SUBREG_REG (op)))
28713 -        return -3;
28714 -      return 0;
28715 +    value = -8;
28716 +  else if (code == CONST_DOUBLE)
28717 +    value = -7;
28718 +  else if (code == CONST_FIXED)
28719 +    value = -7;
28720 +  else
28721 +    {
28722 +      op = avoid_constant_pool_reference (op);
28723 +      code = GET_CODE (op);
28724 +
28725 +      switch (GET_RTX_CLASS (code))
28726 +       {
28727 +       case RTX_CONST_OBJ:
28728 +         if (code == CONST_INT)
28729 +           value = -6;
28730 +         else if (code == CONST_DOUBLE)
28731 +           value = -5;
28732 +         else if (code == CONST_FIXED)
28733 +           value = -5;
28734 +         else
28735 +           value = -4;
28736 +         break;
28737 +
28738 +       case RTX_EXTRA:
28739 +         /* SUBREGs of objects should come second.  */
28740 +         if (code == SUBREG && OBJECT_P (SUBREG_REG (op)))
28741 +           value = -3;
28742 +         else
28743 +           value = 0;
28744 +         break;
28745 +
28746 +       case RTX_OBJ:
28747 +         /* Complex expressions should be the first, so decrease priority
28748 +            of objects.  */
28749 +         value = -1;
28750 +         break;
28751  
28752 -    case RTX_OBJ:
28753 -      /* Complex expressions should be the first, so decrease priority
28754 -         of objects.  Prefer pointer objects over non pointer objects.  */
28755 -      if ((REG_P (op) && REG_POINTER (op))
28756 -         || (MEM_P (op) && MEM_POINTER (op)))
28757 -       return -1;
28758 -      return -2;
28759 -
28760 -    case RTX_COMM_ARITH:
28761 -      /* Prefer operands that are themselves commutative to be first.
28762 -         This helps to make things linear.  In particular,
28763 -         (and (and (reg) (reg)) (not (reg))) is canonical.  */
28764 -      return 4;
28765 -
28766 -    case RTX_BIN_ARITH:
28767 -      /* If only one operand is a binary expression, it will be the first
28768 -         operand.  In particular,  (plus (minus (reg) (reg)) (neg (reg)))
28769 -         is canonical, although it will usually be further simplified.  */
28770 -      return 2;
28771 +       case RTX_COMM_ARITH:
28772 +         /* Prefer operands that are themselves commutative to be first.
28773 +            This helps to make things linear.  In particular,
28774 +            (and (and (reg) (reg)) (not (reg))) is canonical.  */
28775 +         value = 4;
28776 +         break;
28777 +
28778 +       case RTX_BIN_ARITH:
28779 +         /* If only one operand is a binary expression, it will be the first
28780 +            operand.  In particular,  (plus (minus (reg) (reg)) (neg (reg)))
28781 +            is canonical, although it will usually be further simplified.  */
28782 +         value = 2;
28783 +         break;
28784    
28785 -    case RTX_UNARY:
28786 -      /* Then prefer NEG and NOT.  */
28787 -      if (code == NEG || code == NOT)
28788 -        return 1;
28789 +       case RTX_UNARY:
28790 +         /* Then prefer NEG and NOT.  */
28791 +         if (code == NEG || code == NOT)
28792 +           value = 1;
28793 +         else
28794 +           value = 0;
28795 +         break;
28796  
28797 -    default:
28798 -      return 0;
28799 +       default:
28800 +         value = 0;
28801 +       }
28802      }
28803 +
28804 +  if (targetm.commutative_operand_precedence)
28805 +    value = targetm.commutative_operand_precedence (op, value);
28806 +
28807 +  return value;
28808  }
28809  
28810  /* Return 1 iff it is necessary to swap operands of commutative operation
28811 diff -Nur a/gcc/rtl.def b/gcc/rtl.def
28812 --- a/gcc/rtl.def       2008-02-26 17:05:24.000000000 +0100
28813 +++ b/gcc/rtl.def       2010-01-25 09:50:29.155687438 +0100
28814 @@ -1088,7 +1088,11 @@
28815     guard for the bypass.  The function will get the two insns as
28816     parameters.  If the function returns zero the bypass will be
28817     ignored for this case.  Additional guard is necessary to recognize
28818 -   complicated bypasses, e.g. when consumer is load address.  */
28819 +   complicated bypasses, e.g. when consumer is load address.  If there
28820 +   are more one bypass with the same output and input insns, the
28821 +   chosen bypass is the first bypass with a guard in description whose
28822 +   guard function returns nonzero.  If there is no such bypass, then
28823 +   bypass without the guard function is chosen.  */
28824  DEF_RTL_EXPR(DEFINE_BYPASS, "define_bypass", "issS", RTX_EXTRA)
28825  
28826  /* (define_automaton string) describes names of automata generated and
28827 diff -Nur a/gcc/sched-ebb.c b/gcc/sched-ebb.c
28828 --- a/gcc/sched-ebb.c   2009-02-20 16:20:38.000000000 +0100
28829 +++ b/gcc/sched-ebb.c   2010-01-25 09:50:29.155687438 +0100
28830 @@ -286,6 +286,7 @@
28831    rank,
28832    ebb_print_insn,
28833    ebb_contributes_to_priority,
28834 +  NULL, /* insn_finishes_block_p */
28835  
28836    NULL, NULL,
28837    NULL, NULL,
28838 diff -Nur a/gcc/sched-int.h b/gcc/sched-int.h
28839 --- a/gcc/sched-int.h   2009-02-20 16:20:38.000000000 +0100
28840 +++ b/gcc/sched-int.h   2010-01-25 09:50:29.155687438 +0100
28841 @@ -558,6 +558,10 @@
28842       calculations.  */
28843    int (*contributes_to_priority) (rtx, rtx);
28844  
28845 +  /* Return true if scheduling insn (passed as the parameter) will trigger
28846 +     finish of scheduling current block.  */
28847 +  bool (*insn_finishes_block_p) (rtx);
28848 +
28849    /* The boundaries of the set of insns to be scheduled.  */
28850    rtx prev_head, next_tail;
28851  
28852 diff -Nur a/gcc/sched-rgn.c b/gcc/sched-rgn.c
28853 --- a/gcc/sched-rgn.c   2008-09-18 10:29:48.000000000 +0200
28854 +++ b/gcc/sched-rgn.c   2010-01-25 09:50:29.155687438 +0100
28855 @@ -2338,6 +2338,19 @@
28856      0, 0, 0
28857    };
28858  
28859 +/* Return true if scheduling INSN will trigger finish of scheduling
28860 +   current block.  */
28861 +static bool
28862 +rgn_insn_finishes_block_p (rtx insn)
28863 +{
28864 +  if (INSN_BB (insn) == target_bb
28865 +      && sched_target_n_insns + 1 == target_n_insns)
28866 +    /* INSN is the last not-scheduled instruction in the current block.  */
28867 +    return true;
28868 +
28869 +  return false;
28870 +}
28871 +
28872  /* Used in schedule_insns to initialize current_sched_info for scheduling
28873     regions (or single basic blocks).  */
28874  
28875 @@ -2350,6 +2363,7 @@
28876    rgn_rank,
28877    rgn_print_insn,
28878    contributes_to_priority,
28879 +  rgn_insn_finishes_block_p,
28880  
28881    NULL, NULL,
28882    NULL, NULL,
28883 diff -Nur a/gcc/sdbout.c b/gcc/sdbout.c
28884 --- a/gcc/sdbout.c      2009-02-20 16:20:38.000000000 +0100
28885 +++ b/gcc/sdbout.c      2010-01-25 09:50:29.155687438 +0100
28886 @@ -337,6 +337,7 @@
28887    debug_nothing_int,                    /* handle_pch */
28888    debug_nothing_rtx,                    /* var_location */
28889    debug_nothing_void,                    /* switch_text_section */
28890 +  debug_nothing_tree_tree,              /* set_name */
28891    0                                      /* start_end_main_source_file */
28892  };
28893  
28894 diff -Nur a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c
28895 --- a/gcc/sel-sched-ir.c        2008-10-12 01:39:21.000000000 +0200
28896 +++ b/gcc/sel-sched-ir.c        2010-01-25 09:50:29.165687452 +0100
28897 @@ -5431,6 +5431,7 @@
28898    NULL, /* rgn_rank */
28899    sel_print_insn, /* rgn_print_insn */
28900    contributes_to_priority,
28901 +  NULL, /* insn_finishes_block_p */
28902  
28903    NULL, NULL,
28904    NULL, NULL,
28905 diff -Nur a/gcc/target-def.h b/gcc/target-def.h
28906 --- a/gcc/target-def.h  2009-02-20 16:20:38.000000000 +0100
28907 +++ b/gcc/target-def.h  2010-01-25 09:50:29.165687452 +0100
28908 @@ -84,7 +84,7 @@
28909  #define TARGET_ASM_INTERNAL_LABEL default_internal_label
28910  #endif
28911  
28912 -#ifndef TARGET_ARM_TTYPE
28913 +#ifndef TARGET_ASM_TTYPE
28914  #define TARGET_ASM_TTYPE hook_bool_rtx_false
28915  #endif
28916  
28917 @@ -208,6 +208,10 @@
28918  #define TARGET_EXTRA_LIVE_ON_ENTRY hook_void_bitmap
28919  #endif
28920  
28921 +#ifndef TARGET_WARN_FUNC_RESULT
28922 +#define TARGET_WARN_FUNC_RESULT hook_bool_void_true
28923 +#endif
28924 +
28925  #ifndef TARGET_ASM_FILE_START_APP_OFF
28926  #define TARGET_ASM_FILE_START_APP_OFF false
28927  #endif
28928 @@ -383,6 +387,9 @@
28929  #define TARGET_VECTOR_ALIGNMENT_REACHABLE \
28930    default_builtin_vector_alignment_reachable
28931  #define TARGET_VECTORIZE_BUILTIN_VEC_PERM 0
28932 +#define TARGET_VECTOR_MIN_ALIGNMENT \
28933 +  default_vector_min_alignment
28934 +#define TARGET_VECTOR_ALWAYS_MISALIGN hook_bool_const_tree_false
28935  
28936  #define TARGET_VECTORIZE                                                \
28937    {                                                                    \
28938 @@ -393,7 +400,9 @@
28939      TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD,                            \
28940      TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST,                       \
28941      TARGET_VECTOR_ALIGNMENT_REACHABLE,                                  \
28942 -    TARGET_VECTORIZE_BUILTIN_VEC_PERM                                   \
28943 +    TARGET_VECTORIZE_BUILTIN_VEC_PERM,                                  \
28944 +    TARGET_VECTOR_MIN_ALIGNMENT,                                        \
28945 +    TARGET_VECTOR_ALWAYS_MISALIGN,                                      \
28946    }
28947  
28948  #define TARGET_DEFAULT_TARGET_FLAGS 0
28949 @@ -504,6 +513,7 @@
28950  #define TARGET_ALLOCATE_INITIAL_VALUE NULL
28951  
28952  #define TARGET_UNSPEC_MAY_TRAP_P default_unspec_may_trap_p
28953 +#define TARGET_COMMUTATIVE_OPERAND_PRECEDENCE NULL
28954  
28955  #ifndef TARGET_SET_CURRENT_FUNCTION
28956  #define TARGET_SET_CURRENT_FUNCTION hook_void_tree
28957 @@ -532,6 +542,10 @@
28958  #define TARGET_INVALID_CONVERSION hook_constcharptr_const_tree_const_tree_null
28959  #define TARGET_INVALID_UNARY_OP hook_constcharptr_int_const_tree_null
28960  #define TARGET_INVALID_BINARY_OP hook_constcharptr_int_const_tree_const_tree_null
28961 +#define TARGET_INVALID_PARAMETER_TYPE hook_constcharptr_const_tree_null
28962 +#define TARGET_INVALID_RETURN_TYPE hook_constcharptr_const_tree_null
28963 +#define TARGET_PROMOTED_TYPE hook_tree_const_tree_null
28964 +#define TARGET_CONVERT_TO_TYPE hook_tree_tree_tree_null
28965  
28966  #define TARGET_FIXED_CONDITION_CODE_REGS hook_bool_uintp_uintp_false
28967  
28968 @@ -590,6 +604,7 @@
28969  #define TARGET_ARG_PARTIAL_BYTES hook_int_CUMULATIVE_ARGS_mode_tree_bool_0
28970  
28971  #define TARGET_FUNCTION_VALUE default_function_value
28972 +#define TARGET_LIBCALL_VALUE default_libcall_value
28973  #define TARGET_INTERNAL_ARG_POINTER default_internal_arg_pointer
28974  #define TARGET_UPDATE_STACK_BOUNDARY NULL
28975  #define TARGET_GET_DRAP_RTX NULL
28976 @@ -613,6 +628,7 @@
28977     TARGET_ARG_PARTIAL_BYTES,                                   \
28978     TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN,                     \
28979     TARGET_FUNCTION_VALUE,                                      \
28980 +   TARGET_LIBCALL_VALUE,                                       \
28981     TARGET_INTERNAL_ARG_POINTER,                                        \
28982     TARGET_UPDATE_STACK_BOUNDARY,                               \
28983     TARGET_GET_DRAP_RTX,                                                \
28984 @@ -716,6 +732,11 @@
28985  #define TARGET_CXX_ADJUST_CLASS_AT_DEFINITION hook_void_tree
28986  #endif
28987  
28988 +
28989 +#ifndef TARGET_CXX_TTYPE_REF_ENCODE
28990 +#define TARGET_CXX_TTYPE_REF_ENCODE NULL
28991 +#endif
28992 +
28993  #define TARGET_CXX                             \
28994    {                                            \
28995      TARGET_CXX_GUARD_TYPE,                     \
28996 @@ -730,7 +751,8 @@
28997      TARGET_CXX_LIBRARY_RTTI_COMDAT,            \
28998      TARGET_CXX_USE_AEABI_ATEXIT,               \
28999      TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT,      \
29000 -    TARGET_CXX_ADJUST_CLASS_AT_DEFINITION      \
29001 +    TARGET_CXX_ADJUST_CLASS_AT_DEFINITION,     \
29002 +    TARGET_CXX_TTYPE_REF_ENCODE                        \
29003    }
29004  
29005  /* EMUTLS specific */
29006 @@ -886,6 +908,7 @@
29007    TARGET_ADDRESS_COST,                         \
29008    TARGET_ALLOCATE_INITIAL_VALUE,               \
29009    TARGET_UNSPEC_MAY_TRAP_P,                     \
29010 +  TARGET_COMMUTATIVE_OPERAND_PRECEDENCE,        \
29011    TARGET_DWARF_REGISTER_SPAN,                   \
29012    TARGET_INIT_DWARF_REG_SIZES_EXTRA,           \
29013    TARGET_FIXED_CONDITION_CODE_REGS,            \
29014 @@ -913,6 +936,10 @@
29015    TARGET_INVALID_CONVERSION,                   \
29016    TARGET_INVALID_UNARY_OP,                     \
29017    TARGET_INVALID_BINARY_OP,                    \
29018 +  TARGET_INVALID_PARAMETER_TYPE,               \
29019 +  TARGET_INVALID_RETURN_TYPE,                  \
29020 +  TARGET_PROMOTED_TYPE,                                \
29021 +  TARGET_CONVERT_TO_TYPE,                      \
29022    TARGET_IRA_COVER_CLASSES,                    \
29023    TARGET_SECONDARY_RELOAD,                     \
29024    TARGET_EXPAND_TO_RTL_HOOK,                   \
29025 @@ -923,6 +950,7 @@
29026    TARGET_EMUTLS,                               \
29027    TARGET_OPTION_HOOKS,                         \
29028    TARGET_EXTRA_LIVE_ON_ENTRY,                  \
29029 +  TARGET_WARN_FUNC_RESULT,                     \
29030    TARGET_UNWIND_TABLES_DEFAULT,                        \
29031    TARGET_HAVE_NAMED_SECTIONS,                  \
29032    TARGET_HAVE_SWITCHABLE_BSS_SECTIONS,         \
29033 diff -Nur a/gcc/target.h b/gcc/target.h
29034 --- a/gcc/target.h      2009-02-20 16:20:38.000000000 +0100
29035 +++ b/gcc/target.h      2010-01-25 09:50:29.165687452 +0100
29036 @@ -473,7 +473,16 @@
29037  
29038      /* Target builtin that implements vector permute.  */
29039      tree (* builtin_vec_perm) (tree, tree*);
29040 -} vectorize;
29041 +
29042 +    /* Return the minimum alignment required to load or store a
29043 +       vector of the given type, which may be less than the
29044 +       natural alignment of the type.  */
29045 +    int (* vector_min_alignment) (const_tree);
29046 +
29047 +    /* Return true if "movmisalign" patterns should be used for all
29048 +       loads/stores from data arrays.  */
29049 +    bool (* always_misalign) (const_tree);
29050 +  } vectorize;
29051  
29052    /* The initial value of target_flags.  */
29053    int default_target_flags;
29054 @@ -694,6 +703,10 @@
29055       FLAGS has the same meaning as in rtlanal.c: may_trap_p_1.  */
29056    int (* unspec_may_trap_p) (const_rtx x, unsigned flags);
29057  
29058 +  /* Return a value indicating whether an operand of a commutative
29059 +     operation is preferred as the first or second operand.  */
29060 +  int (* commutative_operand_precedence) (const_rtx, int);
29061 +
29062    /* Given a register, this hook should return a parallel of registers
29063       to represent where to find the register pieces.  Define this hook
29064       if the register and its mode are represented in Dwarf in
29065 @@ -870,6 +883,10 @@
29066      rtx (*function_value) (const_tree ret_type, const_tree fn_decl_or_type,
29067                            bool outgoing);
29068  
29069 +    /* Return the rtx for the result of a libcall of mode MODE,
29070 +       calling the function FN_NAME.  */
29071 +    rtx (*libcall_value) (enum machine_mode, rtx);
29072 +
29073      /* Return an rtx for the argument pointer incoming to the
29074         current function.  */
29075      rtx (*internal_arg_pointer) (void);
29076 @@ -899,6 +916,24 @@
29077       is not permitted on TYPE1 and TYPE2, NULL otherwise.  */
29078    const char *(*invalid_binary_op) (int op, const_tree type1, const_tree type2);
29079  
29080 +  /* Return the diagnostic message string if TYPE is not valid as a
29081 +     function parameter type, NULL otherwise.  */
29082 +  const char *(*invalid_parameter_type) (const_tree type);
29083 +
29084 +  /* Return the diagnostic message string if TYPE is not valid as a
29085 +     function return type, NULL otherwise.  */
29086 +  const char *(*invalid_return_type) (const_tree type);
29087 +
29088 +  /* If values of TYPE are promoted to some other type when used in
29089 +     expressions (analogous to the integer promotions), return that type,
29090 +     or NULL_TREE otherwise.  */
29091 +  tree (*promoted_type) (const_tree type);
29092 +
29093 +  /* Convert EXPR to TYPE, if target-specific types with special conversion
29094 +     rules are involved.  Return the converted expression, or NULL to apply
29095 +     the standard conversion rules.  */
29096 +  tree (*convert_to_type) (tree type, tree expr);
29097 +
29098    /* Return the array of IRA cover classes for the current target.  */
29099    const enum reg_class *(*ira_cover_classes) (void);
29100  
29101 @@ -977,6 +1012,11 @@
29102         class  (eg, tweak visibility or perform any other required
29103         target modifications).  */
29104      void (*adjust_class_at_definition) (tree type);
29105 +    /* Encode a reference type info, used for catching pointer
29106 +       references.  The provided expression will be the address of the
29107 +       type info object of the type to which a reference is being
29108 +       caught.  */
29109 +    tree (* ttype_ref_encode) (tree);
29110    } cxx;
29111  
29112    /* Functions and data for emulated TLS support.  */
29113 @@ -1040,6 +1080,10 @@
29114       bits in the bitmap passed in. */  
29115    void (*live_on_entry) (bitmap); 
29116  
29117 +  /* Return false if warnings about missing return statements or suspect
29118 +     noreturn attributes should be suppressed for the current function.  */
29119 +  bool (*warn_func_result) (void);
29120 +
29121    /* True if unwinding tables should be generated by default.  */
29122    bool unwind_tables_default;
29123  
29124 diff -Nur a/gcc/targhooks.c b/gcc/targhooks.c
29125 --- a/gcc/targhooks.c   2009-02-20 16:20:38.000000000 +0100
29126 +++ b/gcc/targhooks.c   2010-01-25 09:50:29.165687452 +0100
29127 @@ -441,6 +441,15 @@
29128    return NULL;
29129  }
29130  
29131 +tree
29132 +hook_cxx_ttype_ref_in_bit0 (tree exp)
29133 +{
29134 +  exp = convert (build_pointer_type (char_type_node), exp);
29135 +  exp = pointer_int_sum (PLUS_EXPR, exp, integer_one_node);
29136 +  
29137 +  return exp;
29138 +}
29139 +
29140  /* Initialize the stack protection decls.  */
29141  
29142  /* Stack protection related decls living in libgcc.  */
29143 @@ -561,6 +570,12 @@
29144  }
29145  
29146  rtx
29147 +default_libcall_value (enum machine_mode mode, rtx fun ATTRIBUTE_UNUSED)
29148 +{
29149 +  return LIBCALL_VALUE (mode);
29150 +}
29151 +
29152 +rtx
29153  default_internal_arg_pointer (void)
29154  {
29155    /* If the reg that the virtual arg pointer will be translated into is
29156 @@ -712,6 +727,12 @@
29157    return true;
29158  }
29159  
29160 +int
29161 +default_vector_min_alignment (const_tree type)
29162 +{
29163 +  return TYPE_ALIGN_UNIT (type);
29164 +}
29165 +
29166  bool
29167  default_hard_regno_scratch_ok (unsigned int regno ATTRIBUTE_UNUSED)
29168  {
29169 diff -Nur a/gcc/targhooks.h b/gcc/targhooks.h
29170 --- a/gcc/targhooks.h   2009-02-20 16:20:38.000000000 +0100
29171 +++ b/gcc/targhooks.h   2010-01-25 09:50:29.165687452 +0100
29172 @@ -48,6 +48,7 @@
29173  
29174  extern tree default_cxx_guard_type (void);
29175  extern tree default_cxx_get_cookie_size (tree);
29176 +extern tree hook_cxx_ttype_ref_in_bit0 (tree);
29177  
29178  extern bool hook_pass_by_reference_must_pass_in_stack
29179    (CUMULATIVE_ARGS *, enum machine_mode mode, const_tree, bool);
29180 @@ -71,6 +72,8 @@
29181  
29182  extern bool default_builtin_vector_alignment_reachable (const_tree, bool);
29183  
29184 +extern int default_vector_min_alignment (const_tree);
29185 +
29186  /* These are here, and not in hooks.[ch], because not all users of
29187     hooks.h include tm.h, and thus we don't have CUMULATIVE_ARGS.  */
29188  
29189 @@ -87,6 +90,7 @@
29190    (const_tree, const_tree, const_tree);
29191  extern bool hook_bool_const_rtx_commutative_p (const_rtx, int);
29192  extern rtx default_function_value (const_tree, const_tree, bool);
29193 +extern rtx default_libcall_value (enum machine_mode, rtx);
29194  extern rtx default_internal_arg_pointer (void);
29195  #ifdef IRA_COVER_CLASSES
29196  extern const enum reg_class *default_ira_cover_classes (void);
29197 diff -Nur a/gcc/testsuite/gcc.c-torture/execute/990208-1.x b/gcc/testsuite/gcc.c-torture/execute/990208-1.x
29198 --- a/gcc/testsuite/gcc.c-torture/execute/990208-1.x    1970-01-01 01:00:00.000000000 +0100
29199 +++ b/gcc/testsuite/gcc.c-torture/execute/990208-1.x    2010-01-25 09:50:29.165687452 +0100
29200 @@ -0,0 +1,12 @@
29201 +
29202 +# On ARM, with -Os, some of the functions that this test
29203 +# expects to be inlined are not inlined for code size
29204 +# reasons.  This is not a bug, it's intentional,
29205 +# so stop this test from running.
29206 +set torture_eval_before_compile {
29207 +  if { [istarget "arm-*-*"] && [string match {*-Os*} "$option"] } {
29208 +    continue
29209 +  }
29210 +}
29211 +
29212 +return 0
29213 \ No newline at end of file
29214 diff -Nur a/gcc/testsuite/gcc.c-torture/execute/bcp-1.x b/gcc/testsuite/gcc.c-torture/execute/bcp-1.x
29215 --- a/gcc/testsuite/gcc.c-torture/execute/bcp-1.x       1970-01-01 01:00:00.000000000 +0100
29216 +++ b/gcc/testsuite/gcc.c-torture/execute/bcp-1.x       2010-01-25 09:50:29.165687452 +0100
29217 @@ -0,0 +1,12 @@
29218 +
29219 +# On ARM, with -Os, some of the functions that this test
29220 +# expects to be inlined are not inlined for code size
29221 +# reasons.  This is not a bug, it's intentional,
29222 +# so stop this test from running.
29223 +set torture_eval_before_compile {
29224 +  if { [istarget "arm-*-*"] && [string match {*-Os*} "$option"] } {
29225 +    continue
29226 +  }
29227 +}
29228 +
29229 +return 0
29230 \ No newline at end of file
29231 diff -Nur a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
29232 --- a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp 2009-03-16 22:11:57.000000000 +0100
29233 +++ b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp 2010-01-25 09:50:29.165687452 +0100
29234 @@ -54,6 +54,9 @@
29235       || [istarget "sh*-*-*"] } then {
29236    lappend additional_flags "-mieee"
29237  }
29238 +if [istarget "mips*-sde-*"] then {
29239 +  lappend additional_flags "-Wl,--defsym=__cs3_mips_float_type=2" "-lcs3-mips-cp1" "-lcs3-mips-fpemu"
29240 +}
29241  
29242  # load support procs
29243  load_lib c-torture.exp
29244 diff -Nur a/gcc/testsuite/gcc.dg/builtin-redefine.c b/gcc/testsuite/gcc.dg/builtin-redefine.c
29245 --- a/gcc/testsuite/gcc.dg/builtin-redefine.c   2008-09-18 17:39:08.000000000 +0200
29246 +++ b/gcc/testsuite/gcc.dg/builtin-redefine.c   2010-01-25 09:50:29.165687452 +0100
29247 @@ -28,7 +28,7 @@
29248  #define __TIME__ "X"         /* Re-define while defined.  */
29249  
29250  #define __TIME__ "Y"         /* { dg-warning "\"__TIME__\" redefined" } */
29251 -/* { dg-warning "previous definition" "" { target *-*-* } 28 } */
29252 +/* { dg-message "previous definition" "" { target *-*-* } 28 } */
29253  
29254  #undef __TIME__              /* Undefine while defined.  */
29255  
29256 @@ -39,7 +39,7 @@
29257  #define __DATE__ "X"         /* Re-define while defined.  */
29258  
29259  #define __DATE__ "Y"         /* { dg-warning "\"__DATE__\" redefined" } */
29260 -/* { dg-warning "previous definition" "" { target *-*-* } 39 } */
29261 +/* { dg-message "previous definition" "" { target *-*-* } 39 } */
29262  
29263  #undef __DATE__              /* Undefine while defined.  */
29264  
29265 @@ -48,7 +48,7 @@
29266  #define __TIMESTAMP__ "X"    /* Re-define while defined.  */
29267  
29268  #define __TIMESTAMP__ "Y"    /* { dg-warning "\"__TIMESTAMP__\" redefined" } */
29269 -/* { dg-warning "previous definition" "" { target *-*-* } 48 } */
29270 +/* { dg-message "previous definition" "" { target *-*-* } 48 } */
29271  
29272  #undef __TIMESTAMP__         /* Undefine while defined.  */
29273  
29274 diff -Nur a/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c b/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
29275 --- a/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c    2009-03-19 23:10:22.000000000 +0100
29276 +++ b/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c    2010-01-25 09:50:29.165687452 +0100
29277 @@ -46,7 +46,7 @@
29278  "/* { dg-options \"%s-I%s\" } */\n",
29279  "/* { dg-options \"%s-I%s -Wno-abi\" } */\n",
29280  "/* { dg-options \"%s-I%s -mno-mmx -Wno-abi\" { target i?86-*-* x86_64-*-* } } */\n",
29281 -"/* { dg-options \"%s-I%s -fno-common\" { target hppa*-*-hpux* powerpc*-*-darwin* *-*-mingw32* *-*-cygwin* } } */\n",
29282 +"/* { dg-options \"%s-I%s -fno-common\" { target hppa*-*-hpux* powerpc*-*-darwin* } } */\n",
29283  "/* { dg-options \"%s-I%s -mno-mmx -fno-common -Wno-abi\" { target i?86-*-darwin* x86_64-*-darwin* } } */\n",
29284  "/* { dg-options \"%s-I%s -mno-base-addresses\" { target mmix-*-* } } */\n",
29285  "/* { dg-options \"%s-I%s -mlongcalls -mtext-section-literals\" { target xtensa*-*-* } } */\n"
29286 diff -Nur a/gcc/testsuite/gcc.dg/cpp/include2a.c b/gcc/testsuite/gcc.dg/cpp/include2a.c
29287 --- a/gcc/testsuite/gcc.dg/cpp/include2a.c      1970-01-01 01:00:00.000000000 +0100
29288 +++ b/gcc/testsuite/gcc.dg/cpp/include2a.c      2010-01-25 09:50:29.165687452 +0100
29289 @@ -0,0 +1,16 @@
29290 +/* Copyright (C) 2000 Free Software Foundation, Inc.  */
29291 +
29292 +/* { dg-do preprocess } */
29293 +
29294 +/* Tests that #include does not allow the terminating '>' or '"' to be
29295 +   escaped, as per the standard.  */
29296 +
29297 +/* Source: Neil Booth, 4 Nov 2000.  */
29298 +
29299 +#include "silly\""  /* { dg-error "extra tokens" "" } */
29300 +
29301 +/* These error is No such file or directory, just once.  However, this
29302 +   message is locale-dependent, so don't test for it.  */
29303 +/* { dg-error "silly" "" { target *-*-* } 10 } */
29304 +/* { dg-error "missing" "" { target *-*-* } 10 } */
29305 +/* { dg-message "terminated" "" { target *-*-* } 0 } */
29306 diff -Nur a/gcc/testsuite/gcc.dg/cpp/include2.c b/gcc/testsuite/gcc.dg/cpp/include2.c
29307 --- a/gcc/testsuite/gcc.dg/cpp/include2.c       2007-05-17 22:58:47.000000000 +0200
29308 +++ b/gcc/testsuite/gcc.dg/cpp/include2.c       2010-01-25 09:50:29.165687452 +0100
29309 @@ -8,9 +8,8 @@
29310  /* Source: Neil Booth, 4 Nov 2000.  */
29311  
29312  #include <silly\>>  /* { dg-error "extra tokens" "" } */
29313 -#include "silly\""  /* { dg-error "extra tokens" "" } */
29314  
29315  /* These error is No such file or directory, just once.  However, this
29316     message is locale-dependent, so don't test for it.  */
29317  /* { dg-error "silly" "" { target *-*-* } 10 } */
29318 -/* { dg-error "missing" "" { target *-*-* } 11 } */
29319 +/* { dg-message "terminated" "" { target *-*-* } 0 } */
29320 diff -Nur a/gcc/testsuite/gcc.dg/cpp/missing-header-1.c b/gcc/testsuite/gcc.dg/cpp/missing-header-1.c
29321 --- a/gcc/testsuite/gcc.dg/cpp/missing-header-1.c       1970-01-01 01:00:00.000000000 +0100
29322 +++ b/gcc/testsuite/gcc.dg/cpp/missing-header-1.c       2010-01-25 09:50:29.165687452 +0100
29323 @@ -0,0 +1,9 @@
29324 +/* Test that missing headers are fatal errors.  PR 15638.  */
29325 +/* { dg-do compile } */
29326 +/* { dg-options "" } */
29327 +
29328 +#include "nonexistent.h" /* { dg-error "nonexistent.h" } */
29329 +/* { dg-message "terminated" "" { target *-*-* } 0 } */
29330 +
29331 +/* This declaration should not receive any diagnostic.  */
29332 +foo bar;
29333 diff -Nur a/gcc/testsuite/gcc.dg/cpp/missing-header-MD.c b/gcc/testsuite/gcc.dg/cpp/missing-header-MD.c
29334 --- a/gcc/testsuite/gcc.dg/cpp/missing-header-MD.c      1970-01-01 01:00:00.000000000 +0100
29335 +++ b/gcc/testsuite/gcc.dg/cpp/missing-header-MD.c      2010-01-25 09:50:29.165687452 +0100
29336 @@ -0,0 +1,6 @@
29337 +/* Test that missing user headers are fatal errors with -MD.  */
29338 +/* { dg-do compile } */
29339 +/* { dg-options "-MD" } */
29340 +
29341 +#include "nonexistent.h" /* { dg-error "nonexistent.h" } */
29342 +/* { dg-message "terminated" "" { target *-*-* } 0 } */
29343 diff -Nur a/gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c b/gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c
29344 --- a/gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c     1970-01-01 01:00:00.000000000 +0100
29345 +++ b/gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c     2010-01-25 09:50:29.165687452 +0100
29346 @@ -0,0 +1,6 @@
29347 +/* Test that missing user headers are fatal errors with -MMD.  */
29348 +/* { dg-do compile } */
29349 +/* { dg-options "-MMD" } */
29350 +
29351 +#include "nonexistent.h" /* { dg-error "nonexistent.h" } */
29352 +/* { dg-message "terminated" "" { target *-*-* } 0 } */
29353 diff -Nur a/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c b/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c
29354 --- a/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c   1970-01-01 01:00:00.000000000 +0100
29355 +++ b/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c   2010-01-25 09:50:29.165687452 +0100
29356 @@ -0,0 +1,6 @@
29357 +/* Test that missing system headers are fatal errors with -MD.  */
29358 +/* { dg-do compile } */
29359 +/* { dg-options "-MD" } */
29360 +
29361 +#include <nonexistent.h> /* { dg-error "nonexistent.h" } */
29362 +/* { dg-message "terminated" "" { target *-*-* } 0 } */
29363 diff -Nur a/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c b/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c
29364 --- a/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c  1970-01-01 01:00:00.000000000 +0100
29365 +++ b/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c  2010-01-25 09:50:29.165687452 +0100
29366 @@ -0,0 +1,6 @@
29367 +/* Test that missing system headers are fatal errors with -MMD.  */
29368 +/* { dg-do compile } */
29369 +/* { dg-options "-MMD" } */
29370 +
29371 +#include <nonexistent.h> /* { dg-error "nonexistent.h" } */
29372 +/* { dg-message "terminated" "" { target *-*-* } 0 } */
29373 diff -Nur a/gcc/testsuite/gcc.dg/cpp/redef2.c b/gcc/testsuite/gcc.dg/cpp/redef2.c
29374 --- a/gcc/testsuite/gcc.dg/cpp/redef2.c 2001-11-23 08:50:42.000000000 +0100
29375 +++ b/gcc/testsuite/gcc.dg/cpp/redef2.c 2010-01-25 09:50:29.165687452 +0100
29376 @@ -23,9 +23,9 @@
29377     { dg-warning "redefined" "redef ro"      { target *-*-* } 12 }
29378     { dg-warning "redefined" "redef va"      { target *-*-* } 15 }
29379  
29380 -   { dg-warning "previous"  "prev def mac"  { target *-*-* } 6  }
29381 -   { dg-warning "previous"  "prev def mac"  { target *-*-* } 7  }
29382 -   { dg-warning "previous"  "prev def mac"  { target *-*-* } 8  }
29383 -   { dg-warning "previous"  "prev def ro"   { target *-*-* } 11 }
29384 -   { dg-warning "previous"  "prev def va"   { target *-*-* } 14 }
29385 +   { dg-message "previous"  "prev def mac"  { target *-*-* } 6  }
29386 +   { dg-message "previous"  "prev def mac"  { target *-*-* } 7  }
29387 +   { dg-message "previous"  "prev def mac"  { target *-*-* } 8  }
29388 +   { dg-message "previous"  "prev def ro"   { target *-*-* } 11 }
29389 +   { dg-message "previous"  "prev def va"   { target *-*-* } 14 }
29390  */
29391 diff -Nur a/gcc/testsuite/gcc.dg/cpp/redef3.c b/gcc/testsuite/gcc.dg/cpp/redef3.c
29392 --- a/gcc/testsuite/gcc.dg/cpp/redef3.c 2003-06-01 20:55:15.000000000 +0200
29393 +++ b/gcc/testsuite/gcc.dg/cpp/redef3.c 2010-01-25 09:50:29.165687452 +0100
29394 @@ -15,7 +15,7 @@
29395     { dg-warning "redefined" "redef B"      { target *-*-* } 9  }
29396     { dg-warning "redefined" "redef D"      { target *-*-* } 11 }
29397     { dg-warning "redefined" "redef E"      { target *-*-* } 12 }
29398 -   { dg-warning "previous"  "prev def A"   { target *-*-* } 6  }
29399 -   { dg-warning "previous"  "prev def B"   { target *-*-* } 8  }
29400 -   { dg-warning "previous"  "prev def D/E" { target *-*-* } 0  }
29401 +   { dg-message "previous"  "prev def A"   { target *-*-* } 6  }
29402 +   { dg-message "previous"  "prev def B"   { target *-*-* } 8  }
29403 +   { dg-message "previous"  "prev def D/E" { target *-*-* } 0  }
29404  */
29405 diff -Nur a/gcc/testsuite/gcc.dg/cpp/trad/redef2.c b/gcc/testsuite/gcc.dg/cpp/trad/redef2.c
29406 --- a/gcc/testsuite/gcc.dg/cpp/trad/redef2.c    2002-06-21 07:29:09.000000000 +0200
29407 +++ b/gcc/testsuite/gcc.dg/cpp/trad/redef2.c    2010-01-25 09:50:29.165687452 +0100
29408 @@ -2,31 +2,31 @@
29409  
29410  /* { dg-do preprocess } */
29411  
29412 -#define foo bar    /* { dg-warning "previous def" "foo prev def" } */
29413 +#define foo bar    /* { dg-message "previous def" "foo prev def" } */
29414  #define foo barr   /* { dg-warning "redefined" "foo redefined" } */
29415  
29416  #undef foo
29417 -#define foo bar    /* { dg-warning "previous def" "foo prev def 2" } */
29418 +#define foo bar    /* { dg-message "previous def" "foo prev def 2" } */
29419  #define foo() bar    /* { dg-warning "redefined" "foo redefined 2" } */
29420  
29421  #undef foo
29422 -#define foo() bar    /* { dg-warning "previous def" "foo prev def" } */
29423 +#define foo() bar    /* { dg-message "previous def" "foo prev def" } */
29424  #define foo() barr   /* { dg-warning "redefined" "foo redefined" } */
29425  
29426 -#define quux(thud) a thud b /* { dg-warning "previous def" "quux prev def" } */
29427 +#define quux(thud) a thud b /* { dg-message "previous def" "quux prev def" } */
29428  #define quux(thu) a thud b   /* { dg-warning "redefined" "quux redefined" } */
29429  
29430 -#define bar(x, y) x+y /* { dg-warning "previous def" "bar prev def" } */
29431 +#define bar(x, y) x+y /* { dg-message "previous def" "bar prev def" } */
29432  #define bar(x, y) x+x   /* { dg-warning "redefined" "bar redefined" } */
29433  
29434 -#define bat(x, y) x+y  /* { dg-warning "previous def" "bat prev def" } */
29435 +#define bat(x, y) x+y  /* { dg-message "previous def" "bat prev def" } */
29436  #define bat(x, y) x+ y   /* { dg-warning "redefined" "bat redefined" } */
29437  
29438 -#define baz(x, y) x+y  /* { dg-warning "previous def" "baz prev def" } */
29439 +#define baz(x, y) x+y  /* { dg-message "previous def" "baz prev def" } */
29440  #define baz(x, y) x +y   /* { dg-warning "redefined" "baz redefined" } */
29441  
29442 -#define f(x, y) "x y"  /* { dg-warning "previous def" "f prev def" } */
29443 +#define f(x, y) "x y"  /* { dg-message "previous def" "f prev def" } */
29444  #define f(x, y) "x  y"   /* { dg-warning "redefined" "f redefined" } */
29445  
29446 -#define g(x, y) 'x'  /* { dg-warning "previous def" "g prev def" } */
29447 +#define g(x, y) 'x'  /* { dg-message "previous def" "g prev def" } */
29448  #define g(x, y) ' x'   /* { dg-warning "redefined" "g redefined" } */
29449 diff -Nur a/gcc/testsuite/gcc.dg/cpp/Wvariadic-1.c b/gcc/testsuite/gcc.dg/cpp/Wvariadic-1.c
29450 --- a/gcc/testsuite/gcc.dg/cpp/Wvariadic-1.c    2004-02-20 19:42:51.000000000 +0100
29451 +++ b/gcc/testsuite/gcc.dg/cpp/Wvariadic-1.c    2010-01-25 09:50:29.165687452 +0100
29452 @@ -4,3 +4,4 @@
29453  #define f(x,...)       /* { dg-error "variadic" } */
29454  #define g(x,y...)      /* { dg-error "variadic" } */
29455  int not_empty;
29456 +/* { dg-message "warnings being treated as errors" "" { target *-*-* } 0 } */
29457 diff -Nur a/gcc/testsuite/gcc.dg/cpp/Wvariadic-3.c b/gcc/testsuite/gcc.dg/cpp/Wvariadic-3.c
29458 --- a/gcc/testsuite/gcc.dg/cpp/Wvariadic-3.c    2004-02-20 19:42:51.000000000 +0100
29459 +++ b/gcc/testsuite/gcc.dg/cpp/Wvariadic-3.c    2010-01-25 09:50:29.165687452 +0100
29460 @@ -4,3 +4,4 @@
29461  #define f(x,...)
29462  #define g(x,y...)      /* { dg-error "variadic" } */
29463  int not_empty;
29464 +/* { dg-message "warnings being treated as errors" "" { target *-*-* } 0 } */
29465 diff -Nur a/gcc/testsuite/gcc.dg/dll-4.c b/gcc/testsuite/gcc.dg/dll-4.c
29466 --- a/gcc/testsuite/gcc.dg/dll-4.c      2005-10-12 22:54:50.000000000 +0200
29467 +++ b/gcc/testsuite/gcc.dg/dll-4.c      2010-01-25 09:50:29.165687452 +0100
29468 @@ -11,5 +11,6 @@
29469  int f () { return foo1 + foo2; }
29470  
29471  /* FIXME: We should scan the output of nm for this case.  */
29472 -/* { dg-final { scan-assembler "(foo2:.*\.comm\[ \t_\]*foo1)" } } */
29473 +/* { dg-final { scan-assembler "(foo2:)" } } */
29474 +/* { dg-final { scan-assembler "(\.comm\[ \t_\]*foo1)" } } */
29475  /* { dg-final { scan-assembler-not "(__imp_|_imp__)" } } */
29476 diff -Nur a/gcc/testsuite/gcc.dg/dll-6a.c b/gcc/testsuite/gcc.dg/dll-6a.c
29477 --- a/gcc/testsuite/gcc.dg/dll-6a.c     1970-01-01 01:00:00.000000000 +0100
29478 +++ b/gcc/testsuite/gcc.dg/dll-6a.c     2010-01-25 09:50:29.165687452 +0100
29479 @@ -0,0 +1,21 @@
29480 +extern void i1();
29481 +extern void i3();
29482 +extern void i4();
29483 +extern void i5();
29484 +
29485 +extern void e1();
29486 +extern void e3();
29487 +extern void e4();
29488 +extern void e5();
29489 +
29490 +int main () {
29491 +  i1();
29492 +  i3();
29493 +  i4();
29494 +  i5();
29495 +
29496 +  e1();
29497 +  e3();
29498 +  e4();
29499 +  e5();
29500 +}
29501 diff -Nur a/gcc/testsuite/gcc.dg/dll-6.c b/gcc/testsuite/gcc.dg/dll-6.c
29502 --- a/gcc/testsuite/gcc.dg/dll-6.c      1970-01-01 01:00:00.000000000 +0100
29503 +++ b/gcc/testsuite/gcc.dg/dll-6.c      2010-01-25 09:50:29.165687452 +0100
29504 @@ -0,0 +1,52 @@
29505 +/* { dg-do link } */
29506 +/* { dg-require-dll "" } */
29507 +/* { dg-additional-sources "dll-6a.c" } */
29508 +/* { dg-options "-w -O2 -std=gnu89" } */
29509 +
29510 +/* Test that inline functions declared "dllexport" appear in object
29511 +   files, even if they are not called.
29512 +
29513 +   This behavior is required by the ARM C++ ABI:
29514 +
29515 +     Exporting a function that can be inlined should force the
29516 +     creation and export of an out-of-line copy of it.
29517 +
29518 +   and should presumably also apply.
29519 +
29520 +   Visual Studio 2005 also honors that rule.  */
29521 +
29522 +__declspec(dllexport) inline void i1() {}
29523 +
29524 +__declspec(dllexport) extern inline void e1() {}
29525 +
29526 +/* It is invalid to declare the function inline after its definition.  */
29527 +#if 0
29528 +__declspec(dllexport) void i2() {}
29529 +inline void i2();
29530 +
29531 +__declspec(dllexport) extern void e2() {}
29532 +inline void e2();
29533 +#endif
29534 +
29535 +__declspec(dllexport) inline void i3() {}
29536 +void i3();
29537 +
29538 +__declspec(dllexport) inline void e3() {}
29539 +extern void e3();
29540 +
29541 +__declspec(dllexport) void i4();
29542 +inline void i4() {};
29543 +
29544 +__declspec(dllexport) extern void e4();
29545 +inline void e4() {};
29546 +
29547 +__declspec(dllexport) inline void i5();
29548 +void i5() {};
29549 +
29550 +__declspec(dllexport) inline void e5();
29551 +extern void e5() {};
29552 +
29553 +/* Make sure that just declaring the function -- without defining it
29554 +   -- does not cause errors.  */
29555 +__declspec(dllexport) inline void i6();
29556 +__declspec(dllexport) extern inline void e6();
29557 diff -Nur a/gcc/testsuite/gcc.dg/dll-7a.c b/gcc/testsuite/gcc.dg/dll-7a.c
29558 --- a/gcc/testsuite/gcc.dg/dll-7a.c     1970-01-01 01:00:00.000000000 +0100
29559 +++ b/gcc/testsuite/gcc.dg/dll-7a.c     2010-01-25 09:50:29.165687452 +0100
29560 @@ -0,0 +1,21 @@
29561 +extern void i1();
29562 +extern void i3();
29563 +extern void i4();
29564 +extern void i5();
29565 +
29566 +extern void e1();
29567 +extern void e3();
29568 +extern void e4();
29569 +extern void e5();
29570 +
29571 +int main () {
29572 +  i1();
29573 +  i3();
29574 +  i4();
29575 +  i5();
29576 +
29577 +  e1();
29578 +  e3();
29579 +  e4();
29580 +  e5();
29581 +}
29582 diff -Nur a/gcc/testsuite/gcc.dg/dll-7.c b/gcc/testsuite/gcc.dg/dll-7.c
29583 --- a/gcc/testsuite/gcc.dg/dll-7.c      1970-01-01 01:00:00.000000000 +0100
29584 +++ b/gcc/testsuite/gcc.dg/dll-7.c      2010-01-25 09:50:29.165687452 +0100
29585 @@ -0,0 +1,52 @@
29586 +/* { dg-do link } */
29587 +/* { dg-require-dll "" } */
29588 +/* { dg-additional-sources "dll-7a.c" } */
29589 +/* { dg-options "-w -O2 -std=gnu99" } */
29590 +
29591 +/* Test that inline functions declared "dllexport" appear in object
29592 +   files, even if they are not called.
29593 +
29594 +   This behavior is required by the ARM C++ ABI:
29595 +
29596 +     Exporting a function that can be inlined should force the
29597 +     creation and export of an out-of-line copy of it.
29598 +
29599 +   and should presumably also apply.
29600 +
29601 +   Visual Studio 2005 also honors that rule.  */
29602 +
29603 +__declspec(dllexport) inline void i1() {}
29604 +
29605 +__declspec(dllexport) extern inline void e1() {}
29606 +
29607 +/* It is invalid to declare the function inline after its definition.  */
29608 +#if 0
29609 +__declspec(dllexport) void i2() {}
29610 +inline void i2();
29611 +
29612 +__declspec(dllexport) extern void e2() {}
29613 +inline void e2();
29614 +#endif
29615 +
29616 +__declspec(dllexport) inline void i3() {}
29617 +void i3();
29618 +
29619 +__declspec(dllexport) inline void e3() {}
29620 +extern void e3();
29621 +
29622 +__declspec(dllexport) void i4();
29623 +inline void i4() {};
29624 +
29625 +__declspec(dllexport) extern void e4();
29626 +inline void e4() {};
29627 +
29628 +__declspec(dllexport) inline void i5();
29629 +void i5() {};
29630 +
29631 +__declspec(dllexport) inline void e5();
29632 +extern void e5() {};
29633 +
29634 +/* Make sure that just declaring the function -- without defining it
29635 +   -- does not cause errors.  */
29636 +__declspec(dllexport) inline void i6();
29637 +__declspec(dllexport) extern inline void e6();
29638 diff -Nur a/gcc/testsuite/gcc.dg/falign-labels-1.c b/gcc/testsuite/gcc.dg/falign-labels-1.c
29639 --- a/gcc/testsuite/gcc.dg/falign-labels-1.c    1970-01-01 01:00:00.000000000 +0100
29640 +++ b/gcc/testsuite/gcc.dg/falign-labels-1.c    2010-01-25 09:50:29.165687452 +0100
29641 @@ -0,0 +1,39 @@
29642 +/* { dg-do run } */
29643 +/* { dg-options "-falign-labels=8" { target { ! { m68k*-*-* || fido*-*-* } } } } */
29644 +
29645 +/* On ARMv7-A CPUs, this test resulted in incorrect code generation.
29646 +   The code generated for the switch statement expected the jump table
29647 +   to immediately follow the jump instruction, but -falign-labels
29648 +   caused the label preceding the table to be aligned.  */
29649 +/* M68K and fido only support -falign-labels argument <= 2.  */
29650 +
29651 +volatile int x;
29652 +
29653 +int main(void)
29654 +{
29655 +  int y;
29656 +
29657 +  x = 0;
29658 +
29659 +  switch(x)
29660 +    {
29661 +    case 0:
29662 +      y = 2 * x;
29663 +      break;
29664 +    case 1:
29665 +      y = -3 * x;
29666 +      break;
29667 +    case 2:
29668 +      y = x + 5;
29669 +      break;
29670 +    case 3:
29671 +      y = x - 7;
29672 +      break;
29673 +    default:
29674 +      break;
29675 +    }
29676 +
29677 +  x = y;
29678 +
29679 +  return 0;
29680 +}
29681 diff -Nur a/gcc/testsuite/gcc.dg/fltconst-1.c b/gcc/testsuite/gcc.dg/fltconst-1.c
29682 --- a/gcc/testsuite/gcc.dg/fltconst-1.c 2008-08-21 19:50:01.000000000 +0200
29683 +++ b/gcc/testsuite/gcc.dg/fltconst-1.c 2010-01-25 09:50:29.165687452 +0100
29684 @@ -1,5 +1,5 @@
29685  /* { dg-do compile } */
29686 -/* { dg-options "-std=gnu99" } */
29687 +/* { dg-options "-std=gnu99 -fshow-column" } */
29688  
29689  double a = 1.ld;       /* { dg-error "12:invalid suffix" } */
29690  double b = 1.fd;       /* { dg-error "12:invalid suffix" } */
29691 diff -Nur a/gcc/testsuite/gcc.dg/m68k-fp-1.c b/gcc/testsuite/gcc.dg/m68k-fp-1.c
29692 --- a/gcc/testsuite/gcc.dg/m68k-fp-1.c  1970-01-01 01:00:00.000000000 +0100
29693 +++ b/gcc/testsuite/gcc.dg/m68k-fp-1.c  2010-01-25 09:50:29.165687452 +0100
29694 @@ -0,0 +1,13 @@
29695 +/* ColdFire has restricted addressing modes for float operands.  */
29696 +/* { dg-do compile { target m68k-*-* } }  */
29697 +/* { dg-options "-O0 -mcpu=547x -mhard-float" }  */
29698 +
29699 +double Foo (unsigned a)
29700 +{
29701 +  unsigned local_data[16384] __attribute__((unused));
29702 +  double d;
29703 +
29704 +  d = a;
29705 +
29706 +  return d;
29707 +}
29708 diff -Nur a/gcc/testsuite/gcc.dg/pch/counter-2.c b/gcc/testsuite/gcc.dg/pch/counter-2.c
29709 --- a/gcc/testsuite/gcc.dg/pch/counter-2.c      2008-05-21 02:04:45.000000000 +0200
29710 +++ b/gcc/testsuite/gcc.dg/pch/counter-2.c      2010-01-25 09:50:29.165687452 +0100
29711 @@ -10,6 +10,7 @@
29712  #include "counter-2.h" /* { dg-warning "not used because `__COUNTER__' is invalid" } */
29713  /* { dg-error "counter-2.h: No such file or directory" "no such file" { target *-*-* } 10 } */
29714  /* { dg-error "one or more PCH files were found, but they were invalid" "invalid files" { target *-*-* } 10 } */
29715 +/* { dg-message "terminated" "" { target *-*-* } 0 } */
29716  
29717  int main(void) 
29718  {
29719 diff -Nur a/gcc/testsuite/gcc.dg/pch/valid-1.c b/gcc/testsuite/gcc.dg/pch/valid-1.c
29720 --- a/gcc/testsuite/gcc.dg/pch/valid-1.c        2008-05-21 02:04:45.000000000 +0200
29721 +++ b/gcc/testsuite/gcc.dg/pch/valid-1.c        2010-01-25 09:50:29.165687452 +0100
29722 @@ -3,5 +3,6 @@
29723  #include "valid-1.h"/* { dg-warning "created with -gnone, but used with -g" } */
29724  /* { dg-error "No such file" "no such file" { target *-*-* } 3 } */
29725  /* { dg-error "they were invalid" "invalid files" { target *-*-* } 3 } */
29726 +/* { dg-message "terminated" "" { target *-*-* } 0 } */
29727  
29728  int x;
29729 diff -Nur a/gcc/testsuite/gcc.dg/pch/valid-2.c b/gcc/testsuite/gcc.dg/pch/valid-2.c
29730 --- a/gcc/testsuite/gcc.dg/pch/valid-2.c        2008-05-21 02:04:45.000000000 +0200
29731 +++ b/gcc/testsuite/gcc.dg/pch/valid-2.c        2010-01-25 09:50:29.165687452 +0100
29732 @@ -3,4 +3,5 @@
29733  #include "valid-2.h" /* { dg-warning "settings for -fexceptions do not match" } */
29734  /* { dg-error "No such file" "no such file" { target *-*-* } 3 } */
29735  /* { dg-error "they were invalid" "invalid files" { target *-*-* } 3 } */
29736 +/* { dg-message "terminated" "" { target *-*-* } 0 } */
29737  int x;
29738 diff -Nur a/gcc/testsuite/gcc.dg/pch/warn-1.c b/gcc/testsuite/gcc.dg/pch/warn-1.c
29739 --- a/gcc/testsuite/gcc.dg/pch/warn-1.c 2008-05-21 02:04:45.000000000 +0200
29740 +++ b/gcc/testsuite/gcc.dg/pch/warn-1.c 2010-01-25 09:50:29.165687452 +0100
29741 @@ -5,6 +5,7 @@
29742  #include "warn-1.h"/* { dg-warning "not used because .DEFINED_VALUE. is defined" } */
29743  /* { dg-error "No such file" "no such file" { target *-*-* } 5 } */
29744  /* { dg-error "they were invalid" "invalid files" { target *-*-* } 5 } */
29745 +/* { dg-message "terminated" "" { target *-*-* } 0 } */
29746  
29747  
29748  int main(void) 
29749 diff -Nur a/gcc/testsuite/gcc.dg/pr34263.c b/gcc/testsuite/gcc.dg/pr34263.c
29750 --- a/gcc/testsuite/gcc.dg/pr34263.c    2008-01-06 16:24:10.000000000 +0100
29751 +++ b/gcc/testsuite/gcc.dg/pr34263.c    2010-01-25 09:50:29.165687452 +0100
29752 @@ -1,5 +1,5 @@
29753  /* { dg-do run } */
29754 -/* { dg-options "-O2 -fdump-tree-optimized" } */
29755 +/* { dg-options "-O2 -fdump-tree-optimized -fno-unroll-loops" } */
29756  /* Same test as 990128-1.c.  */
29757  
29758  extern int printf (const char *,...);
29759 diff -Nur a/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c b/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c
29760 --- a/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c  2007-08-13 11:24:46.000000000 +0200
29761 +++ b/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c  2010-01-25 09:50:29.165687452 +0100
29762 @@ -1,4 +1,6 @@
29763  /* { dg-do compile { target { { sh-*-* sh4*-*-* } && nonpic } } } */
29764 +/* { dg-skip-if "FPU Required" { "sh*-*-*" } { "-m*nofpu*" } { "" } } */
29765 +/* { dg-skip-if "FPU Required" { "sh*-*-*" } { "-m4al*" } { "" } } */
29766  /* { dg-options "-O -m4" } */
29767  
29768  extern void foo ();
29769 diff -Nur a/gcc/testsuite/gcc.dg/profile-dir-1.c b/gcc/testsuite/gcc.dg/profile-dir-1.c
29770 --- a/gcc/testsuite/gcc.dg/profile-dir-1.c      2008-04-22 01:35:47.000000000 +0200
29771 +++ b/gcc/testsuite/gcc.dg/profile-dir-1.c      2010-01-25 09:50:29.165687452 +0100
29772 @@ -1,5 +1,6 @@
29773  /* { dg-do compile } */
29774  /* { dg-options "-O -fprofile-generate=. -fdump-tree-tree_profile" } */
29775 +/* { dg-require-host-local "" } */
29776  /* { dg-final { scan-tree-dump " ./profile-dir-1.gcda" "tree_profile" } } */
29777  
29778  int
29779 diff -Nur a/gcc/testsuite/gcc.dg/profile-dir-2.c b/gcc/testsuite/gcc.dg/profile-dir-2.c
29780 --- a/gcc/testsuite/gcc.dg/profile-dir-2.c      2008-04-22 01:35:47.000000000 +0200
29781 +++ b/gcc/testsuite/gcc.dg/profile-dir-2.c      2010-01-25 09:50:29.165687452 +0100
29782 @@ -1,5 +1,6 @@
29783  /* { dg-do compile } */
29784  /* { dg-options "-O -fprofile-generate -fdump-tree-tree_profile" } */
29785 +/* { dg-require-host-local "" } */
29786  /* { dg-final { scan-tree-dump "/profile-dir-2.gcda" "tree_profile" } } */
29787  
29788  int
29789 diff -Nur a/gcc/testsuite/gcc.dg/profile-dir-3.c b/gcc/testsuite/gcc.dg/profile-dir-3.c
29790 --- a/gcc/testsuite/gcc.dg/profile-dir-3.c      2008-04-22 01:35:47.000000000 +0200
29791 +++ b/gcc/testsuite/gcc.dg/profile-dir-3.c      2010-01-25 09:50:29.165687452 +0100
29792 @@ -1,5 +1,6 @@
29793  /* { dg-do compile } */
29794  /* { dg-options "-O -fprofile-generate -fprofile-dir=. -fdump-tree-tree_profile" } */
29795 +/* { dg-require-host-local "" } */
29796  /* { dg-final { scan-tree-dump " ./profile-dir-3.gcda" "tree_profile" } } */
29797  
29798  int
29799 diff -Nur a/gcc/testsuite/gcc.dg/promote-short-10.c b/gcc/testsuite/gcc.dg/promote-short-10.c
29800 --- a/gcc/testsuite/gcc.dg/promote-short-10.c   1970-01-01 01:00:00.000000000 +0100
29801 +++ b/gcc/testsuite/gcc.dg/promote-short-10.c   2010-01-25 09:50:29.165687452 +0100
29802 @@ -0,0 +1,20 @@
29803 +/* Verify that we do not promote a short loop index variable when its
29804 +   address is taken.  */
29805 +
29806 +/* { dg-do compile } */
29807 +/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
29808 +/* { dg-final { scan-tree-dump-times "Found 0 candidates" 1 "promoteshort" } } */
29809 +/* { dg-final { cleanup-tree-dump "promoteshort" } } */
29810 +
29811 +extern void outside (short *);
29812 +
29813 +void
29814 +test1 (int n, int *x)
29815 +{
29816 +  short i;
29817 +
29818 +  for (i = 0; i < n; i++)
29819 +    {
29820 +      outside (&i);
29821 +    }
29822 +}
29823 diff -Nur a/gcc/testsuite/gcc.dg/promote-short-1.c b/gcc/testsuite/gcc.dg/promote-short-1.c
29824 --- a/gcc/testsuite/gcc.dg/promote-short-1.c    1970-01-01 01:00:00.000000000 +0100
29825 +++ b/gcc/testsuite/gcc.dg/promote-short-1.c    2010-01-25 09:50:29.165687452 +0100
29826 @@ -0,0 +1,15 @@
29827 +/* Verify that we promote a short loop index variable.  */
29828 +
29829 +/* { dg-do compile } */
29830 +/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
29831 +/* { dg-final { scan-tree-dump-times "Promoting 1 variables" 1 "promoteshort" } } */
29832 +/* { dg-final { cleanup-tree-dump "promoteshort" } } */
29833 +
29834 +void
29835 +test1 (short n, int *x)
29836 +{
29837 +  short i;
29838 +
29839 +  for (i = 0; i < n; i++)
29840 +    x[i] = 0;
29841 +}
29842 diff -Nur a/gcc/testsuite/gcc.dg/promote-short-2.c b/gcc/testsuite/gcc.dg/promote-short-2.c
29843 --- a/gcc/testsuite/gcc.dg/promote-short-2.c    1970-01-01 01:00:00.000000000 +0100
29844 +++ b/gcc/testsuite/gcc.dg/promote-short-2.c    2010-01-25 09:50:29.165687452 +0100
29845 @@ -0,0 +1,16 @@
29846 +/* Verify that we do not promote a short loop index variable when it is
29847 +   being stored to memory.  */
29848 +
29849 +/* { dg-do compile } */
29850 +/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
29851 +/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" } } */
29852 +/* { dg-final { cleanup-tree-dump "promoteshort" } } */
29853 +
29854 +void
29855 +test1 (short n, short *x)
29856 +{
29857 +  short i;
29858 +
29859 +  for (i = 0; i < n; i++)
29860 +    x[i] = i;
29861 +}
29862 diff -Nur a/gcc/testsuite/gcc.dg/promote-short-3.c b/gcc/testsuite/gcc.dg/promote-short-3.c
29863 --- a/gcc/testsuite/gcc.dg/promote-short-3.c    1970-01-01 01:00:00.000000000 +0100
29864 +++ b/gcc/testsuite/gcc.dg/promote-short-3.c    2010-01-25 09:50:29.165687452 +0100
29865 @@ -0,0 +1,18 @@
29866 +/* Verify that we do not promote a short loop index variable when it is
29867 +   being passed as a function parameter.  */
29868 +
29869 +/* { dg-do compile } */
29870 +/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
29871 +/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" { xfail m68k*-*-* fido*-*-* i?86-*-* x86_64-*-* mips*-*-* sh*-*-* } } } */
29872 +/* { dg-final { cleanup-tree-dump "promoteshort" } } */
29873 +
29874 +extern void outside (short);
29875 +
29876 +void
29877 +test1 (short n)
29878 +{
29879 +  short i;
29880 +
29881 +  for (i = 0; i < n; i++)
29882 +    outside (i);
29883 +}
29884 diff -Nur a/gcc/testsuite/gcc.dg/promote-short-4.c b/gcc/testsuite/gcc.dg/promote-short-4.c
29885 --- a/gcc/testsuite/gcc.dg/promote-short-4.c    1970-01-01 01:00:00.000000000 +0100
29886 +++ b/gcc/testsuite/gcc.dg/promote-short-4.c    2010-01-25 09:50:29.165687452 +0100
29887 @@ -0,0 +1,19 @@
29888 +/* Verify that we do not promote a short loop index variable when it is
29889 +   modified within the loop.  */
29890 +
29891 +/* { dg-do compile } */
29892 +/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
29893 +/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" } } */
29894 +/* { dg-final { cleanup-tree-dump "promoteshort" } } */
29895 +
29896 +void
29897 +test1 (short n, int *x)
29898 +{
29899 +  short i;
29900 +
29901 +  for (i = 0; i < n; i++)
29902 +    {
29903 +      i++;
29904 +      x[i] = 0;
29905 +    }
29906 +}
29907 diff -Nur a/gcc/testsuite/gcc.dg/promote-short-5.c b/gcc/testsuite/gcc.dg/promote-short-5.c
29908 --- a/gcc/testsuite/gcc.dg/promote-short-5.c    1970-01-01 01:00:00.000000000 +0100
29909 +++ b/gcc/testsuite/gcc.dg/promote-short-5.c    2010-01-25 09:50:29.165687452 +0100
29910 @@ -0,0 +1,18 @@
29911 +/* Verify that we do not promote a short loop index variable when it has
29912 +   a non-unit-increment.  */
29913 +
29914 +/* { dg-do compile } */
29915 +/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
29916 +/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" } } */
29917 +/* { dg-final { cleanup-tree-dump "promoteshort" } } */
29918 +
29919 +void
29920 +test1 (short n, int *x)
29921 +{
29922 +  short i;
29923 +
29924 +  for (i = 0; i < n; i+=2)
29925 +    {
29926 +      x[i] = 0;
29927 +    }
29928 +}
29929 diff -Nur a/gcc/testsuite/gcc.dg/promote-short-6.c b/gcc/testsuite/gcc.dg/promote-short-6.c
29930 --- a/gcc/testsuite/gcc.dg/promote-short-6.c    1970-01-01 01:00:00.000000000 +0100
29931 +++ b/gcc/testsuite/gcc.dg/promote-short-6.c    2010-01-25 09:50:29.165687452 +0100
29932 @@ -0,0 +1,18 @@
29933 +/* Verify that we do promote a short loop index variable when it has
29934 +   a non-unit-increment and -funsafe-loop-optimizations is in effect.  */
29935 +
29936 +/* { dg-do compile } */
29937 +/* { dg-options "-O2 -fpromote-loop-indices -funsafe-loop-optimizations -fdump-tree-promoteshort" } */
29938 +/* { dg-final { scan-tree-dump-times "Promoting 1 variables" 1 "promoteshort" } } */
29939 +/* { dg-final { cleanup-tree-dump "promoteshort" } } */
29940 +
29941 +void
29942 +test1 (short n, int *x)
29943 +{
29944 +  short i;
29945 +
29946 +  for (i = 0; i < n; i+=2)
29947 +    {
29948 +      x[i] = 0;
29949 +    }
29950 +}
29951 diff -Nur a/gcc/testsuite/gcc.dg/promote-short-7.c b/gcc/testsuite/gcc.dg/promote-short-7.c
29952 --- a/gcc/testsuite/gcc.dg/promote-short-7.c    1970-01-01 01:00:00.000000000 +0100
29953 +++ b/gcc/testsuite/gcc.dg/promote-short-7.c    2010-01-25 09:50:29.165687452 +0100
29954 @@ -0,0 +1,18 @@
29955 +/* Verify that we do not promote a short loop index variable when the
29956 +   loop in which it is used has a bound of wider type.  */
29957 +
29958 +/* { dg-do compile } */
29959 +/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
29960 +/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" } } */
29961 +/* { dg-final { cleanup-tree-dump "promoteshort" } } */
29962 +
29963 +void
29964 +test1 (int n, int *x)
29965 +{
29966 +  short i;
29967 +
29968 +  for (i = 0; i < n; i++)
29969 +    {
29970 +      x[i] = 0;
29971 +    }
29972 +}
29973 diff -Nur a/gcc/testsuite/gcc.dg/promote-short-8.c b/gcc/testsuite/gcc.dg/promote-short-8.c
29974 --- a/gcc/testsuite/gcc.dg/promote-short-8.c    1970-01-01 01:00:00.000000000 +0100
29975 +++ b/gcc/testsuite/gcc.dg/promote-short-8.c    2010-01-25 09:50:29.165687452 +0100
29976 @@ -0,0 +1,19 @@
29977 +/* Verify that we do promote a short loop index variable when the loop
29978 +   in which it is used has a bound of wider type and
29979 +   -funsafe-loop-optimizations is in effect.  */
29980 +
29981 +/* { dg-do compile } */
29982 +/* { dg-options "-O2 -fpromote-loop-indices -funsafe-loop-optimizations -fdump-tree-promoteshort" } */
29983 +/* { dg-final { scan-tree-dump-times "Promoting 1 variables" 1 "promoteshort" } } */
29984 +/* { dg-final { cleanup-tree-dump "promoteshort" } } */
29985 +
29986 +void
29987 +test1 (int n, int *x)
29988 +{
29989 +  short i;
29990 +
29991 +  for (i = 0; i < n; i++)
29992 +    {
29993 +      x[i] = 0;
29994 +    }
29995 +}
29996 diff -Nur a/gcc/testsuite/gcc.dg/promote-short-9.c b/gcc/testsuite/gcc.dg/promote-short-9.c
29997 --- a/gcc/testsuite/gcc.dg/promote-short-9.c    1970-01-01 01:00:00.000000000 +0100
29998 +++ b/gcc/testsuite/gcc.dg/promote-short-9.c    2010-01-25 09:50:29.165687452 +0100
29999 @@ -0,0 +1,15 @@
30000 +/* -fpromote-loop-indices used to ICE on this.  */
30001 +
30002 +/* { dg-do compile } */
30003 +/* { dg-options "-O2 -fpromote-loop-indices" } */
30004 +
30005 +char
30006 +lookup (char *haystack, char *needle)
30007 +{
30008 +  char x;
30009 +
30010 +  for (x = haystack[-2]; x < *needle; x++)
30011 +    haystack[x] = needle[x];
30012 +
30013 +  return 1;
30014 +}
30015 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-10.c b/gcc/testsuite/gcc.dg/remove-local-statics-10.c
30016 --- a/gcc/testsuite/gcc.dg/remove-local-statics-10.c    1970-01-01 01:00:00.000000000 +0100
30017 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-10.c    2010-01-25 09:50:29.165687452 +0100
30018 @@ -0,0 +1,32 @@
30019 +/* Verify that we do not eliminate a static local variable when it is
30020 +   live on return from a function call that recursively calls the
30021 +   function in which the variable is defined.  */
30022 +
30023 +/* { dg-do compile } */
30024 +/* { dg-options "-O2 -fremove-local-statics" } */
30025 +/* { dg-final { scan-assembler "thestatic" } } */
30026 +
30027 +int
30028 +test2 (int x)
30029 +{
30030 +  if (x < 0)
30031 +    return 0;
30032 +  else
30033 +    return test1 (x - 1);
30034 +}
30035 +
30036 +int
30037 +test1 (int x)
30038 +{
30039 +  static int thestatic;
30040 +  int y;
30041 +
30042 +  thestatic = x;
30043 +
30044 +  y = test2 (x - 1);
30045 +
30046 +  y += thestatic;
30047 +
30048 +  return y + x;
30049 +}
30050 +  
30051 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-11.c b/gcc/testsuite/gcc.dg/remove-local-statics-11.c
30052 --- a/gcc/testsuite/gcc.dg/remove-local-statics-11.c    1970-01-01 01:00:00.000000000 +0100
30053 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-11.c    2010-01-25 09:50:29.165687452 +0100
30054 @@ -0,0 +1,16 @@
30055 +/* Verify that we do not eliminate a static local variable when its
30056 +   address is taken.  */
30057 +
30058 +/* { dg-do compile } */
30059 +/* { dg-options "-O2 -fremove-local-statics" } */
30060 +/* { dg-final { scan-assembler "thestatic" } } */
30061 +
30062 +int *
30063 +test1 (int x)
30064 +{
30065 +  static int thestatic;
30066 +
30067 +  thestatic = x;
30068 +
30069 +  return &thestatic + x;
30070 +}
30071 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-12.c b/gcc/testsuite/gcc.dg/remove-local-statics-12.c
30072 --- a/gcc/testsuite/gcc.dg/remove-local-statics-12.c    1970-01-01 01:00:00.000000000 +0100
30073 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-12.c    2010-01-25 09:50:29.165687452 +0100
30074 @@ -0,0 +1,20 @@
30075 +/* Verify that we do not eliminate a static variable when it is declared
30076 +   in a function that has nested functions.  */
30077 +
30078 +/* { dg-do compile } */
30079 +/* { dg-options "-O2 -fremove-local-statics" } */
30080 +/* { dg-final { scan-assembler "thestatic" } } */
30081 +
30082 +int test1 (int x)
30083 +{
30084 +  static int thestatic;
30085 +
30086 +  int nested_test1 (int x)
30087 +  {
30088 +    return x + thestatic;
30089 +  }
30090 +
30091 +  thestatic = x;
30092 +
30093 +  return thestatic + x + nested_test1 (x);
30094 +}
30095 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-13.c b/gcc/testsuite/gcc.dg/remove-local-statics-13.c
30096 --- a/gcc/testsuite/gcc.dg/remove-local-statics-13.c    1970-01-01 01:00:00.000000000 +0100
30097 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-13.c    2010-01-25 09:50:29.165687452 +0100
30098 @@ -0,0 +1,24 @@
30099 +/* We used to ICE on this test, because the call to BAR appeared to
30100 +   define both static variables in FOO.  Verify that we no longer do
30101 +   this.  */
30102 +
30103 +/* { dg-do compile } */
30104 +/* { dg-options "-O2 -fremove-local-statics" } */
30105 +/* { dg-final { scan-assembler "static1" } } */
30106 +/* { dg-final { scan-assembler-not "static2" } } */
30107 +
30108 +int foo(int i) {
30109 +  static int static1 = 0;
30110 +  static int static2;
30111 +
30112 +  if (static2 = bar(i))
30113 +    static1 = 1;
30114 +  static2 = static1 + 30;
30115 +
30116 +  return static1 + static2;
30117 +}
30118 +
30119 +int bar(int i) {
30120 +  if (i) { foo(i-1); return 0; }
30121 +  return 1;
30122 +}
30123 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-14.c b/gcc/testsuite/gcc.dg/remove-local-statics-14.c
30124 --- a/gcc/testsuite/gcc.dg/remove-local-statics-14.c    1970-01-01 01:00:00.000000000 +0100
30125 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-14.c    2010-01-25 09:50:29.165687452 +0100
30126 @@ -0,0 +1,29 @@
30127 +/* Verify that we do eliminate a static local variable whose last use is
30128 +   in a statement containing a call expression.  */
30129 +
30130 +/* { dg-do compile } */
30131 +/* { dg-options "-O2 -fremove-local-statics" } */
30132 +/* { dg-final { scan-assembler-not "thestatic" } } */
30133 +
30134 +int
30135 +test2 (int x)
30136 +{
30137 +  if (x < 0)
30138 +    return 0;
30139 +  else
30140 +    return test1 (x - 1);
30141 +}
30142 +
30143 +int
30144 +test1 (int x)
30145 +{
30146 +  static int thestatic;
30147 +  int y;
30148 +
30149 +  thestatic = x;
30150 +
30151 +  y = test2 (thestatic - 1);
30152 +
30153 +  return y + x;
30154 +}
30155 +  
30156 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-15.c b/gcc/testsuite/gcc.dg/remove-local-statics-15.c
30157 --- a/gcc/testsuite/gcc.dg/remove-local-statics-15.c    1970-01-01 01:00:00.000000000 +0100
30158 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-15.c    2010-01-25 09:50:29.165687452 +0100
30159 @@ -0,0 +1,17 @@
30160 +/* Verify that we do not consider an array variable for local static
30161 +   elimination.  */
30162 +
30163 +/* { dg-do compile } */
30164 +/* { dg-options "-O2 -fremove-local-statics -fdump-tree-remlocstatic-details" } */
30165 +
30166 +int foo (void)
30167 +{
30168 +  static int a[1];
30169 +
30170 +  a[0] = 0;
30171 +
30172 +  return a[0];
30173 +}
30174 +
30175 +/* { dg-final { scan-tree-dump-times "static variables to consider" 0 "remlocstatic" } } */
30176 +/* { dg-final { cleanup-tree-dump "remlocstatic" } } */
30177 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-16.c b/gcc/testsuite/gcc.dg/remove-local-statics-16.c
30178 --- a/gcc/testsuite/gcc.dg/remove-local-statics-16.c    1970-01-01 01:00:00.000000000 +0100
30179 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-16.c    2010-01-25 09:50:29.165687452 +0100
30180 @@ -0,0 +1,20 @@
30181 +/* Verify that we do not consider an structure variable for local static
30182 +   elimination.  */
30183 +
30184 +/* { dg-do compile } */
30185 +/* { dg-options "-O2 -fremove-local-statics -fdump-tree-remlocstatic-details" } */
30186 +
30187 +int foo (void)
30188 +{
30189 +  static struct {
30190 +    int x;
30191 +    int y;
30192 +  } a;
30193 +
30194 +  a.x = 0;
30195 +
30196 +  return a.y;
30197 +}
30198 +
30199 +/* { dg-final { scan-tree-dump-times "static variables to consider" 0 "remlocstatic" } } */
30200 +/* { dg-final { cleanup-tree-dump "remlocstatic" } } */
30201 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-17.c b/gcc/testsuite/gcc.dg/remove-local-statics-17.c
30202 --- a/gcc/testsuite/gcc.dg/remove-local-statics-17.c    1970-01-01 01:00:00.000000000 +0100
30203 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-17.c    2010-01-25 09:50:29.165687452 +0100
30204 @@ -0,0 +1,19 @@
30205 +/* Verify that we do not eliminate a static variable that is "defined"
30206 +   by an asm that clobbers memory.  */
30207 +
30208 +/* { dg-do compile } */
30209 +/* { dg-options "-O2 -fremove-local-statics -fdump-tree-remlocstatic-details" } */
30210 +
30211 +int foo (void)
30212 +{
30213 +  static int foo = 0;
30214 +
30215 +  __asm__ __volatile__ ("bogus" : : : "memory");
30216 +
30217 +  foo++;
30218 +
30219 +  return foo;
30220 +}
30221 +
30222 +/* { dg-final { scan-tree-dump-times "static variables to consider" 0 "remlocstatic" } } */
30223 +/* { dg-final { cleanup-tree-dump "remlocstatic" } } */
30224 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-1.c b/gcc/testsuite/gcc.dg/remove-local-statics-1.c
30225 --- a/gcc/testsuite/gcc.dg/remove-local-statics-1.c     1970-01-01 01:00:00.000000000 +0100
30226 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-1.c     2010-01-25 09:50:29.165687452 +0100
30227 @@ -0,0 +1,16 @@
30228 +/* Verify that we eliminate a static local variable where its uses
30229 +   are dominated by a def.  */
30230 +
30231 +/* { dg-do compile } */
30232 +/* { dg-options "-O2 -fremove-local-statics" } */
30233 +/* { dg-final { scan-assembler-not "thestatic" } } */
30234 +
30235 +int
30236 +test1 (int x)
30237 +{
30238 +  static int thestatic;
30239 +
30240 +  thestatic = x;
30241 +
30242 +  return thestatic + x;
30243 +}
30244 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-2.c b/gcc/testsuite/gcc.dg/remove-local-statics-2.c
30245 --- a/gcc/testsuite/gcc.dg/remove-local-statics-2.c     1970-01-01 01:00:00.000000000 +0100
30246 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-2.c     2010-01-25 09:50:29.165687452 +0100
30247 @@ -0,0 +1,19 @@
30248 +/* Verify that we do not eliminate a static local variable when its uses
30249 +   are not dominated by a def.  */
30250 +
30251 +/* { dg-do compile } */
30252 +/* { dg-options "-O2 -fremove-local-statics" } */
30253 +/* { dg-final { scan-assembler "first_time" } } */
30254 +
30255 +int
30256 +test1 (int x)
30257 +{
30258 +  static int first_time;
30259 +
30260 +  if (x == 1)
30261 +    first_time = 1;
30262 +  else if (x > 0)
30263 +    first_time = 2;
30264 +
30265 +  return first_time + x;
30266 +}
30267 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-3.c b/gcc/testsuite/gcc.dg/remove-local-statics-3.c
30268 --- a/gcc/testsuite/gcc.dg/remove-local-statics-3.c     1970-01-01 01:00:00.000000000 +0100
30269 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-3.c     2010-01-25 09:50:29.235686709 +0100
30270 @@ -0,0 +1,16 @@
30271 +/* Verify that we do not eliminate a static local variable whose uses
30272 +   are dominated by a def when the variable is volatile.  */
30273 +
30274 +/* { dg-do compile } */
30275 +/* { dg-options "-O2 -fremove-local-statics" } */
30276 +/* { dg-final { scan-assembler "thestatic" } } */
30277 +
30278 +int
30279 +test1 (int x)
30280 +{
30281 +  static volatile int thestatic;
30282 +
30283 +  thestatic = x;
30284 +
30285 +  return thestatic + x;
30286 +}
30287 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-4.c b/gcc/testsuite/gcc.dg/remove-local-statics-4.c
30288 --- a/gcc/testsuite/gcc.dg/remove-local-statics-4.c     1970-01-01 01:00:00.000000000 +0100
30289 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-4.c     2010-01-25 09:50:29.235686709 +0100
30290 @@ -0,0 +1,15 @@
30291 +/* Verify that we don't eliminate a global static variable.  */
30292 +
30293 +/* { dg-do compile } */
30294 +/* { dg-options "-O2 -fremove-local-statics" } */
30295 +/* { dg-final { scan-assembler "global_static" } } */
30296 +
30297 +static int global_static;
30298 +
30299 +int
30300 +test1 (int x)
30301 +{
30302 +  global_static = x;
30303 +
30304 +  return global_static + x;
30305 +}
30306 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-5.c b/gcc/testsuite/gcc.dg/remove-local-statics-5.c
30307 --- a/gcc/testsuite/gcc.dg/remove-local-statics-5.c     1970-01-01 01:00:00.000000000 +0100
30308 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-5.c     2010-01-25 09:50:29.235686709 +0100
30309 @@ -0,0 +1,24 @@
30310 +/* Verify that we do not eliminate a static local variable whose uses
30311 +   are dominated by a def when the function calls setjmp.  */
30312 +
30313 +/* { dg-do compile } */
30314 +/* { dg-options "-O2 -fremove-local-statics" } */
30315 +/* { dg-final { scan-assembler "thestatic" } } */
30316 +
30317 +#include <setjmp.h>
30318 +
30319 +int
30320 +foo (int x)
30321 +{
30322 +  static int thestatic;
30323 +  int retval;
30324 +  jmp_buf env;
30325 +
30326 +  thestatic = x;
30327 +
30328 +  retval = thestatic + x;
30329 +
30330 +  setjmp (env);
30331 +
30332 +  return retval;
30333 +}
30334 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-6.c b/gcc/testsuite/gcc.dg/remove-local-statics-6.c
30335 --- a/gcc/testsuite/gcc.dg/remove-local-statics-6.c     1970-01-01 01:00:00.000000000 +0100
30336 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-6.c     2010-01-25 09:50:29.235686709 +0100
30337 @@ -0,0 +1,16 @@
30338 +/* Verify that we do not eliminate a static local variable whose uses
30339 +   are dominated by a def when the variable is addressed.  */
30340 +
30341 +/* { dg-do compile } */
30342 +/* { dg-options "-O2 -fremove-local-statics" } */
30343 +/* { dg-final { scan-assembler "thestatic" } } */
30344 +
30345 +int *
30346 +test1 (int x)
30347 +{
30348 +  static int thestatic;
30349 +
30350 +  thestatic = x;
30351 +
30352 +  return &thestatic + x;
30353 +}
30354 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-7.c b/gcc/testsuite/gcc.dg/remove-local-statics-7.c
30355 --- a/gcc/testsuite/gcc.dg/remove-local-statics-7.c     1970-01-01 01:00:00.000000000 +0100
30356 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-7.c     2010-01-25 09:50:29.235686709 +0100
30357 @@ -0,0 +1,21 @@
30358 +/* Verify that we eliminate a static local variable where it is defined
30359 +   along all paths leading to a use.
30360 +
30361 +   XFAIL'd because our analysis is currently too weak.  */
30362 +
30363 +/* { dg-do compile } */
30364 +/* { dg-options "-O2 -fremove-local-statics" } */
30365 +/* { dg-final { scan-assembler-not "thestatic" } } */
30366 +
30367 +int
30368 +test1 (int x)
30369 +{
30370 +  static int thestatic;
30371 +
30372 +  if (x < 0)
30373 +    thestatic = x;
30374 +  else
30375 +    thestatic = -x;
30376 +
30377 +  return thestatic + x;
30378 +}
30379 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-8.c b/gcc/testsuite/gcc.dg/remove-local-statics-8.c
30380 --- a/gcc/testsuite/gcc.dg/remove-local-statics-8.c     1970-01-01 01:00:00.000000000 +0100
30381 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-8.c     2010-01-25 09:50:29.235686709 +0100
30382 @@ -0,0 +1,33 @@
30383 +/* Verify that we eliminate a static local variable when it is dead on
30384 +   return from a function call that recursively calls the function in
30385 +   which the variable is defined.  */
30386 +
30387 +/* { dg-do compile } */
30388 +/* { dg-options "-O2 -fremove-local-statics" } */
30389 +/* { dg-final { scan-assembler-not "thestatic" } } */
30390 +
30391 +int test1 (int);
30392 +int test2 (int);
30393 +
30394 +int
30395 +test2 (int x)
30396 +{
30397 +  if (x < 0)
30398 +    return 0;
30399 +  else
30400 +    return test1 (x - 1);
30401 +}
30402 +
30403 +int
30404 +test1 (int x)
30405 +{
30406 +  static int thestatic;
30407 +  int y;
30408 +
30409 +  thestatic = x;
30410 +
30411 +  y = thestatic;
30412 +
30413 +  return y + x + test1 (x - 1) + test2 (x - 1);
30414 +}
30415 +  
30416 diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-9.c b/gcc/testsuite/gcc.dg/remove-local-statics-9.c
30417 --- a/gcc/testsuite/gcc.dg/remove-local-statics-9.c     1970-01-01 01:00:00.000000000 +0100
30418 +++ b/gcc/testsuite/gcc.dg/remove-local-statics-9.c     2010-01-25 09:50:29.235686709 +0100
30419 @@ -0,0 +1,34 @@
30420 +/* Verify that we eliminate a static local variable when it is live
30421 +   on return from a function call that does not recursively call the
30422 +   function in which the variable is defined.  */
30423 +
30424 +/* XFAIL'd because we don't utilize the callgraph properly.  */
30425 +
30426 +/* { dg-do compile } */
30427 +/* { dg-options "-O2 -fremove-local-statics" } */
30428 +/* { dg-final { scan-assembler-not "thestatic" { xfail *-*-* } } } */
30429 +
30430 +static int
30431 +test2 (int x)
30432 +{
30433 +  if (x < 0)
30434 +    return 0;
30435 +  else
30436 +    return x + test2 (x - 1);
30437 +}
30438 +
30439 +int
30440 +test1 (int x)
30441 +{
30442 +  static int thestatic;
30443 +  int y;
30444 +
30445 +  thestatic = x;
30446 +
30447 +  y = test2 (x - 1);
30448 +
30449 +  y += thestatic;
30450 +
30451 +  return y + x;
30452 +}
30453 +  
30454 diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c
30455 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c    1970-01-01 01:00:00.000000000 +0100
30456 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c    2010-01-25 09:50:29.235686709 +0100
30457 @@ -0,0 +1,29 @@
30458 +/* { dg-do compile { target arm*-*-* } } */
30459 +/* { dg-options "-mfp16-format=ieee" } */
30460 +
30461 +/* Test basic assignments and conversions for __fp16.  */
30462 +
30463 +__fp16 h0 = -1.0;
30464 +__fp16 h1 = 0.0;
30465 +__fp16 h2 = 1234.0;
30466 +__fp16 h3 = 42.0;
30467 +float f1 = 2.0;
30468 +float f2 = -999.9;
30469 +
30470 +void f (__fp16 *p)
30471 +{
30472 +  __fp16 t;
30473 +
30474 +  h0 = 1.0;
30475 +  h1 = h2;
30476 +  h2 = f1;
30477 +  f2 = h2;
30478 +
30479 +  t = *p;
30480 +  *p = h3;
30481 +  h3 = t;
30482 +}
30483 +
30484 +/* Make sure we are not falling through to undefined libcalls.  */
30485 +/* { dg-final { scan-assembler-not "__truncsfhf" } } */
30486 +/* { dg-final { scan-assembler-not "__extendhfsf" } } */
30487 diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c
30488 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c   1970-01-01 01:00:00.000000000 +0100
30489 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c   2010-01-25 09:50:29.235686709 +0100
30490 @@ -0,0 +1,41 @@
30491 +/* { dg-do compile { target arm*-*-* } } */
30492 +/* { dg-options "-mfp16-format=ieee" } */
30493 +
30494 +/* Test basic assignments and conversions for __fp16.  */
30495 +
30496 +__fp16 h1 = 0.0;
30497 +__fp16 h2 = 1234.0;
30498 +char c1 = 1;
30499 +char c2 = 2;
30500 +short s1 = 10;
30501 +short s2 = 20;
30502 +int i1 = -100;
30503 +int i2 = -200;
30504 +long long l1 = 1000.0;
30505 +long long l2 = 2000.0;
30506 +double d1 = -10000.0;
30507 +double d2 = -20000.0;
30508 +
30509 +void f (void)
30510 +{
30511 +  c1 = h1;
30512 +  h2 = c2;
30513 +
30514 +  h1 = s1;
30515 +  s2 = h2;
30516 +
30517 +  i1 = h1;
30518 +  h2 = i2;
30519 +
30520 +  h1 = l1;
30521 +  l2 = h2;
30522 +  
30523 +  d1 = h1;
30524 +  h2 = d2;
30525 +}
30526 +
30527 +/* Make sure we are not falling through to undefined libcalls.  */
30528 +/* { dg-final { scan-assembler-not "__float.ihf" } } */
30529 +/* { dg-final { scan-assembler-not "__fixhf.i" } } */
30530 +/* { dg-final { scan-assembler-not "__trunc.fhf" } } */
30531 +/* { dg-final { scan-assembler-not "__extendhf.f" } } */
30532 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
30533 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c   1970-01-01 01:00:00.000000000 +0100
30534 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c   2010-01-25 09:50:29.235686709 +0100
30535 @@ -0,0 +1,17 @@
30536 +/* Test floating-point conversions.  Standard types and __fp16.  */
30537 +/* { dg-do run { target arm*-*-* } } */
30538 +/* { dg-options "-mfp16-format=alternative" } */
30539 +
30540 +#include "fp-int-convert.h"
30541 +#define FP16_MANT_DIG 11
30542 +
30543 +int
30544 +main (void)
30545 +{
30546 +  TEST_I_F(signed char, unsigned char, float, FP16_MANT_DIG);
30547 +  TEST_I_F(signed short, unsigned short, float, FP16_MANT_DIG);
30548 +  TEST_I_F(signed int, unsigned int, float, FP16_MANT_DIG);
30549 +  TEST_I_F(signed long, unsigned long, float, FP16_MANT_DIG);
30550 +  TEST_I_F(signed long long, unsigned long long, float, FP16_MANT_DIG);
30551 +  exit (0);
30552 +}
30553 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
30554 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-ieee.c  1970-01-01 01:00:00.000000000 +0100
30555 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-ieee.c  2010-01-25 09:50:29.235686709 +0100
30556 @@ -0,0 +1,17 @@
30557 +/* Test floating-point conversions.  Standard types and __fp16.  */
30558 +/* { dg-do run { target arm*-*-* } } */
30559 +/* { dg-options "-mfp16-format=ieee" } */
30560 +
30561 +#include "fp-int-convert.h"
30562 +#define FP16_MANT_DIG 11
30563 +
30564 +int
30565 +main (void)
30566 +{
30567 +  TEST_I_F(signed char, unsigned char, float, FP16_MANT_DIG);
30568 +  TEST_I_F(signed short, unsigned short, float, FP16_MANT_DIG);
30569 +  TEST_I_F(signed int, unsigned int, float, FP16_MANT_DIG);
30570 +  TEST_I_F(signed long, unsigned long, float, FP16_MANT_DIG);
30571 +  TEST_I_F(signed long long, unsigned long long, float, FP16_MANT_DIG);
30572 +  exit (0);
30573 +}
30574 diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c
30575 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c     1970-01-01 01:00:00.000000000 +0100
30576 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c     2010-01-25 09:50:29.235686709 +0100
30577 @@ -0,0 +1,5 @@
30578 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
30579 +/* { dg-do run { target arm*-*-* } } */
30580 +/* { dg-options "-mfp16-format=ieee" } */
30581 +
30582 +#include "arm-fp16-ops.h"
30583 diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c
30584 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c     1970-01-01 01:00:00.000000000 +0100
30585 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c     2010-01-25 09:50:29.235686709 +0100
30586 @@ -0,0 +1,5 @@
30587 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
30588 +/* { dg-do run { target arm*-*-* } } */
30589 +/* { dg-options "-mfp16-format=ieee -ffast-math" } */
30590 +
30591 +#include "arm-fp16-ops.h"
30592 diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c
30593 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c     1970-01-01 01:00:00.000000000 +0100
30594 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c     2010-01-25 09:50:29.245686094 +0100
30595 @@ -0,0 +1,5 @@
30596 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
30597 +/* { dg-do run { target arm*-*-* } } */
30598 +/* { dg-options "-mfp16-format=alternative" } */
30599 +
30600 +#include "arm-fp16-ops.h"
30601 diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c
30602 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c     1970-01-01 01:00:00.000000000 +0100
30603 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c     2010-01-25 09:50:29.245686094 +0100
30604 @@ -0,0 +1,5 @@
30605 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
30606 +/* { dg-do run { target arm*-*-* } } */
30607 +/* { dg-options "-mfp16-format=alternative -ffast-math" } */
30608 +
30609 +#include "arm-fp16-ops.h"
30610 diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c
30611 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c     1970-01-01 01:00:00.000000000 +0100
30612 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c     2010-01-25 09:50:29.245686094 +0100
30613 @@ -0,0 +1,15 @@
30614 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
30615 +/* { dg-do compile { target arm*-*-* } } */
30616 +/* { dg-require-effective-target arm_neon_fp16_ok } */
30617 +/* { dg-options "-mfp16-format=ieee" } */
30618 +/* { dg-add-options arm_neon_fp16 } */
30619 +
30620 +#include "arm-fp16-ops.h"
30621 +
30622 +/* We've specified options for hardware float, including fp16 support, so
30623 +   we should not see any calls to libfuncs here.  */
30624 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
30625 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
30626 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
30627 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
30628 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
30629 diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c
30630 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c     1970-01-01 01:00:00.000000000 +0100
30631 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c     2010-01-25 09:50:29.245686094 +0100
30632 @@ -0,0 +1,15 @@
30633 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
30634 +/* { dg-do compile { target arm*-*-* } } */
30635 +/* { dg-require-effective-target arm_neon_fp16_ok } */
30636 +/* { dg-options "-mfp16-format=ieee -ffast-math" } */
30637 +/* { dg-add-options arm_neon_fp16 } */
30638 +
30639 +#include "arm-fp16-ops.h"
30640 +
30641 +/* We've specified options for hardware float, including fp16 support, so
30642 +   we should not see any calls to libfuncs here.  */
30643 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
30644 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
30645 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
30646 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
30647 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
30648 diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c
30649 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c     1970-01-01 01:00:00.000000000 +0100
30650 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c     2010-01-25 09:50:29.245686094 +0100
30651 @@ -0,0 +1,13 @@
30652 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
30653 +/* { dg-do compile { target arm*-*-* } } */
30654 +/* { dg-require-effective-target arm_neon_ok } */
30655 +/* { dg-options "-mfp16-format=ieee" } */
30656 +/* { dg-add-options arm_neon } */
30657 +
30658 +#include "arm-fp16-ops.h"
30659 +
30660 +/* We've specified options for hardware float, so we should not see any 
30661 +   calls to libfuncs here except for those to the conversion functions.  */
30662 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
30663 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
30664 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
30665 diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c
30666 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c     1970-01-01 01:00:00.000000000 +0100
30667 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c     2010-01-25 09:50:29.245686094 +0100
30668 @@ -0,0 +1,13 @@
30669 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
30670 +/* { dg-do compile { target arm*-*-* } } */
30671 +/* { dg-require-effective-target arm_neon_ok } */
30672 +/* { dg-options "-mfp16-format=ieee -ffast-math" } */
30673 +/* { dg-add-options arm_neon } */
30674 +
30675 +#include "arm-fp16-ops.h"
30676 +
30677 +/* We've specified options for hardware float, so we should not see any 
30678 +   calls to libfuncs here except for those to the conversion functions.  */
30679 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
30680 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
30681 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
30682 diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops.h b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops.h
30683 --- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops.h       1970-01-01 01:00:00.000000000 +0100
30684 +++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops.h       2010-01-25 09:50:29.245686094 +0100
30685 @@ -0,0 +1,135 @@
30686 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
30687 +
30688 +#include <assert.h>
30689 +
30690 +#define CHECK(e,r) assert ((e) == r)
30691 +#define CHECK2(e,r) (assert ((e) == r), temp = (e), assert (temp == r))
30692 +#define TEST(e) assert (e)
30693 +#define TESTNOT(e) assert (!(e))
30694 +
30695 +volatile __fp16 h0 = 0.0;
30696 +volatile __fp16 h1 = 1.0;
30697 +volatile __fp16 h42 = 42.0;
30698 +volatile __fp16 hm2 = -2.0;
30699 +volatile __fp16 temp;
30700 +
30701 +volatile float f0 = 0.0;
30702 +volatile float f1 = 1.0;
30703 +volatile float f42 = 42.0;
30704 +volatile float fm2 = -2.0;
30705 +
30706 +int main (void)
30707 +{
30708 +  TEST (h1);
30709 +  TESTNOT (h0);
30710 +  TEST (!h0);
30711 +  TESTNOT (!h1);
30712 +
30713 +  CHECK2 (-h1, -1.0);
30714 +  CHECK2 (+h1, 1.0);
30715 +
30716 +  CHECK (h1++, 1.0);
30717 +  CHECK (h1, 2.0);
30718 +  CHECK (++h1, 3.0);
30719 +  CHECK (h1, 3.0);
30720 +
30721 +  CHECK (--h1, 2.0);
30722 +  CHECK (h1, 2.0);
30723 +  CHECK (h1--, 2.0);
30724 +  CHECK (h1, 1.0);
30725 +
30726 +  CHECK2 (h42 * hm2, -84.0);
30727 +  CHECK2 (h42 * (__fp16) -2.0, -84.0);
30728 +  CHECK2 (h42 * fm2, -84.0);
30729 +  CHECK2 (f42 * hm2, -84.0);
30730 +
30731 +  CHECK2 (h42 / hm2, -21.0);
30732 +  CHECK2 (h42 / (__fp16) -2.0, -21.0);
30733 +  CHECK2 (h42 / fm2, -21.0);
30734 +  CHECK2 (f42 / hm2, -21.0);
30735 +
30736 +  CHECK2 (hm2 + h42, 40.0);
30737 +  CHECK2 ((__fp16)-2.0 + h42, 40.0);
30738 +  CHECK2 (hm2 + f42, 40.0);
30739 +  CHECK2 (fm2 + h42, 40.0);
30740 +
30741 +  CHECK2 (hm2 - h42, -44.0);
30742 +  CHECK2 ((__fp16)-2.0 - h42, -44.0);
30743 +  CHECK2 (hm2 - f42, -44.0);
30744 +  CHECK2 (fm2 - h42, -44.0);
30745 +
30746 +  TEST (hm2 < h42);
30747 +  TEST (hm2 < (__fp16)42.0);
30748 +  TEST (hm2 < f42);
30749 +  TEST (fm2 < h42);
30750 +
30751 +  TEST (h42 > hm2);
30752 +  TEST ((__fp16)42.0 > hm2);
30753 +  TEST (h42 > fm2);
30754 +  TEST (f42 > hm2);
30755 +
30756 +  TEST (hm2 <= h42);
30757 +  TEST (hm2 <= (__fp16)42.0);
30758 +  TEST (hm2 <= f42);
30759 +  TEST (fm2 <= h42);
30760 +
30761 +  TEST (h42 >= hm2);
30762 +  TEST (h42 >= (__fp16)-2.0);
30763 +  TEST (h42 >= fm2);
30764 +  TEST (f42 >= hm2);
30765 +
30766 +  TESTNOT (h1 == hm2);
30767 +  TEST (h1 == h1);
30768 +  TEST (h1 == (__fp16)1.0);
30769 +  TEST (h1 == f1);
30770 +  TEST (f1 == h1);
30771 +
30772 +  TEST (h1 != hm2);
30773 +  TESTNOT (h1 != h1);
30774 +  TESTNOT (h1 != (__fp16)1.0);
30775 +  TESTNOT (h1 != f1);
30776 +  TESTNOT (f1 != h1);
30777 +
30778 +  CHECK2 ((h1 ? hm2 : h42), -2.0);
30779 +  CHECK2 ((h0 ? hm2 : h42), 42.0);
30780 +
30781 +  CHECK (h0 = h42, 42.0);
30782 +  CHECK (h0, 42.0);
30783 +  CHECK (h0 = (__fp16)-2.0, -2.0);
30784 +  CHECK (h0, -2.0);
30785 +  CHECK (h0 = f0, 0.0);
30786 +  CHECK (h0, 0.0);
30787 +
30788 +  CHECK (h0 += h1, 1.0);
30789 +  CHECK (h0, 1.0);
30790 +  CHECK (h0 += (__fp16)1.0, 2.0);
30791 +  CHECK (h0, 2.0);
30792 +  CHECK (h0 += fm2, 0.0);
30793 +  CHECK (h0, 0.0);
30794 +
30795 +  CHECK (h0 -= h1, -1.0);
30796 +  CHECK (h0, -1.0);
30797 +  CHECK (h0 -= (__fp16)1.0, -2.0);
30798 +  CHECK (h0, -2.0);
30799 +  CHECK (h0 -= fm2, 0.0);
30800 +  CHECK (h0, 0.0);
30801 +
30802 +  h0 = hm2;
30803 +  CHECK (h0 *= hm2, 4.0);
30804 +  CHECK (h0, 4.0);
30805 +  CHECK (h0 *= (__fp16)-2.0, -8.0);
30806 +  CHECK (h0, -8.0);
30807 +  CHECK (h0 *= fm2, 16.0);
30808 +  CHECK (h0, 16.0);
30809 +
30810 +  CHECK (h0 /= hm2, -8.0);
30811 +  CHECK (h0, -8.0);
30812 +  CHECK (h0 /= (__fp16)-2.0, 4.0);
30813 +  CHECK (h0, 4.0);
30814 +  CHECK (h0 /= fm2, -2.0);
30815 +  CHECK (h0, -2.0);
30816 +
30817 +  CHECK ((h0, h1), 1.0);
30818 +
30819 +  return 0;
30820 +}
30821 diff -Nur a/gcc/testsuite/gcc.dg/torture/type-generic-1.c b/gcc/testsuite/gcc.dg/torture/type-generic-1.c
30822 --- a/gcc/testsuite/gcc.dg/torture/type-generic-1.c     2008-12-10 08:49:40.000000000 +0100
30823 +++ b/gcc/testsuite/gcc.dg/torture/type-generic-1.c     2010-01-25 09:50:29.245686094 +0100
30824 @@ -3,6 +3,7 @@
30825  
30826  /* { dg-do run } */
30827  /* { dg-options "-mieee" { target alpha*-*-* sh*-*-* } } */
30828 +/* { dg-options "-Wl,--defsym=__cs3_mips_float_type=2 -lcs3-mips-cp1 -lcs3-mips-fpemu" { target mips*-*sde*-* } } */
30829  /* { dg-skip-if "No Inf/NaN support" { spu-*-* } } */
30830  
30831  #include "../tg-tests.h"
30832 diff -Nur a/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c b/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c
30833 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c   2007-07-12 04:20:04.000000000 +0200
30834 +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c   2010-01-25 09:50:29.245686094 +0100
30835 @@ -1,5 +1,5 @@
30836  /* { dg-do compile } */
30837 -/* { dg-options "-O2 -fdump-tree-vrp1-details" } */
30838 +/* { dg-options "-O2 -fdump-tree-vrp1-details -fno-remove-local-statics" } */
30839  
30840  static int blocksize = 4096;
30841  
30842 diff -Nur a/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
30843 --- a/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c        2007-06-10 22:39:22.000000000 +0200
30844 +++ b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c        2010-01-25 09:50:29.245686094 +0100
30845 @@ -1,5 +1,6 @@
30846  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
30847  /* { dg-require-effective-target ilp32 } */
30848 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=athlon" } } */
30849  /* { 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" } */
30850  
30851  #define K 1000000
30852 diff -Nur a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c
30853 --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c 2005-04-26 19:15:46.000000000 +0200
30854 +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c 2010-01-25 09:50:29.245686094 +0100
30855 @@ -1,5 +1,5 @@
30856  /* { dg-do compile } */
30857 -/* { dg-options "-O2 -fdump-tree-dse1" } */
30858 +/* { dg-options "-O2 -fdump-tree-dse1 -fno-remove-local-statics" } */
30859  
30860  int foo11 (int c)
30861  {
30862 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
30863 --- a/gcc/testsuite/gcc.dg/vect/aligned-section-anchors-nest-1.c        1970-01-01 01:00:00.000000000 +0100
30864 +++ b/gcc/testsuite/gcc.dg/vect/aligned-section-anchors-nest-1.c        2010-01-25 09:50:29.245686094 +0100
30865 @@ -0,0 +1,34 @@
30866 +/* { dg-do compile } */
30867 +/* { dg-require-effective-target section_anchors } */
30868 +/* { dg-require-effective-target vect_int } */
30869 +
30870 +#include <stdarg.h>
30871 +#include "tree-vect.h"
30872 +
30873 +#define N 32
30874 +
30875 +static int a[N][N];
30876 +static int b[N][N];
30877 +static int c[N][N];
30878 +
30879 +void clobber(int *);
30880 +
30881 +int *foo(void)
30882 +{
30883 +  int i;
30884 +  int j;
30885 +
30886 +  clobber (&a[0][0]);
30887 +  clobber (&b[0][0]);
30888 +  clobber (&c[0][0]);
30889 +
30890 +  for (i = 0; i < N; i++) {
30891 +      for (j = 0; j < N; j++) {
30892 +         c[j][i] += a[j][i] + c[j][i];
30893 +      }
30894 +  }
30895 +  return &c[0][0];
30896 +}
30897 +
30898 +/* { dg-final { scan-ipa-dump-times "Increasing alignment of decl" 3 "increase_alignment" } } */
30899 +/* { dg-final { cleanup-ipa-dump "increase_alignment" } } */
30900 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
30901 --- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-31.c    2007-10-30 06:25:10.000000000 +0100
30902 +++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-31.c    2010-01-25 09:50:29.245686094 +0100
30903 @@ -88,5 +88,5 @@
30904  
30905  /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
30906  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
30907 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
30908 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { ! vect_element_align } } } } */
30909  /* { dg-final { cleanup-tree-dump "vect" } } */
30910 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
30911 --- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-64.c    2007-10-30 06:25:10.000000000 +0100
30912 +++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-64.c    2010-01-25 09:50:29.245686094 +0100
30913 @@ -84,5 +84,5 @@
30914  
30915  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
30916  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
30917 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
30918 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { ! vect_element_align } } } } */
30919  /* { dg-final { cleanup-tree-dump "vect" } } */
30920 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
30921 --- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-66.c    2008-04-27 18:27:08.000000000 +0200
30922 +++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-66.c    2010-01-25 09:50:29.245686094 +0100
30923 @@ -79,5 +79,5 @@
30924  
30925  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
30926  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
30927 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
30928 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
30929  /* { dg-final { cleanup-tree-dump "vect" } } */
30930 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
30931 --- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-68.c    2007-10-30 06:25:10.000000000 +0100
30932 +++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-68.c    2010-01-25 09:50:29.245686094 +0100
30933 @@ -88,5 +88,5 @@
30934  
30935  /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
30936  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
30937 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
30938 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { ! vect_element_align } } } } */
30939  /* { dg-final { cleanup-tree-dump "vect" } } */
30940 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
30941 --- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-69.c    2008-04-27 18:27:08.000000000 +0200
30942 +++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-69.c    2010-01-25 09:50:29.245686094 +0100
30943 @@ -114,7 +114,7 @@
30944  
30945  /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
30946  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
30947 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail {! vector_alignment_reachable} } } } */
30948 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_element_align || {! vector_alignment_reachable} } } } } */
30949  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target {! vector_alignment_reachable} } } } */
30950 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target {! vector_alignment_reachable} } } } */
30951 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { { ! vector_alignment_reachable } && { ! vect_element_align } } } } } */
30952  /* { dg-final { cleanup-tree-dump "vect" } } */
30953 diff -Nur a/gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c b/gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
30954 --- a/gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c       2007-08-07 21:13:27.000000000 +0200
30955 +++ b/gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c       2010-01-25 09:50:29.245686094 +0100
30956 @@ -115,6 +115,6 @@
30957  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
30958  /* Alignment forced using versioning until the pass that increases alignment
30959    is extended to handle structs.  */
30960 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 4 "vect" { target {vect_int && vector_alignment_reachable } } } } */
30961 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 4 "vect" { target { {vect_int && vector_alignment_reachable } && { ! vect_element_align } } } } } */
30962  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 4 "vect" { target {vect_int && {! vector_alignment_reachable} } } } } */
30963  /* { dg-final { cleanup-tree-dump "vect" } } */
30964 diff -Nur a/gcc/testsuite/gcc.dg/vect/slp-25.c b/gcc/testsuite/gcc.dg/vect/slp-25.c
30965 --- a/gcc/testsuite/gcc.dg/vect/slp-25.c        2008-04-22 01:32:32.000000000 +0200
30966 +++ b/gcc/testsuite/gcc.dg/vect/slp-25.c        2010-01-25 09:50:29.245686094 +0100
30967 @@ -56,5 +56,5 @@
30968  
30969  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
30970  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
30971 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail vect_no_align } } } */
30972 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
30973  /* { dg-final { cleanup-tree-dump "vect" } } */
30974 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-109.c b/gcc/testsuite/gcc.dg/vect/vect-109.c
30975 --- a/gcc/testsuite/gcc.dg/vect/vect-109.c      2007-09-04 15:05:19.000000000 +0200
30976 +++ b/gcc/testsuite/gcc.dg/vect/vect-109.c      2010-01-25 09:50:29.245686094 +0100
30977 @@ -73,6 +73,6 @@
30978  }
30979  
30980  /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect" } } */
30981 -/* { dg-final { scan-tree-dump-times "not vectorized: unsupported unaligned store" 2 "vect" } } */
30982 +/* { dg-final { scan-tree-dump-times "not vectorized: unsupported unaligned store" 2 "vect" { target { ! vect_element_align } } } } */
30983  /* { dg-final { cleanup-tree-dump "vect" } } */
30984  
30985 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-26.c b/gcc/testsuite/gcc.dg/vect/vect-26.c
30986 --- a/gcc/testsuite/gcc.dg/vect/vect-26.c       2007-09-04 15:05:19.000000000 +0200
30987 +++ b/gcc/testsuite/gcc.dg/vect/vect-26.c       2010-01-25 09:50:29.245686094 +0100
30988 @@ -37,5 +37,5 @@
30989  
30990  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
30991  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
30992 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
30993 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
30994  /* { dg-final { cleanup-tree-dump "vect" } } */
30995 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-27.c b/gcc/testsuite/gcc.dg/vect/vect-27.c
30996 --- a/gcc/testsuite/gcc.dg/vect/vect-27.c       2007-10-30 06:25:10.000000000 +0100
30997 +++ b/gcc/testsuite/gcc.dg/vect/vect-27.c       2010-01-25 09:50:29.245686094 +0100
30998 @@ -45,6 +45,6 @@
30999  /* The initialization induction loop (with aligned access) is also vectorized.  */
31000  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail vect_no_align } } } */
31001  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_no_align } } } */
31002 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
31003 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
31004 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31005 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
31006  /* { dg-final { cleanup-tree-dump "vect" } } */
31007 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-28.c b/gcc/testsuite/gcc.dg/vect/vect-28.c
31008 --- a/gcc/testsuite/gcc.dg/vect/vect-28.c       2007-09-04 15:05:19.000000000 +0200
31009 +++ b/gcc/testsuite/gcc.dg/vect/vect-28.c       2010-01-25 09:50:29.245686094 +0100
31010 @@ -40,6 +40,6 @@
31011  
31012  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
31013  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
31014 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target vector_alignment_reachable } } } */
31015 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { vector_alignment_reachable && { ! vect_element_align } } } } } */
31016  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { ! vector_alignment_reachable } } } } */
31017  /* { dg-final { cleanup-tree-dump "vect" } } */
31018 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-29.c b/gcc/testsuite/gcc.dg/vect/vect-29.c
31019 --- a/gcc/testsuite/gcc.dg/vect/vect-29.c       2007-10-30 06:25:10.000000000 +0100
31020 +++ b/gcc/testsuite/gcc.dg/vect/vect-29.c       2010-01-25 09:50:29.245686094 +0100
31021 @@ -50,7 +50,7 @@
31022  
31023  /* The initialization induction loop (with aligned access) is also vectorized.  */
31024  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
31025 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
31026 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
31027 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31028 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
31029  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" {target vect_no_align } } } */
31030  /* { dg-final { cleanup-tree-dump "vect" } } */
31031 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-33.c b/gcc/testsuite/gcc.dg/vect/vect-33.c
31032 --- a/gcc/testsuite/gcc.dg/vect/vect-33.c       2007-09-04 15:05:19.000000000 +0200
31033 +++ b/gcc/testsuite/gcc.dg/vect/vect-33.c       2010-01-25 09:50:29.245686094 +0100
31034 @@ -39,6 +39,6 @@
31035  
31036  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
31037  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
31038 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target vector_alignment_reachable } } } */
31039 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { vector_alignment_reachable && { ! vect_element_align } } } } } */
31040  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { ! vector_alignment_reachable } } } } */
31041  /* { dg-final { cleanup-tree-dump "vect" } } */
31042 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-42.c b/gcc/testsuite/gcc.dg/vect/vect-42.c
31043 --- a/gcc/testsuite/gcc.dg/vect/vect-42.c       2007-09-04 15:05:19.000000000 +0200
31044 +++ b/gcc/testsuite/gcc.dg/vect/vect-42.c       2010-01-25 09:50:29.245686094 +0100
31045 @@ -57,6 +57,6 @@
31046  
31047  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31048  /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { vect_no_align || { ! vector_alignment_reachable } } } } } */
31049 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || { ! vector_alignment_reachable } } } } } */
31050 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail {vect_no_align || { ! vector_alignment_reachable } } } } } */
31051 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { { vect_no_align || vect_element_align } || { ! vector_alignment_reachable } } } } } */
31052 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align || vect_element_align } || { ! vector_alignment_reachable } } } } } */
31053  /* { dg-final { cleanup-tree-dump "vect" } } */
31054 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-44.c b/gcc/testsuite/gcc.dg/vect/vect-44.c
31055 --- a/gcc/testsuite/gcc.dg/vect/vect-44.c       2007-09-04 15:05:19.000000000 +0200
31056 +++ b/gcc/testsuite/gcc.dg/vect/vect-44.c       2010-01-25 09:50:29.245686094 +0100
31057 @@ -65,8 +65,8 @@
31058     two loads to be aligned).  */
31059  
31060  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31061 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
31062 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } */
31063 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31064 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align || vect_element_align } || {! vector_alignment_reachable} } } } } */
31065  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target vect_no_align } } } */
31066  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && {! vect_no_align} } } } } */
31067  /* { dg-final { cleanup-tree-dump "vect" } } */
31068 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-48.c b/gcc/testsuite/gcc.dg/vect/vect-48.c
31069 --- a/gcc/testsuite/gcc.dg/vect/vect-48.c       2007-09-04 15:05:19.000000000 +0200
31070 +++ b/gcc/testsuite/gcc.dg/vect/vect-48.c       2010-01-25 09:50:29.245686094 +0100
31071 @@ -54,7 +54,7 @@
31072     (The store is aligned).  */
31073  
31074  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
31075 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
31076 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
31077 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31078 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
31079  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target vect_no_align } } } */
31080  /* { dg-final { cleanup-tree-dump "vect" } } */
31081 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-50.c b/gcc/testsuite/gcc.dg/vect/vect-50.c
31082 --- a/gcc/testsuite/gcc.dg/vect/vect-50.c       2007-09-04 15:05:19.000000000 +0200
31083 +++ b/gcc/testsuite/gcc.dg/vect/vect-50.c       2010-01-25 09:50:29.245686094 +0100
31084 @@ -61,8 +61,8 @@
31085     two loads to be aligned).  */
31086  
31087  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31088 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
31089 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } */
31090 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31091 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align || vect_element_align } || {! vector_alignment_reachable} } } } } */
31092  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target vect_no_align } } } */
31093  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && {! vect_no_align} } } } } */
31094  /* { dg-final { cleanup-tree-dump "vect" } } */
31095 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-52.c b/gcc/testsuite/gcc.dg/vect/vect-52.c
31096 --- a/gcc/testsuite/gcc.dg/vect/vect-52.c       2007-09-04 15:05:19.000000000 +0200
31097 +++ b/gcc/testsuite/gcc.dg/vect/vect-52.c       2010-01-25 09:50:29.245686094 +0100
31098 @@ -55,7 +55,7 @@
31099     (The store is aligned).  */
31100  
31101  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31102 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
31103 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
31104 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31105 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
31106  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target vect_no_align } } } */
31107  /* { dg-final { cleanup-tree-dump "vect" } } */
31108 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-54.c b/gcc/testsuite/gcc.dg/vect/vect-54.c
31109 --- a/gcc/testsuite/gcc.dg/vect/vect-54.c       2007-09-04 15:05:19.000000000 +0200
31110 +++ b/gcc/testsuite/gcc.dg/vect/vect-54.c       2010-01-25 09:50:29.245686094 +0100
31111 @@ -59,5 +59,5 @@
31112  
31113  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31114  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
31115 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
31116 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
31117  /* { dg-final { cleanup-tree-dump "vect" } } */
31118 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-56.c b/gcc/testsuite/gcc.dg/vect/vect-56.c
31119 --- a/gcc/testsuite/gcc.dg/vect/vect-56.c       2007-09-04 15:05:19.000000000 +0200
31120 +++ b/gcc/testsuite/gcc.dg/vect/vect-56.c       2010-01-25 09:50:29.245686094 +0100
31121 @@ -67,6 +67,6 @@
31122  }
31123  
31124  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
31125 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
31126 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
31127 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31128 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
31129  /* { dg-final { cleanup-tree-dump "vect" } } */
31130 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-58.c b/gcc/testsuite/gcc.dg/vect/vect-58.c
31131 --- a/gcc/testsuite/gcc.dg/vect/vect-58.c       2007-09-04 15:05:19.000000000 +0200
31132 +++ b/gcc/testsuite/gcc.dg/vect/vect-58.c       2010-01-25 09:50:29.245686094 +0100
31133 @@ -58,5 +58,5 @@
31134  
31135  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31136  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
31137 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
31138 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
31139  /* { dg-final { cleanup-tree-dump "vect" } } */
31140 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-60.c b/gcc/testsuite/gcc.dg/vect/vect-60.c
31141 --- a/gcc/testsuite/gcc.dg/vect/vect-60.c       2007-09-04 15:05:19.000000000 +0200
31142 +++ b/gcc/testsuite/gcc.dg/vect/vect-60.c       2010-01-25 09:50:29.245686094 +0100
31143 @@ -68,6 +68,6 @@
31144  }
31145  
31146  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
31147 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
31148 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
31149 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31150 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
31151  /* { dg-final { cleanup-tree-dump "vect" } } */
31152 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-70.c b/gcc/testsuite/gcc.dg/vect/vect-70.c
31153 --- a/gcc/testsuite/gcc.dg/vect/vect-70.c       2007-09-04 15:05:19.000000000 +0200
31154 +++ b/gcc/testsuite/gcc.dg/vect/vect-70.c       2010-01-25 09:50:29.245686094 +0100
31155 @@ -64,6 +64,6 @@
31156            
31157  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31158  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
31159 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target vector_alignment_reachable } } } */
31160 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target { vector_alignment_reachable && { ! vect_element_align } } } } } */
31161  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" {target {! vector_alignment_reachable} } } } */
31162  /* { dg-final { cleanup-tree-dump "vect" } } */
31163 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-72.c b/gcc/testsuite/gcc.dg/vect/vect-72.c
31164 --- a/gcc/testsuite/gcc.dg/vect/vect-72.c       2008-08-12 08:31:57.000000000 +0200
31165 +++ b/gcc/testsuite/gcc.dg/vect/vect-72.c       2010-01-25 09:50:29.245686094 +0100
31166 @@ -46,6 +46,6 @@
31167  }
31168  
31169  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
31170 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
31171 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
31172 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31173 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
31174  /* { dg-final { cleanup-tree-dump "vect" } } */
31175 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-75.c b/gcc/testsuite/gcc.dg/vect/vect-75.c
31176 --- a/gcc/testsuite/gcc.dg/vect/vect-75.c       2007-09-04 15:05:19.000000000 +0200
31177 +++ b/gcc/testsuite/gcc.dg/vect/vect-75.c       2010-01-25 09:50:29.245686094 +0100
31178 @@ -45,5 +45,5 @@
31179  
31180  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31181  /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target vect_no_align } } } */
31182 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
31183 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31184  /* { dg-final { cleanup-tree-dump "vect" } } */
31185 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-87.c b/gcc/testsuite/gcc.dg/vect/vect-87.c
31186 --- a/gcc/testsuite/gcc.dg/vect/vect-87.c       2007-09-04 15:05:19.000000000 +0200
31187 +++ b/gcc/testsuite/gcc.dg/vect/vect-87.c       2010-01-25 09:50:29.245686094 +0100
31188 @@ -51,6 +51,6 @@
31189  /* Fails for targets that don't vectorize PLUS (e.g alpha).  */
31190  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31191  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
31192 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target vector_alignment_reachable } } } */
31193 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target { vector_alignment_reachable && { ! vect_element_align } } } } } */
31194  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" {target {! vector_alignment_reachable} } } } */
31195  /* { dg-final { cleanup-tree-dump "vect" } } */
31196 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-88.c b/gcc/testsuite/gcc.dg/vect/vect-88.c
31197 --- a/gcc/testsuite/gcc.dg/vect/vect-88.c       2007-09-04 15:05:19.000000000 +0200
31198 +++ b/gcc/testsuite/gcc.dg/vect/vect-88.c       2010-01-25 09:50:29.245686094 +0100
31199 @@ -51,6 +51,6 @@
31200  /* Fails for targets that don't vectorize PLUS (e.g alpha).  */
31201  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31202  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
31203 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target vector_alignment_reachable } } } */
31204 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target { vector_alignment_reachable && { ! vect_element_align } } } } } */
31205  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" {target {! vector_alignment_reachable} } } } */
31206  /* { dg-final { cleanup-tree-dump "vect" } } */
31207 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-89.c b/gcc/testsuite/gcc.dg/vect/vect-89.c
31208 --- a/gcc/testsuite/gcc.dg/vect/vect-89.c       2007-09-04 15:05:19.000000000 +0200
31209 +++ b/gcc/testsuite/gcc.dg/vect/vect-89.c       2010-01-25 09:50:29.245686094 +0100
31210 @@ -46,5 +46,5 @@
31211  
31212  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31213  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
31214 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
31215 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
31216  /* { dg-final { cleanup-tree-dump "vect" } } */
31217 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-91.c b/gcc/testsuite/gcc.dg/vect/vect-91.c
31218 --- a/gcc/testsuite/gcc.dg/vect/vect-91.c       2007-09-04 15:05:19.000000000 +0200
31219 +++ b/gcc/testsuite/gcc.dg/vect/vect-91.c       2010-01-25 09:50:29.245686094 +0100
31220 @@ -59,6 +59,6 @@
31221  
31222  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" { xfail vect_no_int_add } } } */
31223  /* { dg-final { scan-tree-dump-times "accesses have the same alignment." 3 "vect" } } */
31224 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" {target vector_alignment_reachable } } } */
31225 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" {target { vector_alignment_reachable && { ! vect_element_align } } } } } */
31226  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" {target {! vector_alignment_reachable} } } } */
31227  /* { dg-final { cleanup-tree-dump "vect" } } */
31228 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-92.c b/gcc/testsuite/gcc.dg/vect/vect-92.c
31229 --- a/gcc/testsuite/gcc.dg/vect/vect-92.c       2007-09-04 15:05:19.000000000 +0200
31230 +++ b/gcc/testsuite/gcc.dg/vect/vect-92.c       2010-01-25 09:50:29.245686094 +0100
31231 @@ -92,5 +92,5 @@
31232  
31233  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
31234  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
31235 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" } } */
31236 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" { target { ! vect_element_align } } } } */
31237  /* { dg-final { cleanup-tree-dump "vect" } } */
31238 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-93.c b/gcc/testsuite/gcc.dg/vect/vect-93.c
31239 --- a/gcc/testsuite/gcc.dg/vect/vect-93.c       2007-09-04 15:05:19.000000000 +0200
31240 +++ b/gcc/testsuite/gcc.dg/vect/vect-93.c       2010-01-25 09:50:29.245686094 +0100
31241 @@ -72,7 +72,7 @@
31242  /* main && main1 together: */
31243  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 2 "vect" { target powerpc*-*-* i?86-*-* x86_64-*-* } } } */
31244  /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { vect_no_align && {! vector_alignment_reachable} } } } } */
31245 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } */
31246 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" { xfail { { vect_no_align || vect_element_align } || {! vector_alignment_reachable} } } } } */
31247  
31248  /* in main1: */
31249  /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target !powerpc*-*-* !i?86-*-* !x86_64-*-* } } } */
31250 @@ -80,6 +80,6 @@
31251  
31252  /* in main: */
31253  /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target vect_no_align } } } */
31254 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
31255 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31256  
31257  /* { dg-final { cleanup-tree-dump "vect" } } */
31258 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-95.c b/gcc/testsuite/gcc.dg/vect/vect-95.c
31259 --- a/gcc/testsuite/gcc.dg/vect/vect-95.c       2007-09-04 15:05:19.000000000 +0200
31260 +++ b/gcc/testsuite/gcc.dg/vect/vect-95.c       2010-01-25 09:50:29.245686094 +0100
31261 @@ -62,8 +62,8 @@
31262     stores and generate misaligned accesses for the loads. For targets that 
31263     don't support unaligned loads we version for all four accesses.  */
31264  
31265 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
31266 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { xfail vect_no_align } } } */
31267 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31268 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31269  /*  { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target vect_no_align } } } */
31270  /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 4 "vect" { target vect_no_align } } } */
31271  /* { dg-final { cleanup-tree-dump "vect" } } */
31272 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-align-2.c b/gcc/testsuite/gcc.dg/vect/vect-align-2.c
31273 --- a/gcc/testsuite/gcc.dg/vect/vect-align-2.c  2008-03-13 21:13:29.000000000 +0100
31274 +++ b/gcc/testsuite/gcc.dg/vect/vect-align-2.c  2010-01-25 09:50:29.245686094 +0100
31275 @@ -43,6 +43,6 @@
31276  
31277  
31278  /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
31279 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" } } */
31280 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { ! vect_element_align } } } } */
31281  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31282  /* { dg-final { cleanup-tree-dump "vect" } } */
31283 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect.exp b/gcc/testsuite/gcc.dg/vect/vect.exp
31284 --- a/gcc/testsuite/gcc.dg/vect/vect.exp        2009-02-20 16:20:38.000000000 +0100
31285 +++ b/gcc/testsuite/gcc.dg/vect/vect.exp        2010-01-25 09:50:29.245686094 +0100
31286 @@ -97,7 +97,7 @@
31287  } elseif [istarget "ia64-*-*"] {
31288      set dg-do-what-default run
31289  } elseif [is-effective-target arm_neon_ok] {
31290 -    lappend DEFAULT_VECTCFLAGS "-mfpu=neon" "-mfloat-abi=softfp"
31291 +    eval lappend DEFAULT_VECTCFLAGS [add_options_for_arm_neon ""]
31292      if [is-effective-target arm_neon_hw] {
31293        set dg-do-what-default run
31294      } else {
31295 @@ -183,6 +183,12 @@
31296  dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/section-anchors-*.\[cS\]]]  \
31297         "" $DEFAULT_VECTCFLAGS
31298  
31299 +# alignment-sensitive -fsection-anchors tests
31300 +set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
31301 +lappend DEFAULT_VECTCFLAGS "-fsection-anchors" "-fdump-ipa-increase_alignment"
31302 +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/aligned-section-anchors-*.\[cS\]]]  \
31303 +       "" $DEFAULT_VECTCFLAGS
31304 +
31305  # -fno-section-anchors tests
31306  set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
31307  lappend DEFAULT_VECTCFLAGS "-fno-section-anchors"
31308 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c
31309 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c     2007-09-04 15:05:19.000000000 +0200
31310 +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c     2010-01-25 09:50:29.245686094 +0100
31311 @@ -78,11 +78,11 @@
31312    return 0;
31313  }
31314  
31315 -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail *-*-* } } } */
31316 -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
31317 +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { ! vect_element_align } } } } */
31318 +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31319  /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail *-*-* } } } */
31320 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
31321 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31322  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail *-*-* } } } */
31323 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
31324 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31325  /* { dg-final { cleanup-tree-dump "vect" } } */
31326  
31327 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
31328 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c     2007-09-04 15:05:19.000000000 +0200
31329 +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c     2010-01-25 09:50:29.245686094 +0100
31330 @@ -54,6 +54,6 @@
31331  
31332  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31333  /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" { target vect_no_align } } } */
31334 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" {xfail vect_no_align } } } */
31335 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" {xfail { vect_no_align || vect_element_align } } } } */
31336  /* { dg-final { cleanup-tree-dump "vect" } } */
31337  
31338 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c
31339 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c     2007-09-04 15:05:19.000000000 +0200
31340 +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c     2010-01-25 09:50:29.245686094 +0100
31341 @@ -85,11 +85,11 @@
31342    return 0;
31343  }
31344  
31345 -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail *-*-* } } } */
31346 -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
31347 +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { ! vect_element_align } } } } */
31348 +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31349  /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail *-*-* } } } */
31350 -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
31351 +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31352  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 8 "vect" { xfail *-*-* } } } */
31353 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail vect_no_align } } } */
31354 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail { vect_no_align || vect_element_align } } } } */
31355  /* { dg-final { cleanup-tree-dump "vect" } } */
31356  
31357 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
31358 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c     2007-09-04 15:05:19.000000000 +0200
31359 +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c     2010-01-25 09:50:29.245686094 +0100
31360 @@ -61,6 +61,6 @@
31361  
31362  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31363  /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 6 "vect" { target vect_no_align } } } */
31364 -/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 6 "vect" {xfail vect_no_align } } } */
31365 +/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 6 "vect" {xfail { vect_no_align || vect_element_align } } } } */
31366  /* { dg-final { cleanup-tree-dump "vect" } } */
31367  
31368 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-shift-2.c b/gcc/testsuite/gcc.dg/vect/vect-shift-2.c
31369 --- a/gcc/testsuite/gcc.dg/vect/vect-shift-2.c  1970-01-01 01:00:00.000000000 +0100
31370 +++ b/gcc/testsuite/gcc.dg/vect/vect-shift-2.c  2010-01-25 09:50:29.245686094 +0100
31371 @@ -0,0 +1,37 @@
31372 +/* { dg-require-effective-target vect_shift_char } */
31373 +/* { dg-require-effective-target vect_int } */
31374 +
31375 +#include "tree-vect.h"
31376 +
31377 +#define N 32
31378 +
31379 +unsigned char dst[N] __attribute__((aligned(N)));
31380 +unsigned char src[N] __attribute__((aligned(N)));
31381 +
31382 +__attribute__ ((noinline))
31383 +void array_shift(void)
31384 +{
31385 +  int i;
31386 +  for (i = 0; i < N; i++)
31387 +    dst[i] = src[i] >> 3;
31388 +}
31389 +
31390 +int main()
31391 +{
31392 +  volatile int i;
31393 +  check_vect ();
31394 +
31395 +  for (i = 0; i < N; i++)
31396 +    src[i] = i << 3;
31397 +
31398 +  array_shift ();
31399 +
31400 +  for (i = 0; i < N; i++)
31401 +    if (dst[i] != i)
31402 +      abort ();
31403 +
31404 +  return 0;
31405 +}
31406 +
31407 +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31408 +/* { dg-final { cleanup-tree-dump "vect" } } */
31409 diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-shift-3.c b/gcc/testsuite/gcc.dg/vect/vect-shift-3.c
31410 --- a/gcc/testsuite/gcc.dg/vect/vect-shift-3.c  1970-01-01 01:00:00.000000000 +0100
31411 +++ b/gcc/testsuite/gcc.dg/vect/vect-shift-3.c  2010-01-25 09:50:29.245686094 +0100
31412 @@ -0,0 +1,37 @@
31413 +/* { dg-require-effective-target vect_shift } */
31414 +/* { dg-require-effective-target vect_int } */
31415 +
31416 +#include "tree-vect.h"
31417 +
31418 +#define N 32
31419 +
31420 +unsigned short dst[N] __attribute__((aligned(N)));
31421 +unsigned short src[N] __attribute__((aligned(N)));
31422 +
31423 +__attribute__ ((noinline))
31424 +void array_shift(void)
31425 +{
31426 +  int i;
31427 +  for (i = 0; i < N; i++)
31428 +    dst[i] = src[i] >> 3;
31429 +}
31430 +
31431 +int main()
31432 +{
31433 +  volatile int i;
31434 +  check_vect ();
31435 +
31436 +  for (i = 0; i < N; i++)
31437 +    src[i] = i << 3;
31438 +
31439 +  array_shift ();
31440 +
31441 +  for (i = 0; i < N; i++)
31442 +    if (dst[i] != i)
31443 +      abort ();
31444 +
31445 +  return 0;
31446 +}
31447 +
31448 +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
31449 +/* { dg-final { cleanup-tree-dump "vect" } } */
31450 diff -Nur a/gcc/testsuite/gcc.dg/vmx/vmx.exp b/gcc/testsuite/gcc.dg/vmx/vmx.exp
31451 --- a/gcc/testsuite/gcc.dg/vmx/vmx.exp  2007-08-01 18:25:11.000000000 +0200
31452 +++ b/gcc/testsuite/gcc.dg/vmx/vmx.exp  2010-01-25 09:50:29.245686094 +0100
31453 @@ -31,7 +31,7 @@
31454  # nothing but extensions.
31455  global DEFAULT_VMXCFLAGS
31456  if ![info exists DEFAULT_VMXCFLAGS] then {
31457 -    set DEFAULT_VMXCFLAGS "-maltivec -mabi=altivec -std=gnu99"
31458 +    set DEFAULT_VMXCFLAGS "-maltivec -std=gnu99"
31459  }
31460  
31461  # If the target system supports AltiVec instructions, the default action
31462 diff -Nur a/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp b/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
31463 --- a/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp    2009-02-20 16:20:38.000000000 +0100
31464 +++ b/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp    2010-01-25 09:50:29.245686094 +0100
31465 @@ -90,6 +90,13 @@
31466  dg-init
31467  torture-init
31468  
31469 +if { [board_info target exists multilib_flags]
31470 +     && [string match "* -march=*" " [board_info target multilib_flags] "] } {
31471 +    # Multilib flags come after the -march flags we pass and override
31472 +    # them, so skip these tests when such flags are passed.
31473 +    return
31474 +}
31475 +
31476  set-torture-options $PREFETCH_NONE
31477  gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/i386-pf-none-*.c]] ""
31478  
31479 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp b/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp
31480 --- a/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp      1970-01-01 01:00:00.000000000 +0100
31481 +++ b/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp      2010-01-25 09:50:29.245686094 +0100
31482 @@ -0,0 +1,35 @@
31483 +# Copyright (C) 1997, 2004, 2006, 2007 Free Software Foundation, Inc.
31484 +
31485 +# This program is free software; you can redistribute it and/or modify
31486 +# it under the terms of the GNU General Public License as published by
31487 +# the Free Software Foundation; either version 3 of the License, or
31488 +# (at your option) any later version.
31489 +#
31490 +# This program is distributed in the hope that it will be useful,
31491 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
31492 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
31493 +# GNU General Public License for more details.
31494 +#
31495 +# You should have received a copy of the GNU General Public License
31496 +# along with GCC; see the file COPYING3.  If not see
31497 +# <http://www.gnu.org/licenses/>.
31498 +
31499 +# GCC testsuite that uses the `dg.exp' driver.
31500 +
31501 +# Exit immediately if this isn't an ARM target.
31502 +if ![istarget arm*-*-*] then {
31503 +  return
31504 +}
31505 +
31506 +# Load support procs.
31507 +load_lib gcc-dg.exp
31508 +
31509 +# Initialize `dg'.
31510 +dg-init
31511 +
31512 +# Main loop.
31513 +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \
31514 +       "" ""
31515 +
31516 +# All done.
31517 +dg-finish
31518 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/abitest.h b/gcc/testsuite/gcc.target/arm/aapcs/abitest.h
31519 --- a/gcc/testsuite/gcc.target/arm/aapcs/abitest.h      1970-01-01 01:00:00.000000000 +0100
31520 +++ b/gcc/testsuite/gcc.target/arm/aapcs/abitest.h      2010-01-25 09:50:29.245686094 +0100
31521 @@ -0,0 +1,118 @@
31522 +#define IN_FRAMEWORK
31523 +
31524 +#ifdef VFP
31525 +#define D0     0
31526 +#define D1     8
31527 +#define D2     16
31528 +#define D3     24
31529 +#define D4     32
31530 +#define D5     40
31531 +#define D6     48
31532 +#define D7     56
31533 +
31534 +#define S0     64
31535 +#define S1     68
31536 +#define S2     72
31537 +#define S3     76
31538 +#define S4     80
31539 +#define S5     84
31540 +#define S6     88
31541 +#define S7     92
31542 +#define S8      86
31543 +#define S9     100
31544 +#define S10    104
31545 +#define S11    108
31546 +#define S12    112
31547 +#define S13    116
31548 +#define S14    120
31549 +#define S15    124
31550 +
31551 +#define R0     128
31552 +#define R1     132
31553 +#define R2     136
31554 +#define R3     140
31555 +
31556 +#define STACK  144
31557 +
31558 +#else
31559 +
31560 +#define R0     0
31561 +#define R1     4
31562 +#define R2     8
31563 +#define R3     12
31564 +
31565 +#define STACK   16
31566 +
31567 +#endif
31568 +
31569 +extern void abort (void);
31570 +
31571 +__attribute__((naked))  void dumpregs () __asm("myfunc");
31572 +__attribute__((naked))  void dumpregs ()
31573 +{
31574 +  asm(
31575 +      "mov     ip, sp\n\t"
31576 +      "stmfd   sp!, {r0-r3}\n\t"
31577 +#ifdef VFP
31578 +      "fstmdbs sp!, {s0-s15}\n\t"
31579 +      "fstmdbd sp!, {d0-d7}\n\t"
31580 +#endif
31581 +      "mov     r0, sp\n\t"
31582 +      "stmfd   sp!, {ip, r14}\n\t"
31583 +      "bl      testfunc\n\t"
31584 +      "ldmfd   sp!, {r0, r14}\n\t"
31585 +      "mov     sp, r0\n\t"
31586 +      "bx      lr");
31587 +}
31588 +
31589 +
31590 +#define LAST_ARG(type,val,offset) { type __x = val; if (memcmp(&__x, stack+offset, sizeof(type)) != 0) abort(); }
31591 +#define ARG(type,val,offset) LAST_ARG(type, val, offset)
31592 +#define ANON(type,val,offset) LAST_ARG(type, val, offset)
31593 +#define LAST_ANON(type,val,offset) LAST_ARG(type, val, offset)
31594 +#define DOTS
31595 +
31596 +void testfunc(char* stack)
31597 +{
31598 +#include TESTFILE
31599 +  return;
31600 +}
31601 +
31602 +#undef LAST_ARG
31603 +#undef ARG
31604 +#undef DOTS
31605 +#undef ANON
31606 +#undef LAST_ANON
31607 +#define LAST_ARG(type,val,offset) type
31608 +#define ARG(type,val,offset) LAST_ARG(type, val, offset),
31609 +#define DOTS ...
31610 +#define ANON(type,val, offset)
31611 +#define LAST_ANON(type,val, offset)
31612 +
31613 +#ifndef MYFUNCTYPE
31614 +#define MYFUNCTYPE void
31615 +#endif
31616 +
31617 +MYFUNCTYPE myfunc(
31618 +#include TESTFILE
31619 +);
31620 +
31621 +#undef LAST_ARG
31622 +#undef ARG
31623 +#undef DOTS
31624 +#undef ANON
31625 +#undef LAST_ANON
31626 +#define LAST_ARG(type,val,offset) val
31627 +#define ARG(type,val,offset) LAST_ARG(type, val, offset),
31628 +#define DOTS
31629 +#define LAST_ANON(type,val,offset) LAST_ARG(type, val, offset)
31630 +#define ANON(type,val,offset) LAST_ARG(type, val, offset),
31631 +
31632 +
31633 +int main()
31634 +{
31635 +  myfunc(
31636 +#include TESTFILE
31637 +);
31638 +  return 0;
31639 +}
31640 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c
31641 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c        1970-01-01 01:00:00.000000000 +0100
31642 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c        2010-01-25 09:50:29.245686094 +0100
31643 @@ -0,0 +1,38 @@
31644 +/* Test AAPCS layout (VFP variant) */
31645 +
31646 +/* { dg-do run { target arm*-*-eabi* } } */
31647 +/* { dg-require-effective-target arm_hard_vfp_ok } */
31648 +/* { dg-require-effective-target arm32 } */
31649 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
31650 +
31651 +#ifndef IN_FRAMEWORK
31652 +#define VFP
31653 +#define TESTFILE "vfp10.c"
31654 +
31655 +__complex__ x = 1.0+2.0i;
31656 +
31657 +struct y
31658 +{
31659 +  int p;
31660 +  int q;
31661 +  int r;
31662 +  int s;
31663 +} v = { 1, 2, 3, 4 };
31664 +
31665 +struct z
31666 +{
31667 +  double x[4];
31668 +};
31669 +
31670 +struct z a = { 5.0, 6.0, 7.0, 8.0 };
31671 +struct z b = { 9.0, 10.0, 11.0, 12.0 };
31672 +
31673 +#include "abitest.h"
31674 +#else
31675 +  /* A variadic function passes using the base ABI */
31676 +  ARG(double, 11.0, R0)
31677 +  DOTS
31678 +  ANON(struct z, a, R2)
31679 +  ANON(struct z, b, STACK+24)
31680 +  LAST_ANON(double, 0.5, STACK+56)
31681 +#endif
31682 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c
31683 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c        1970-01-01 01:00:00.000000000 +0100
31684 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c        2010-01-25 09:50:29.245686094 +0100
31685 @@ -0,0 +1,39 @@
31686 +/* Test AAPCS layout (VFP variant) */
31687 +
31688 +/* { dg-do run { target arm*-*-eabi* } } */
31689 +/* { dg-require-effective-target arm_hard_vfp_ok } */
31690 +/* { dg-require-effective-target arm32 } */
31691 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
31692 +
31693 +#ifndef IN_FRAMEWORK
31694 +#define VFP
31695 +#define TESTFILE "vfp11.c"
31696 +
31697 +__complex__ x = 1.0+2.0i;
31698 +
31699 +struct y
31700 +{
31701 +  int p;
31702 +  int q;
31703 +  int r;
31704 +  int s;
31705 +} v = { 1, 2, 3, 4 };
31706 +
31707 +struct z
31708 +{
31709 +  double x[4];
31710 +};
31711 +
31712 +struct z a = { 5.0, 6.0, 7.0, 8.0 };
31713 +struct z b = { 9.0, 10.0, 11.0, 12.0 };
31714 +
31715 +#define MYFUNCTYPE struct y
31716 +
31717 +#include "abitest.h"
31718 +#else
31719 +  ARG(int, 7, R1)
31720 +  ARG(struct y, v, R2)
31721 +  ARG(struct z, a, D0)
31722 +  ARG(struct z, b, D4)
31723 +  LAST_ARG(double, 0.5, STACK+8)
31724 +#endif
31725 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c
31726 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c        1970-01-01 01:00:00.000000000 +0100
31727 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c        2010-01-25 09:50:29.245686094 +0100
31728 @@ -0,0 +1,38 @@
31729 +/* Test AAPCS layout (VFP variant) */
31730 +
31731 +/* { dg-do run { target arm*-*-eabi* } } */
31732 +/* { dg-require-effective-target arm_hard_vfp_ok } */
31733 +/* { dg-require-effective-target arm32 } */
31734 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
31735 +
31736 +#ifndef IN_FRAMEWORK
31737 +#define VFP
31738 +#define TESTFILE "vfp12.c"
31739 +
31740 +__complex__ x = 1.0+2.0i;
31741 +
31742 +struct y
31743 +{
31744 +  int p;
31745 +  int q;
31746 +  int r;
31747 +  int s;
31748 +} v = { 1, 2, 3, 4 };
31749 +
31750 +struct z
31751 +{
31752 +  double x[4];
31753 +};
31754 +
31755 +struct z a = { 5.0, 6.0, 7.0, 8.0 };
31756 +struct z b = { 9.0, 10.0, 11.0, 12.0 };
31757 +
31758 +#include "abitest.h"
31759 +#else
31760 +  ARG(int, 7, R0)
31761 +  ARG(struct y, v, R1)
31762 +  ARG(struct z, a, D0)
31763 +  ARG(double, 1.0, D4)
31764 +  ARG(struct z, b, STACK+8)
31765 +  LAST_ARG(double, 0.5, STACK+40)
31766 +#endif
31767 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c
31768 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c        1970-01-01 01:00:00.000000000 +0100
31769 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c        2010-01-25 09:50:29.245686094 +0100
31770 @@ -0,0 +1,39 @@
31771 +/* Test AAPCS layout (VFP variant) */
31772 +
31773 +/* { dg-do run { target arm*-*-eabi* } } */
31774 +/* { dg-require-effective-target arm_hard_vfp_ok } */
31775 +/* { dg-require-effective-target arm32 } */
31776 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
31777 +
31778 +#ifndef IN_FRAMEWORK
31779 +#define VFP
31780 +#define TESTFILE "vfp13.c"
31781 +
31782 +__complex__ x = 1.0+2.0i;
31783 +
31784 +struct y
31785 +{
31786 +  int p;
31787 +  int q;
31788 +  int r;
31789 +  int s;
31790 +} v = { 1, 2, 3, 4 };
31791 +
31792 +struct z
31793 +{
31794 +  double x[4];
31795 +};
31796 +
31797 +struct z a = { 5.0, 6.0, 7.0, 8.0 };
31798 +struct z b = { 9.0, 10.0, 11.0, 12.0 };
31799 +
31800 +#include "abitest.h"
31801 +#else
31802 +  ARG(int, 7, R0)
31803 +  ARG(int, 9, R1)
31804 +  ARG(struct z, a, D0)
31805 +  ARG(double, 1.0, D4)
31806 +  ARG(struct z, b, STACK)
31807 +  ARG(int, 4, R2)
31808 +  LAST_ARG(double, 0.5, STACK+32)
31809 +#endif
31810 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c
31811 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c        1970-01-01 01:00:00.000000000 +0100
31812 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c        2010-01-25 09:50:29.245686094 +0100
31813 @@ -0,0 +1,24 @@
31814 +/* Test AAPCS layout (VFP variant) */
31815 +
31816 +/* { dg-do run { target arm*-*-eabi* } } */
31817 +/* { dg-require-effective-target arm_hard_vfp_ok } */
31818 +/* { dg-require-effective-target arm32 } */
31819 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
31820 +
31821 +#ifndef IN_FRAMEWORK
31822 +#define VFP
31823 +#define TESTFILE "vfp14.c"
31824 +
31825 +#include "abitest.h"
31826 +#else
31827 +  ARG(double, 1.0, D0)
31828 +  ARG(double, 2.0, D1)
31829 +  ARG(double, 3.0, D2)
31830 +  ARG(double, 4.0, D3)
31831 +  ARG(double, 5.0, D4)
31832 +  ARG(double, 6.0, D5)
31833 +  ARG(double, 7.0, D6)
31834 +  ARG(double, 8.0, D7)
31835 +  ARG(double, 9.0, STACK)
31836 +  LAST_ARG(double, 10.0, STACK+8)
31837 +#endif
31838 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c
31839 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c 1970-01-01 01:00:00.000000000 +0100
31840 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c 2010-01-25 09:50:29.245686094 +0100
31841 @@ -0,0 +1,17 @@
31842 +/* Test AAPCS layout (VFP variant) */
31843 +
31844 +/* { dg-do run { target arm*-*-eabi* } } */
31845 +/* { dg-require-effective-target arm_hard_vfp_ok } */
31846 +/* { dg-require-effective-target arm32 } */
31847 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
31848 +
31849 +#ifndef IN_FRAMEWORK
31850 +#define VFP
31851 +#define TESTFILE "vfp1.c"
31852 +#include "abitest.h"
31853 +
31854 +#else
31855 +  ARG(int, 4, R0)
31856 +  ARG(double, 4.0, D0)
31857 +  LAST_ARG(int, 3, R1)
31858 +#endif
31859 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c
31860 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c 1970-01-01 01:00:00.000000000 +0100
31861 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c 2010-01-25 09:50:29.245686094 +0100
31862 @@ -0,0 +1,19 @@
31863 +/* Test AAPCS layout (VFP variant) */
31864 +
31865 +/* { dg-do run { target arm*-*-eabi* } } */
31866 +/* { dg-require-effective-target arm_hard_vfp_ok } */
31867 +/* { dg-require-effective-target arm32 } */
31868 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
31869 +
31870 +#ifndef IN_FRAMEWORK
31871 +#define VFP
31872 +#define TESTFILE "vfp2.c"
31873 +#include "abitest.h"
31874 +
31875 +#else
31876 +  ARG(float, 1.0f, S0)
31877 +  ARG(double, 4.0, D1)
31878 +  ARG(float, 2.0f, S1)
31879 +  ARG(double, 5.0, D2)
31880 +  LAST_ARG(int, 3, R0)
31881 +#endif
31882 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c
31883 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c 1970-01-01 01:00:00.000000000 +0100
31884 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c 2010-01-25 09:50:29.245686094 +0100
31885 @@ -0,0 +1,21 @@
31886 +/* Test AAPCS layout (VFP variant) */
31887 +
31888 +/* { dg-do run { target arm*-*-eabi* } } */
31889 +/* { dg-require-effective-target arm_hard_vfp_ok } */
31890 +/* { dg-require-effective-target arm32 } */
31891 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
31892 +
31893 +#ifndef IN_FRAMEWORK
31894 +#define VFP
31895 +#define TESTFILE "vfp3.c"
31896 +
31897 +__complex__ x = 1.0+2.0i;
31898 +
31899 +#include "abitest.h"
31900 +#else
31901 +  ARG(float, 1.0f, S0)
31902 +  ARG(__complex__ double, x, D1)
31903 +  ARG(float, 2.0f, S1)
31904 +  ARG(double, 5.0, D3)
31905 +  LAST_ARG(int, 3, R0)
31906 +#endif
31907 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c
31908 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c 1970-01-01 01:00:00.000000000 +0100
31909 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c 2010-01-25 09:50:29.245686094 +0100
31910 @@ -0,0 +1,20 @@
31911 +/* Test AAPCS layout (VFP variant) */
31912 +
31913 +/* { dg-do run { target arm*-*-eabi* } } */
31914 +/* { dg-require-effective-target arm_hard_vfp_ok } */
31915 +/* { dg-require-effective-target arm32 } */
31916 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
31917 +
31918 +#ifndef IN_FRAMEWORK
31919 +#define VFP
31920 +#define TESTFILE "vfp4.c"
31921 +
31922 +__complex__ float x = 1.0f + 2.0fi;
31923 +#include "abitest.h"
31924 +#else
31925 +  ARG(float, 1.0f, S0)
31926 +  ARG(__complex__ float, x, S1)
31927 +  ARG(float, 2.0f, S3)
31928 +  ARG(double, 5.0, D2)
31929 +  LAST_ARG(int, 3, R0)
31930 +#endif
31931 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c
31932 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c 1970-01-01 01:00:00.000000000 +0100
31933 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c 2010-01-25 09:50:29.245686094 +0100
31934 @@ -0,0 +1,30 @@
31935 +/* Test AAPCS layout (VFP variant) */
31936 +
31937 +/* { dg-do run { target arm*-*-eabi* } } */
31938 +/* { dg-require-effective-target arm_hard_vfp_ok } */
31939 +/* { dg-require-effective-target arm32 } */
31940 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
31941 +
31942 +#ifndef IN_FRAMEWORK
31943 +#define VFP
31944 +#define TESTFILE "vfp5.c"
31945 +
31946 +__complex__ float x = 1.0+2.0i;
31947 +
31948 +struct y
31949 +{
31950 +  int p;
31951 +  int q;
31952 +  int r;
31953 +  int s;
31954 +} v = { 1, 2, 3, 4 };
31955 +
31956 +#include "abitest.h"
31957 +#else
31958 +  ARG(float, 1.0f, S0)
31959 +  ARG(__complex__ float, x, S1)
31960 +  ARG(float, 2.0f, S3)
31961 +  ARG(double, 5.0, D2)
31962 +  ARG(struct y, v, R0)
31963 +  LAST_ARG(int, 3, STACK)
31964 +#endif
31965 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c
31966 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c 1970-01-01 01:00:00.000000000 +0100
31967 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c 2010-01-25 09:50:29.245686094 +0100
31968 @@ -0,0 +1,30 @@
31969 +/* Test AAPCS layout (VFP variant) */
31970 +
31971 +/* { dg-do run { target arm*-*-eabi* } } */
31972 +/* { dg-require-effective-target arm_hard_vfp_ok } */
31973 +/* { dg-require-effective-target arm32 } */
31974 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
31975 +
31976 +#ifndef IN_FRAMEWORK
31977 +#define VFP
31978 +#define TESTFILE "vfp6.c"
31979 +
31980 +__complex__ float x = 1.0+2.0i;
31981 +
31982 +struct y
31983 +{
31984 +  int p;
31985 +  int q;
31986 +  int r;
31987 +  int s;
31988 +} v = { 1, 2, 3, 4 };
31989 +
31990 +#include "abitest.h"
31991 +#else
31992 +  ARG(struct y, v, R0)
31993 +  ARG(float, 1.0f, S0)
31994 +  ARG(__complex__ float, x, S1)
31995 +  ARG(float, 2.0f, S3)
31996 +  ARG(double, 5.0, D2)
31997 +  LAST_ARG(int, 3, STACK)
31998 +#endif
31999 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c
32000 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c 1970-01-01 01:00:00.000000000 +0100
32001 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c 2010-01-25 09:50:29.245686094 +0100
32002 @@ -0,0 +1,37 @@
32003 +/* Test AAPCS layout (VFP variant) */
32004 +
32005 +/* { dg-do run { target arm*-*-eabi* } } */
32006 +/* { dg-require-effective-target arm_hard_vfp_ok } */
32007 +/* { dg-require-effective-target arm32 } */
32008 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
32009 +
32010 +#ifndef IN_FRAMEWORK
32011 +#define VFP
32012 +#define TESTFILE "vfp7.c"
32013 +
32014 +__complex__ x = 1.0+2.0i;
32015 +
32016 +struct y
32017 +{
32018 +  int p;
32019 +  int q;
32020 +  int r;
32021 +  int s;
32022 +} v = { 1, 2, 3, 4 };
32023 +
32024 +struct z
32025 +{
32026 +  double x[4];
32027 +};
32028 +
32029 +struct z a = { 5.0, 6.0, 7.0, 8.0 };
32030 +struct z b = { 9.0, 10.0, 11.0, 12.0 };
32031 +
32032 +#include "abitest.h"
32033 +#else
32034 +  ARG(struct z, a, D0)
32035 +  ARG(struct z, b, D4)
32036 +  ARG(double, 0.5, STACK)
32037 +  ARG(int, 7, R0)
32038 +  LAST_ARG(struct y, v, STACK+8)
32039 +#endif
32040 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c
32041 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c 1970-01-01 01:00:00.000000000 +0100
32042 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c 2010-01-25 09:50:29.245686094 +0100
32043 @@ -0,0 +1,37 @@
32044 +/* Test AAPCS layout (VFP variant) */
32045 +
32046 +/* { dg-do run { target arm*-*-eabi* } } */
32047 +/* { dg-require-effective-target arm_hard_vfp_ok } */
32048 +/* { dg-require-effective-target arm32 } */
32049 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
32050 +
32051 +#ifndef IN_FRAMEWORK
32052 +#define VFP
32053 +#define TESTFILE "vfp8.c"
32054 +
32055 +__complex__ x = 1.0+2.0i;
32056 +
32057 +struct y
32058 +{
32059 +  int p;
32060 +  int q;
32061 +  int r;
32062 +  int s;
32063 +} v = { 1, 2, 3, 4 };
32064 +
32065 +struct z
32066 +{
32067 +  double x[4];
32068 +};
32069 +
32070 +struct z a = { 5.0, 6.0, 7.0, 8.0 };
32071 +struct z b = { 9.0, 10.0, 11.0, 12.0 };
32072 +
32073 +#include "abitest.h"
32074 +#else
32075 +  ARG(int, 7, R0)
32076 +  ARG(struct y, v, R1)
32077 +  ARG(struct z, a, D0)
32078 +  ARG(struct z, b, D4)
32079 +  LAST_ARG(double, 0.5, STACK+8)
32080 +#endif
32081 diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c
32082 --- a/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c 1970-01-01 01:00:00.000000000 +0100
32083 +++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c 2010-01-25 09:50:29.245686094 +0100
32084 @@ -0,0 +1,38 @@
32085 +/* Test AAPCS layout (VFP variant) */
32086 +
32087 +/* { dg-do run { target arm*-*-eabi* } } */
32088 +/* { dg-require-effective-target arm_hard_vfp_ok } */
32089 +/* { dg-require-effective-target arm32 } */
32090 +/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
32091 +
32092 +#ifndef IN_FRAMEWORK
32093 +#define VFP
32094 +#define TESTFILE "vfp9.c"
32095 +
32096 +__complex__ x = 1.0+2.0i;
32097 +
32098 +struct y
32099 +{
32100 +  int p;
32101 +  int q;
32102 +  int r;
32103 +  int s;
32104 +} v = { 1, 2, 3, 4 };
32105 +
32106 +struct z
32107 +{
32108 +  double x[4];
32109 +};
32110 +
32111 +struct z a = { 5.0, 6.0, 7.0, 8.0 };
32112 +struct z b = { 9.0, 10.0, 11.0, 12.0 };
32113 +
32114 +#include "abitest.h"
32115 +#else
32116 +  /* A variadic function passes using the base ABI */
32117 +  ARG(int, 7, R0)
32118 +  DOTS
32119 +  ANON(struct z, a, R2)
32120 +  ANON(struct z, b, STACK+24)
32121 +  LAST_ANON(double, 0.5, STACK+56)
32122 +#endif
32123 diff -Nur a/gcc/testsuite/gcc.target/arm/ctz.c b/gcc/testsuite/gcc.target/arm/ctz.c
32124 --- a/gcc/testsuite/gcc.target/arm/ctz.c        1970-01-01 01:00:00.000000000 +0100
32125 +++ b/gcc/testsuite/gcc.target/arm/ctz.c        2010-01-25 09:50:29.265686890 +0100
32126 @@ -0,0 +1,12 @@
32127 +/* { dg-do compile } */
32128 +/* { dg-require-effective-target arm32 } */
32129 +/* { dg-options "-O2 -march=armv6t2" } */
32130 +
32131 +unsigned int functest(unsigned int x)
32132 +{
32133 +       return __builtin_ctz(x);
32134 +}
32135 +
32136 +/* { dg-final { scan-assembler "rbit" } } */
32137 +/* { dg-final { scan-assembler "clz" } } */
32138 +/* { dg-final { scan-assembler-not "rsb" } } */
32139 diff -Nur a/gcc/testsuite/gcc.target/arm/eabi1.c b/gcc/testsuite/gcc.target/arm/eabi1.c
32140 --- a/gcc/testsuite/gcc.target/arm/eabi1.c      2009-01-14 02:44:39.000000000 +0100
32141 +++ b/gcc/testsuite/gcc.target/arm/eabi1.c      2010-01-25 09:50:29.265686890 +0100
32142 @@ -30,43 +30,48 @@
32143  #include <stdlib.h>
32144  #include <math.h>
32145  
32146 -#define decl_float(code, type)                                 \
32147 -  extern type __aeabi_ ## code ## add (type, type);            \
32148 -  extern type __aeabi_ ## code ## div (type, type);            \
32149 -  extern type __aeabi_ ## code ## mul (type, type);            \
32150 -  extern type __aeabi_ ## code ## neg (type);                  \
32151 -  extern type __aeabi_ ## code ## rsub (type, type);           \
32152 -  extern type __aeabi_ ## code ## sub (type, type);            \
32153 -  extern int __aeabi_ ## code ## cmpeq (type, type);           \
32154 -  extern int __aeabi_ ## code ## cmplt (type, type);           \
32155 -  extern int __aeabi_ ## code ## cmple (type, type);           \
32156 -  extern int __aeabi_ ## code ## cmpge (type, type);           \
32157 -  extern int __aeabi_ ## code ## cmpgt (type, type);           \
32158 -  extern int __aeabi_ ## code ## cmpun (type, type);           \
32159 -  extern int __aeabi_ ## code ## 2iz (type);                   \
32160 -  extern unsigned int __aeabi_ ## code ## 2uiz (type);         \
32161 -  extern long long __aeabi_ ## code ## 2lz (type);             \
32162 -  extern unsigned long long __aeabi_ ## code ## 2ulz (type);   \
32163 -  extern type __aeabi_i2 ## code (int);                                \
32164 -  extern type __aeabi_ui2 ## code (int);                       \
32165 -  extern type __aeabi_l2 ## code (long long);                  \
32166 -  extern type __aeabi_ul2 ## code (unsigned long long);                \
32167 -                                                               \
32168 -  type code ## zero = 0.0;                                     \
32169 -  type code ## one = 1.0;                                      \
32170 -  type code ## two = 2.0;                                      \
32171 -  type code ## four = 4.0;                                     \
32172 -  type code ## minus_one = -1.0;                               \
32173 -  type code ## minus_two = -2.0;                               \
32174 -  type code ## minus_four = -4.0;                              \
32175 -  type code ## epsilon = 1E-32;                                        \
32176 -  type code ## NaN = 0.0 / 0.0;                                
32177 +/* All these functions are defined to use the base ABI, so use the
32178 +   attribute to ensure the tests use the base ABI to call them even
32179 +   when the VFP ABI is otherwise in effect.  */
32180 +#define PCS __attribute__((pcs("aapcs")))
32181 +
32182 +#define decl_float(code, type)                                         \
32183 +  extern type __aeabi_ ## code ## add (type, type) PCS;                        \
32184 +  extern type __aeabi_ ## code ## div (type, type) PCS;                        \
32185 +  extern type __aeabi_ ## code ## mul (type, type) PCS;                        \
32186 +  extern type __aeabi_ ## code ## neg (type) PCS;                      \
32187 +  extern type __aeabi_ ## code ## rsub (type, type) PCS;               \
32188 +  extern type __aeabi_ ## code ## sub (type, type) PCS;                        \
32189 +  extern int __aeabi_ ## code ## cmpeq (type, type) PCS;               \
32190 +  extern int __aeabi_ ## code ## cmplt (type, type) PCS;               \
32191 +  extern int __aeabi_ ## code ## cmple (type, type) PCS;               \
32192 +  extern int __aeabi_ ## code ## cmpge (type, type) PCS;               \
32193 +  extern int __aeabi_ ## code ## cmpgt (type, type) PCS;               \
32194 +  extern int __aeabi_ ## code ## cmpun (type, type) PCS;               \
32195 +  extern int __aeabi_ ## code ## 2iz (type) PCS;                       \
32196 +  extern unsigned int __aeabi_ ## code ## 2uiz (type) PCS;             \
32197 +  extern long long __aeabi_ ## code ## 2lz (type) PCS;                 \
32198 +  extern unsigned long long __aeabi_ ## code ## 2ulz (type) PCS;       \
32199 +  extern type __aeabi_i2 ## code (int) PCS;                            \
32200 +  extern type __aeabi_ui2 ## code (int) PCS;                           \
32201 +  extern type __aeabi_l2 ## code (long long) PCS;                      \
32202 +  extern type __aeabi_ul2 ## code (unsigned long long) PCS;            \
32203 +                                                                       \
32204 +  type code ## zero = 0.0;                                             \
32205 +  type code ## one = 1.0;                                              \
32206 +  type code ## two = 2.0;                                              \
32207 +  type code ## four = 4.0;                                             \
32208 +  type code ## minus_one = -1.0;                                       \
32209 +  type code ## minus_two = -2.0;                                       \
32210 +  type code ## minus_four = -4.0;                                      \
32211 +  type code ## epsilon = 1E-32;                                                \
32212 +  type code ## NaN = 0.0 / 0.0;
32213  
32214  decl_float (d, double)
32215  decl_float (f, float)
32216  
32217 -extern float __aeabi_d2f (double);
32218 -extern double __aeabi_f2d (float);
32219 +extern float __aeabi_d2f (double) PCS;
32220 +extern double __aeabi_f2d (float) PCS;
32221  extern long long __aeabi_lmul (long long, long long);
32222  extern long long __aeabi_llsl (long long, int);
32223  extern long long __aeabi_llsr (long long, int);
32224 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-builtins-1.c b/gcc/testsuite/gcc.target/arm/fp16-builtins-1.c
32225 --- a/gcc/testsuite/gcc.target/arm/fp16-builtins-1.c    1970-01-01 01:00:00.000000000 +0100
32226 +++ b/gcc/testsuite/gcc.target/arm/fp16-builtins-1.c    2010-01-25 09:50:29.265686890 +0100
32227 @@ -0,0 +1,92 @@
32228 +/* Test type-generic builtins with __fp16 arguments.
32229 +   Except as otherwise noted, they should behave exactly
32230 +   the same as those with float arguments.  */
32231 +
32232 +/* { dg-do run } */
32233 +/* { dg-options "-mfp16-format=ieee -std=gnu99" } */
32234 +
32235 +#include <stdlib.h>
32236 +#include <math.h>
32237 +
32238 +volatile __fp16 h1, h2;
32239 +volatile float f1, f2;
32240 +
32241 +void
32242 +set1 (double x)
32243 +{
32244 +  h1 = x;
32245 +  f1 = h1;
32246 +}
32247 +
32248 +void
32249 +set2 (double x, double y)
32250 +{
32251 +  h1 = x;
32252 +  f1 = h1;
32253 +  h2 = y;
32254 +  f2 = h2;
32255 +}
32256 +
32257 +#define test1(p,x)                             \
32258 +  set1 (x);                                    \
32259 +  hp = (p (h1) ? 1 : 0);                       \
32260 +  fp = (p (f1) ? 1 : 0);                       \
32261 +  if (hp ^ fp) abort ()
32262 +
32263 +#define test2(p,x,y)                           \
32264 +  set2 (x,y);                                  \
32265 +  hp = (p (h1, h2) ? 1 : 0);                   \
32266 +  fp = (p (f1, f2) ? 1 : 0);                   \
32267 +  if (hp ^ fp) abort ()
32268 +
32269 +int
32270 +main (void)
32271 +{
32272 +  int hp, fp;
32273 +
32274 +  test1 (__builtin_isfinite, 17.0);
32275 +  test1 (__builtin_isfinite, INFINITY);
32276 +  test1 (__builtin_isinf, -0.5);
32277 +  test1 (__builtin_isinf, INFINITY);
32278 +  test1 (__builtin_isnan, 493.0);
32279 +  test1 (__builtin_isnan, NAN);
32280 +  test1 (__builtin_isnormal, 3.14159);
32281 +
32282 +  test2 (__builtin_isgreater, 5.0, 3.0);
32283 +  test2 (__builtin_isgreater, 3.0, 5.0);
32284 +  test2 (__builtin_isgreater, 73.5, 73.5);
32285 +  test2 (__builtin_isgreater, 1.0, NAN);
32286 +
32287 +  test2 (__builtin_isgreaterequal, 5.0, 3.0);
32288 +  test2 (__builtin_isgreaterequal, 3.0, 5.0);
32289 +  test2 (__builtin_isgreaterequal, 73.5, 73.5);
32290 +  test2 (__builtin_isgreaterequal, 1.0, NAN);
32291 +
32292 +  test2 (__builtin_isless, 5.0, 3.0);
32293 +  test2 (__builtin_isless, 3.0, 5.0);
32294 +  test2 (__builtin_isless, 73.5, 73.5);
32295 +  test2 (__builtin_isless, 1.0, NAN);
32296 +
32297 +  test2 (__builtin_islessequal, 5.0, 3.0);
32298 +  test2 (__builtin_islessequal, 3.0, 5.0);
32299 +  test2 (__builtin_islessequal, 73.5, 73.5);
32300 +  test2 (__builtin_islessequal, 1.0, NAN);
32301 +
32302 +  test2 (__builtin_islessgreater, 5.0, 3.0);
32303 +  test2 (__builtin_islessgreater, 3.0, 5.0);
32304 +  test2 (__builtin_islessgreater, 73.5, 73.5);
32305 +  test2 (__builtin_islessgreater, 1.0, NAN);
32306 +
32307 +  test2 (__builtin_isunordered, 5.0, 3.0);
32308 +  test2 (__builtin_isunordered, 3.0, 5.0);
32309 +  test2 (__builtin_isunordered, 73.5, 73.5);
32310 +  test2 (__builtin_isunordered, 1.0, NAN);
32311 +
32312 +  /* Test that __builtin_isnormal recognizes a denormalized __fp16 value,
32313 +     even if it's representable as a normalized float.  */
32314 +  h1 = 5.96046E-8;
32315 +  if (__builtin_isnormal (h1))
32316 +    abort ();
32317 +
32318 +  return 0;
32319 +}
32320 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-10.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-10.c
32321 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-10.c        1970-01-01 01:00:00.000000000 +0100
32322 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-10.c        2010-01-25 09:50:29.265686890 +0100
32323 @@ -0,0 +1,8 @@
32324 +/* { dg-do compile } */
32325 +/* { dg-options "-mfp16-format=alternative -pedantic -std=gnu99" } */
32326 +
32327 +#include <math.h>
32328 +
32329 +/* NaNs are not representable in the alternative format; we should get a
32330 +   diagnostic.  */
32331 +__fp16 xx = NAN; /* { dg-warning "overflow" } */
32332 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-11.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-11.c
32333 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-11.c        1970-01-01 01:00:00.000000000 +0100
32334 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-11.c        2010-01-25 09:50:29.265686890 +0100
32335 @@ -0,0 +1,13 @@
32336 +/* { dg-do compile } */
32337 +/* { dg-options "-mfp16-format=alternative -pedantic -std=gnu99" } */
32338 +
32339 +#include <math.h>
32340 +
32341 +/* Infinities are not representable in the alternative format;
32342 +   we should get a diagnostic, and the value set to the largest
32343 +   representable value.  */
32344 +/* 0x7fff = 32767 */
32345 +__fp16 xx = INFINITY; /* { dg-warning "overflow" } */
32346 +
32347 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32348 +/* { dg-final { scan-assembler "\t.short\t32767" } } */
32349 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-12.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-12.c
32350 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-12.c        1970-01-01 01:00:00.000000000 +0100
32351 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-12.c        2010-01-25 09:50:29.265686890 +0100
32352 @@ -0,0 +1,8 @@
32353 +/* { dg-do compile } */
32354 +/* { dg-options "-mfp16-format=alternative" } */
32355 +
32356 +float xx __attribute__((mode(HF))) = 0.0;
32357 +
32358 +/* { dg-final { scan-assembler "\t.eabi_attribute 38, 2" } } */
32359 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32360 +/* { dg-final { scan-assembler "\t.space\t2" } } */
32361 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-1.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-1.c
32362 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-1.c 1970-01-01 01:00:00.000000000 +0100
32363 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-1.c 2010-01-25 09:50:29.265686890 +0100
32364 @@ -0,0 +1,8 @@
32365 +/* { dg-do compile } */
32366 +/* { dg-options "-mfp16-format=alternative" } */
32367 +
32368 +__fp16 xx = 0.0;
32369 +
32370 +/* { dg-final { scan-assembler "\t.eabi_attribute 38, 2" } } */
32371 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32372 +/* { dg-final { scan-assembler "\t.space\t2" } } */
32373 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-2.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-2.c
32374 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-2.c 1970-01-01 01:00:00.000000000 +0100
32375 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-2.c 2010-01-25 09:50:29.265686890 +0100
32376 @@ -0,0 +1,9 @@
32377 +/* { dg-do compile } */
32378 +/* { dg-options "-mfp16-format=alternative" } */
32379 +
32380 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32381 +/* 0x3c00 = 15360 */
32382 +__fp16 xx = 1.0;
32383 +
32384 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32385 +/* { dg-final { scan-assembler "\t.short\t15360" } } */
32386 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-3.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-3.c
32387 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-3.c 1970-01-01 01:00:00.000000000 +0100
32388 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-3.c 2010-01-25 09:50:29.265686890 +0100
32389 @@ -0,0 +1,9 @@
32390 +/* { dg-do compile } */
32391 +/* { dg-options "-mfp16-format=alternative" } */
32392 +
32393 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32394 +/* 0xc000 = 49152 */
32395 +__fp16 xx = -2.0;
32396 +
32397 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32398 +/* { dg-final { scan-assembler "\t.short\t49152" } } */
32399 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-4.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-4.c
32400 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-4.c 1970-01-01 01:00:00.000000000 +0100
32401 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-4.c 2010-01-25 09:50:29.265686890 +0100
32402 @@ -0,0 +1,9 @@
32403 +/* { dg-do compile } */
32404 +/* { dg-options "-mfp16-format=alternative" } */
32405 +
32406 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32407 +/* 0x7bff = 31743 */
32408 +__fp16 xx = 65504.0;
32409 +
32410 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32411 +/* { dg-final { scan-assembler "\t.short\t31743" } } */
32412 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-5.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-5.c
32413 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-5.c 1970-01-01 01:00:00.000000000 +0100
32414 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-5.c 2010-01-25 09:50:29.265686890 +0100
32415 @@ -0,0 +1,9 @@
32416 +/* { dg-do compile } */
32417 +/* { dg-options "-mfp16-format=alternative" } */
32418 +
32419 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32420 +/* 0x3555 = 13653 */
32421 +__fp16 xx = (1.0/3.0);
32422 +
32423 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32424 +/* { dg-final { scan-assembler "\t.short\t13653" } } */
32425 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-6.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-6.c
32426 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-6.c 1970-01-01 01:00:00.000000000 +0100
32427 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-6.c 2010-01-25 09:50:29.265686890 +0100
32428 @@ -0,0 +1,10 @@
32429 +/* { dg-do compile } */
32430 +/* { dg-options "-mfp16-format=alternative" } */
32431 +
32432 +/* This number is the maximum value representable in the alternative
32433 +   encoding.  */
32434 +/* 0x7fff = 32767 */
32435 +__fp16 xx = 131008.0;
32436 +
32437 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32438 +/* { dg-final { scan-assembler "\t.short\t32767" } } */
32439 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-7.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-7.c
32440 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-7.c 1970-01-01 01:00:00.000000000 +0100
32441 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-7.c 2010-01-25 09:50:29.265686890 +0100
32442 @@ -0,0 +1,11 @@
32443 +/* { dg-do compile } */
32444 +/* { dg-options "-mfp16-format=alternative -pedantic" } */
32445 +
32446 +/* This number overflows the range of the alternative encoding.  Since this
32447 +   encoding doesn't have infinities, we should get a pedantic warning,
32448 +   and the value should be set to the largest representable value.  */
32449 +/* 0x7fff = 32767 */
32450 +__fp16 xx = 123456789.0;  /* { dg-warning "overflow" } */
32451 +
32452 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32453 +/* { dg-final { scan-assembler "\t.short\t32767" } } */
32454 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-8.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-8.c
32455 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-8.c 1970-01-01 01:00:00.000000000 +0100
32456 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-8.c 2010-01-25 09:50:29.265686890 +0100
32457 @@ -0,0 +1,10 @@
32458 +/* { dg-do compile } */
32459 +/* { dg-options "-mfp16-format=alternative" } */
32460 +
32461 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32462 +/* This is the minimum normalized value.  */
32463 +/* 0x0400 = 1024 */
32464 +__fp16 xx = 6.10352E-5;
32465 +
32466 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32467 +/* { dg-final { scan-assembler "\t.short\t1024" } } */
32468 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-9.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-9.c
32469 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-9.c 1970-01-01 01:00:00.000000000 +0100
32470 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-9.c 2010-01-25 09:50:29.265686890 +0100
32471 @@ -0,0 +1,10 @@
32472 +/* { dg-do compile } */
32473 +/* { dg-options "-mfp16-format=alternative" } */
32474 +
32475 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32476 +/* This is the minimum denormalized value.  */
32477 +/* 0x0001 = 1 */
32478 +__fp16 xx = 5.96046E-8;
32479 +
32480 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32481 +/* { dg-final { scan-assembler "\t.short\t1" } } */
32482 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-exprtype.c b/gcc/testsuite/gcc.target/arm/fp16-compile-exprtype.c
32483 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-exprtype.c      1970-01-01 01:00:00.000000000 +0100
32484 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-exprtype.c      2010-01-25 09:50:29.265686890 +0100
32485 @@ -0,0 +1,29 @@
32486 +/* Test that expressions involving __fp16 values have the right types.  */
32487 +/* { dg-do compile } */
32488 +/* { dg-options "-mfp16-format=ieee" } */
32489 +
32490 +/* This produces a diagnostic if EXPR doesn't have type TYPE.  */
32491 +#define CHECK(expr,type)                       \
32492 +  do {                                         \
32493 +    type v;                                    \
32494 +    __typeof (expr) *p = &v;                   \
32495 +  } while (0);
32496 +
32497 +volatile __fp16 f1;
32498 +volatile __fp16 f2;
32499 +
32500 +int
32501 +main (void)
32502 +{
32503 +  CHECK (f1, __fp16);
32504 +  CHECK (+f1, float);
32505 +  CHECK (-f1, float);
32506 +  CHECK (f1+f2, float);
32507 +  CHECK ((__fp16)(f1+f2), __fp16);
32508 +  CHECK ((__fp16)99.99, __fp16);
32509 +  CHECK ((f1+f2, f1), __fp16);
32510 +}
32511 +
32512 +
32513 +
32514 +
32515 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-10.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-10.c
32516 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-10.c       1970-01-01 01:00:00.000000000 +0100
32517 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-10.c       2010-01-25 09:50:29.265686890 +0100
32518 @@ -0,0 +1,10 @@
32519 +/* { dg-do compile } */
32520 +/* { dg-options "-mfp16-format=ieee -std=gnu99" } */
32521 +
32522 +#include <math.h>
32523 +
32524 +/* 0x7e00 = 32256 */
32525 +__fp16 xx = NAN;
32526 +
32527 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32528 +/* { dg-final { scan-assembler "\t.short\t32256" } } */
32529 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-11.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-11.c
32530 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-11.c       1970-01-01 01:00:00.000000000 +0100
32531 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-11.c       2010-01-25 09:50:29.265686890 +0100
32532 @@ -0,0 +1,10 @@
32533 +/* { dg-do compile } */
32534 +/* { dg-options "-mfp16-format=ieee -std=gnu99" } */
32535 +
32536 +#include <math.h>
32537 +
32538 +/* 0x7c00 = 31744 */
32539 +__fp16 xx = INFINITY;
32540 +
32541 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32542 +/* { dg-final { scan-assembler "\t.short\t31744" } } */
32543 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-12.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-12.c
32544 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-12.c       1970-01-01 01:00:00.000000000 +0100
32545 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-12.c       2010-01-25 09:50:29.265686890 +0100
32546 @@ -0,0 +1,8 @@
32547 +/* { dg-do compile } */
32548 +/* { dg-options "-mfp16-format=ieee" } */
32549 +
32550 +float xx __attribute__((mode(HF))) = 0.0;
32551 +
32552 +/* { dg-final { scan-assembler "\t.eabi_attribute 38, 1" } } */
32553 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32554 +/* { dg-final { scan-assembler "\t.space\t2" } } */
32555 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-1.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-1.c
32556 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-1.c        1970-01-01 01:00:00.000000000 +0100
32557 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-1.c        2010-01-25 09:50:29.275686903 +0100
32558 @@ -0,0 +1,8 @@
32559 +/* { dg-do compile } */
32560 +/* { dg-options "-mfp16-format=ieee" } */
32561 +
32562 +__fp16 xx = 0.0;
32563 +
32564 +/* { dg-final { scan-assembler "\t.eabi_attribute 38, 1" } } */
32565 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32566 +/* { dg-final { scan-assembler "\t.space\t2" } } */
32567 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-2.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-2.c
32568 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-2.c        1970-01-01 01:00:00.000000000 +0100
32569 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-2.c        2010-01-25 09:50:29.275686903 +0100
32570 @@ -0,0 +1,9 @@
32571 +/* { dg-do compile } */
32572 +/* { dg-options "-mfp16-format=ieee" } */
32573 +
32574 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32575 +/* 0x3c00 = 15360 */
32576 +__fp16 xx = 1.0;
32577 +
32578 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32579 +/* { dg-final { scan-assembler "\t.short\t15360" } } */
32580 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-3.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-3.c
32581 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-3.c        1970-01-01 01:00:00.000000000 +0100
32582 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-3.c        2010-01-25 09:50:29.275686903 +0100
32583 @@ -0,0 +1,9 @@
32584 +/* { dg-do compile } */
32585 +/* { dg-options "-mfp16-format=ieee" } */
32586 +
32587 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32588 +/* 0xc000 = 49152 */
32589 +__fp16 xx = -2.0;
32590 +
32591 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32592 +/* { dg-final { scan-assembler "\t.short\t49152" } } */
32593 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-4.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-4.c
32594 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-4.c        1970-01-01 01:00:00.000000000 +0100
32595 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-4.c        2010-01-25 09:50:29.275686903 +0100
32596 @@ -0,0 +1,9 @@
32597 +/* { dg-do compile } */
32598 +/* { dg-options "-mfp16-format=ieee" } */
32599 +
32600 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32601 +/* 0x7bff = 31743 */
32602 +__fp16 xx = 65504.0;
32603 +
32604 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32605 +/* { dg-final { scan-assembler "\t.short\t31743" } } */
32606 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-5.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-5.c
32607 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-5.c        1970-01-01 01:00:00.000000000 +0100
32608 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-5.c        2010-01-25 09:50:29.275686903 +0100
32609 @@ -0,0 +1,9 @@
32610 +/* { dg-do compile } */
32611 +/* { dg-options "-mfp16-format=ieee" } */
32612 +
32613 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32614 +/* 0x3555 = 13653 */
32615 +__fp16 xx = (1.0/3.0);
32616 +
32617 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32618 +/* { dg-final { scan-assembler "\t.short\t13653" } } */
32619 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-6.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-6.c
32620 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-6.c        1970-01-01 01:00:00.000000000 +0100
32621 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-6.c        2010-01-25 09:50:29.275686903 +0100
32622 @@ -0,0 +1,10 @@
32623 +/* { dg-do compile } */
32624 +/* { dg-options "-mfp16-format=ieee" } */
32625 +
32626 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32627 +/* This number is too big and is represented as infinity.  */
32628 +/* 0x7c00 = 31744 */
32629 +__fp16 xx = 131008.0;
32630 +
32631 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32632 +/* { dg-final { scan-assembler "\t.short\t31744" } } */
32633 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-7.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-7.c
32634 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-7.c        1970-01-01 01:00:00.000000000 +0100
32635 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-7.c        2010-01-25 09:50:29.275686903 +0100
32636 @@ -0,0 +1,11 @@
32637 +/* { dg-do compile } */
32638 +/* { dg-options "-mfp16-format=ieee -pedantic" } */
32639 +
32640 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32641 +/* This number is too big and is represented as infinity.  */
32642 +/* We should *not* get an overflow warning here.  */
32643 +/* 0x7c00 = 31744 */
32644 +__fp16 xx = 123456789.0;
32645 +
32646 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32647 +/* { dg-final { scan-assembler "\t.short\t31744" } } */
32648 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-8.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-8.c
32649 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-8.c        1970-01-01 01:00:00.000000000 +0100
32650 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-8.c        2010-01-25 09:50:29.275686903 +0100
32651 @@ -0,0 +1,10 @@
32652 +/* { dg-do compile } */
32653 +/* { dg-options "-mfp16-format=ieee" } */
32654 +
32655 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32656 +/* This is the minimum normalized value.  */
32657 +/* 0x0400 = 1024 */
32658 +__fp16 xx = 6.10352E-5;
32659 +
32660 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32661 +/* { dg-final { scan-assembler "\t.short\t1024" } } */
32662 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-9.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-9.c
32663 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-9.c        1970-01-01 01:00:00.000000000 +0100
32664 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-9.c        2010-01-25 09:50:29.275686903 +0100
32665 @@ -0,0 +1,10 @@
32666 +/* { dg-do compile } */
32667 +/* { dg-options "-mfp16-format=ieee" } */
32668 +
32669 +/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
32670 +/* This is the minimum denormalized value.  */
32671 +/* 0x0001 = 1 */
32672 +__fp16 xx = 5.96046E-8;
32673 +
32674 +/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
32675 +/* { dg-final { scan-assembler "\t.short\t1" } } */
32676 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c b/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c
32677 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c        1970-01-01 01:00:00.000000000 +0100
32678 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c        2010-01-25 09:50:29.275686903 +0100
32679 @@ -0,0 +1,6 @@
32680 +/* { dg-do compile } */
32681 +/* { dg-options "-mfp16-format=none" } */
32682 +
32683 +/* __fp16 type name is not recognized unless you explicitly enable it
32684 +   by selecting -mfp16-format=ieee or -mfp16-format=alternative.  */
32685 +__fp16 xx = 0.0;  /* { dg-error "expected" } */
32686 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-none-2.c b/gcc/testsuite/gcc.target/arm/fp16-compile-none-2.c
32687 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-none-2.c        1970-01-01 01:00:00.000000000 +0100
32688 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-none-2.c        2010-01-25 09:50:29.275686903 +0100
32689 @@ -0,0 +1,7 @@
32690 +/* { dg-do compile } */
32691 +/* { dg-options "-mfp16-format=none" } */
32692 +
32693 +/* mode(HF) attributes are not recognized unless you explicitly enable
32694 +   half-precision floating point by selecting -mfp16-format=ieee or
32695 +   -mfp16-format=alternative.  */
32696 +float xx __attribute__((mode(HF))) = 0.0;  /* { dg-error "HF" } */
32697 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c b/gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c
32698 --- a/gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c  1970-01-01 01:00:00.000000000 +0100
32699 +++ b/gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c  2010-01-25 09:50:29.275686903 +0100
32700 @@ -0,0 +1,20 @@
32701 +/* { dg-do compile } */
32702 +/* { dg-require-effective-target arm_neon_fp16_ok } */
32703 +/* { dg-options "-mfp16-format=ieee" } */
32704 +/* { dg-add-options arm_neon_fp16 } */
32705 +
32706 +/* Test generation of VFP __fp16 instructions.  */
32707 +
32708 +__fp16 h1 = 0.0;
32709 +__fp16 h2 = 1234.0;
32710 +float f1 = 2.0;
32711 +float f2 = -999.9;
32712 +
32713 +void f (void)
32714 +{
32715 +  h1 = f1;
32716 +  f2 = h2;
32717 +}
32718 +
32719 +/* { dg-final { scan-assembler "\tvcvtb.f32.f16" } } */
32720 +/* { dg-final { scan-assembler "\tvcvtb.f16.f32" } } */
32721 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-param-1.c b/gcc/testsuite/gcc.target/arm/fp16-param-1.c
32722 --- a/gcc/testsuite/gcc.target/arm/fp16-param-1.c       1970-01-01 01:00:00.000000000 +0100
32723 +++ b/gcc/testsuite/gcc.target/arm/fp16-param-1.c       2010-01-25 09:50:29.275686903 +0100
32724 @@ -0,0 +1,10 @@
32725 +/* { dg-do compile } */
32726 +/* { dg-options "-mfp16-format=ieee" } */
32727 +
32728 +/* Functions cannot have parameters of type __fp16.  */
32729 +extern void f (__fp16);                /* { dg-error "parameters cannot have __fp16 type" } */
32730 +extern void (*pf) (__fp16);    /* { dg-error "parameters cannot have __fp16 type" } */
32731 +
32732 +/* These should be OK.  */
32733 +extern void g (__fp16 *);
32734 +extern void (*pg) (__fp16 *);
32735 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-return-1.c b/gcc/testsuite/gcc.target/arm/fp16-return-1.c
32736 --- a/gcc/testsuite/gcc.target/arm/fp16-return-1.c      1970-01-01 01:00:00.000000000 +0100
32737 +++ b/gcc/testsuite/gcc.target/arm/fp16-return-1.c      2010-01-25 09:50:29.275686903 +0100
32738 @@ -0,0 +1,10 @@
32739 +/* { dg-do compile } */
32740 +/* { dg-options "-mfp16-format=ieee" } */
32741 +
32742 +/* Functions cannot return type __fp16.  */
32743 +extern __fp16 f (void);                /* { dg-error "cannot return __fp16" } */
32744 +extern __fp16 (*pf) (void);    /* { dg-error "cannot return __fp16" } */
32745 +
32746 +/* These should be OK.  */
32747 +extern __fp16 *g (void);
32748 +extern __fp16 *(*pg) (void);
32749 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-rounding-alt-1.c b/gcc/testsuite/gcc.target/arm/fp16-rounding-alt-1.c
32750 --- a/gcc/testsuite/gcc.target/arm/fp16-rounding-alt-1.c        1970-01-01 01:00:00.000000000 +0100
32751 +++ b/gcc/testsuite/gcc.target/arm/fp16-rounding-alt-1.c        2010-01-25 09:50:29.275686903 +0100
32752 @@ -0,0 +1,47 @@
32753 +/* Test intermediate rounding of double to float and then to __fp16, using
32754 +   an example of a number that would round differently if it went directly
32755 +   from double to __fp16.  */
32756 +
32757 +/* { dg-do run } */
32758 +/* { dg-options "-mfp16-format=alternative" } */
32759 +
32760 +#include <stdlib.h>
32761 +
32762 +/* The original double value.  */
32763 +#define ORIG 0x1.0020008p0
32764 +
32765 +/* The expected (double)((__fp16)((float)ORIG)) value.  */
32766 +#define ROUNDED 0x1.0000000p0
32767 +
32768 +typedef union u {
32769 +  __fp16 f;
32770 +  unsigned short h;
32771 +} ufh;
32772 +
32773 +ufh s = { ORIG };
32774 +ufh r = { ROUNDED };
32775 +
32776 +double d = ORIG;
32777 +
32778 +int
32779 +main (void)
32780 +{
32781 +  ufh x;
32782 +
32783 +  /* Test that the rounding is correct for static initializers.  */
32784 +  if (s.h != r.h)
32785 +    abort ();
32786 +
32787 +  /* Test that the rounding is correct for a casted constant expression
32788 +     not in a static initializer.  */
32789 +  x.f = (__fp16)ORIG;
32790 +  if (x.h != r.h)
32791 +    abort ();
32792 +
32793 +  /* Test that the rounding is correct for a runtime conversion.  */
32794 +  x.f = (__fp16)d;
32795 +  if (x.h != r.h)
32796 +    abort ();
32797 +
32798 +  return 0;
32799 +}
32800 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-rounding-ieee-1.c b/gcc/testsuite/gcc.target/arm/fp16-rounding-ieee-1.c
32801 --- a/gcc/testsuite/gcc.target/arm/fp16-rounding-ieee-1.c       1970-01-01 01:00:00.000000000 +0100
32802 +++ b/gcc/testsuite/gcc.target/arm/fp16-rounding-ieee-1.c       2010-01-25 09:50:29.275686903 +0100
32803 @@ -0,0 +1,47 @@
32804 +/* Test intermediate rounding of double to float and then to __fp16, using
32805 +   an example of a number that would round differently if it went directly
32806 +   from double to __fp16.  */
32807 +
32808 +/* { dg-do run } */
32809 +/* { dg-options "-mfp16-format=ieee" } */
32810 +
32811 +#include <stdlib.h>
32812 +
32813 +/* The original double value.  */
32814 +#define ORIG 0x1.0020008p0
32815 +
32816 +/* The expected (double)((__fp16)((float)ORIG)) value.  */
32817 +#define ROUNDED 0x1.0000000p0
32818 +
32819 +typedef union u {
32820 +  __fp16 f;
32821 +  unsigned short h;
32822 +} ufh;
32823 +
32824 +ufh s = { ORIG };
32825 +ufh r = { ROUNDED };
32826 +
32827 +double d = ORIG;
32828 +
32829 +int
32830 +main (void)
32831 +{
32832 +  ufh x;
32833 +
32834 +  /* Test that the rounding is correct for static initializers.  */
32835 +  if (s.h != r.h)
32836 +    abort ();
32837 +
32838 +  /* Test that the rounding is correct for a casted constant expression
32839 +     not in a static initializer.  */
32840 +  x.f = (__fp16)ORIG;
32841 +  if (x.h != r.h)
32842 +    abort ();
32843 +
32844 +  /* Test that the rounding is correct for a runtime conversion.  */
32845 +  x.f = (__fp16)d;
32846 +  if (x.h != r.h)
32847 +    abort ();
32848 +
32849 +  return 0;
32850 +}
32851 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c b/gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c
32852 --- a/gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c        1970-01-01 01:00:00.000000000 +0100
32853 +++ b/gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c        2010-01-25 09:50:29.275686903 +0100
32854 @@ -0,0 +1,21 @@
32855 +/* Test promotion of __fp16 to double as arguments to unprototyped
32856 +   function in another compilation unit.  */
32857 +
32858 +/* { dg-do run } */
32859 +/* { dg-options "-mfp16-format=ieee" } */
32860 +/* { dg-additional-sources "fp16-unprototyped-2.c" } */
32861 +
32862 +#include <stdlib.h>
32863 +
32864 +extern int f ();
32865 +
32866 +static __fp16 x = 42.0;
32867 +static __fp16 y = -42.0;
32868 +
32869 +int
32870 +main (void)
32871 +{
32872 +  if (!f (x, y))
32873 +    abort ();
32874 +  return 0;
32875 +}
32876 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c b/gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c
32877 --- a/gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c        1970-01-01 01:00:00.000000000 +0100
32878 +++ b/gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c        2010-01-25 09:50:29.275686903 +0100
32879 @@ -0,0 +1,12 @@
32880 +/* { dg-do compile } */
32881 +/* { dg-options "-mfp16-format=ieee" } */
32882 +
32883 +extern int f ();
32884 +
32885 +int
32886 +f (double xx, double yy)
32887 +{
32888 +  if (xx == 42.0 && yy == -42.0)
32889 +    return 1;
32890 +  return 0;
32891 +}
32892 diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-variadic-1.c b/gcc/testsuite/gcc.target/arm/fp16-variadic-1.c
32893 --- a/gcc/testsuite/gcc.target/arm/fp16-variadic-1.c    1970-01-01 01:00:00.000000000 +0100
32894 +++ b/gcc/testsuite/gcc.target/arm/fp16-variadic-1.c    2010-01-25 09:50:29.275686903 +0100
32895 @@ -0,0 +1,37 @@
32896 +/* Test promotion of __fp16 to double as arguments to variadic function.  */
32897 +
32898 +/* { dg-do run } */
32899 +/* { dg-options "-mfp16-format=ieee" } */
32900 +
32901 +#include <stdlib.h>
32902 +#include <stdarg.h>
32903 +
32904 +extern int f (int n, ...);
32905 +
32906 +int 
32907 +f (int n, ...)
32908 +{
32909 +  if (n == 2)
32910 +    {
32911 +      double xx, yy;
32912 +      va_list ap;
32913 +      va_start (ap, n);
32914 +      xx = va_arg (ap, double);
32915 +      yy = va_arg (ap, double);
32916 +      va_end (ap);
32917 +      if (xx == 42.0 && yy == -42.0)
32918 +       return 1;
32919 +    }
32920 +  return 0;
32921 +}
32922 +
32923 +static __fp16 x = 42.0;
32924 +static __fp16 y = -42.0;
32925 +
32926 +int
32927 +main (void)
32928 +{
32929 +  if (!f (2, x, y))
32930 +    abort ();
32931 +  return 0;
32932 +}
32933 diff -Nur a/gcc/testsuite/gcc.target/arm/frame-pointer-1.c b/gcc/testsuite/gcc.target/arm/frame-pointer-1.c
32934 --- a/gcc/testsuite/gcc.target/arm/frame-pointer-1.c    1970-01-01 01:00:00.000000000 +0100
32935 +++ b/gcc/testsuite/gcc.target/arm/frame-pointer-1.c    2010-01-25 09:50:29.275686903 +0100
32936 @@ -0,0 +1,42 @@
32937 +/* Check local register variables using a register conventionally 
32938 +   used as the frame pointer aren't clobbered under high register pressure.  */
32939 +/* { dg-do run } */
32940 +/* { dg-options "-Os -mthumb -fomit-frame-pointer" } */
32941 +
32942 +#include <stdlib.h>
32943 +
32944 +int global=5;
32945 +
32946 +void __attribute__((noinline)) foo(int p1, int p2, int p3, int p4)
32947 +{
32948 +  if (global != 5 || p1 != 1 || p2 != 2 || p3 != 3 || p4 != 4)
32949 +    abort();
32950 +}
32951 +
32952 +int __attribute__((noinline)) test(int a, int b, int c, int d)
32953 +{
32954 +  register unsigned long r __asm__("r7") = 0xdeadbeef;
32955 +  int e;
32956 +
32957 +  /* ABCD are live after the call which should be enough
32958 +     to cause r7 to be used if it weren't for the register variable.  */
32959 +  foo(a,b,c,d);
32960 +
32961 +  e = 0;
32962 +  __asm__ __volatile__ ("mov %0, %2"
32963 +                       : "=r" (e)
32964 +                       : "0" (e), "r" (r));
32965 +
32966 +  global = a+b+c+d;
32967 +
32968 +  return e;
32969 +}
32970 +
32971 +int main()
32972 +{
32973 +  if (test(1, 2, 3, 4) != 0xdeadbeef)
32974 +    abort();
32975 +  if (global != 10)
32976 +    abort();
32977 +  return 0;
32978 +}
32979 diff -Nur a/gcc/testsuite/gcc.target/arm/janus-2cc-shift-1.c b/gcc/testsuite/gcc.target/arm/janus-2cc-shift-1.c
32980 --- a/gcc/testsuite/gcc.target/arm/janus-2cc-shift-1.c  1970-01-01 01:00:00.000000000 +0100
32981 +++ b/gcc/testsuite/gcc.target/arm/janus-2cc-shift-1.c  2010-01-25 09:50:29.275686903 +0100
32982 @@ -0,0 +1,17 @@
32983 +/* Check that a nop is inserted after a shift taking a register operand.  */
32984 +/* { dg-do compile } */
32985 +/* { dg-options "-mfix-janus-2cc" } */
32986 +/* { dg-require-effective-target arm_not_thumb } */
32987 +int foo(int x)
32988 +{
32989 +  int y;
32990 +  int z;
32991 +  
32992 +  y = x << 4;
32993 +  z = y << x;
32994 +
32995 +  return y+z;
32996 +}
32997 +/* { dg-final { scan-assembler "\tmov\tr\[0-9], r\[0-9], asl r\[0-9]\n\tnop\n" } } */
32998 +/* { dg-final { scan-assembler-not "\tmov\tr\[0-9], r\[0-9], asl #4\n\tnop\n" } } */
32999 +
33000 diff -Nur a/gcc/testsuite/gcc.target/arm/janus-2cc-shift-2.c b/gcc/testsuite/gcc.target/arm/janus-2cc-shift-2.c
33001 --- a/gcc/testsuite/gcc.target/arm/janus-2cc-shift-2.c  1970-01-01 01:00:00.000000000 +0100
33002 +++ b/gcc/testsuite/gcc.target/arm/janus-2cc-shift-2.c  2010-01-25 09:50:29.275686903 +0100
33003 @@ -0,0 +1,17 @@
33004 +/* Check that a nop is inserted after a shift taking a register operand.  */
33005 +/* { dg-do compile } */
33006 +/* { dg-options "-mfix-janus-2cc -mthumb" } */
33007 +/* { dg-require-effective-target arm_thumb1_ok } */
33008 +int foo(int x)
33009 +{
33010 +  int y;
33011 +  int z;
33012 +  
33013 +  y = x << 4;
33014 +  z = y << x;
33015 +
33016 +  return y+z;
33017 +}
33018 +/* { dg-final { scan-assembler "\tlsl\tr\[0-9], r\[0-9], r\[0-9]\n\tnop\n" } } */
33019 +/* { dg-final { scan-assembler-not "\tlsl\tr\[0-9], r\[0-9], #4\n\tnop\n" } } */
33020 +
33021 diff -Nur a/gcc/testsuite/gcc.target/arm/mmx-1.c b/gcc/testsuite/gcc.target/arm/mmx-1.c
33022 --- a/gcc/testsuite/gcc.target/arm/mmx-1.c      2008-09-13 15:26:46.000000000 +0200
33023 +++ b/gcc/testsuite/gcc.target/arm/mmx-1.c      2010-01-25 09:50:29.275686903 +0100
33024 @@ -3,10 +3,10 @@
33025  /* { dg-do compile } */
33026  /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mcpu=*" } { "-mcpu=iwmmxt" } } */
33027  /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mabi=*" } { "-mabi=iwmmxt" } } */
33028 -/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mfloat-abi=softfp" } { "" } } */
33029  /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-march=*" } { "-march=iwmmxt" } } */
33030  /* { dg-options "-O -mno-apcs-frame -mcpu=iwmmxt -mabi=iwmmxt" } */
33031  /* { dg-require-effective-target arm32 } */
33032 +/* { dg-require-effective-target arm_iwmmxt_ok } */
33033  /* { dg-final { scan-assembler "ldmfd\[        ]sp!.*ip,\[ ]*pc" } } */
33034  
33035  /* This function uses all the call-saved registers, namely r4, r5, r6,
33036 diff -Nur a/gcc/testsuite/gcc.target/arm/naked-3.c b/gcc/testsuite/gcc.target/arm/naked-3.c
33037 --- a/gcc/testsuite/gcc.target/arm/naked-3.c    1970-01-01 01:00:00.000000000 +0100
33038 +++ b/gcc/testsuite/gcc.target/arm/naked-3.c    2010-01-25 09:50:29.275686903 +0100
33039 @@ -0,0 +1,15 @@
33040 +/* { dg-do compile } */
33041 +/* { dg-options "-O2 -Wall" } */
33042 +/* Check that we do not get warnings about missing return statements
33043 +   or bogus looking noreturn functions.  */
33044 +int __attribute__((naked))
33045 +foo(void)
33046 +{
33047 +  __asm__ volatile ("mov r0, #1\r\nbx lr\n");
33048 +}
33049 +
33050 +int __attribute__((naked,noreturn))
33051 +bar(void)
33052 +{
33053 +  __asm__ volatile ("frob r0\n");
33054 +}
33055 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/polytypes.c b/gcc/testsuite/gcc.target/arm/neon/polytypes.c
33056 --- a/gcc/testsuite/gcc.target/arm/neon/polytypes.c     2008-07-02 21:35:08.000000000 +0200
33057 +++ b/gcc/testsuite/gcc.target/arm/neon/polytypes.c     2010-01-25 09:50:29.275686903 +0100
33058 @@ -3,7 +3,7 @@
33059  
33060  /* { dg-do compile } */
33061  /* { dg-require-effective-target arm_neon_ok } */
33062 -/* { dg-options "-mfpu=neon -mfloat-abi=softfp" } */
33063 +/* { dg-add-options arm_neon } */
33064  
33065  #include <arm_neon.h>
33066  
33067 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabals16.c b/gcc/testsuite/gcc.target/arm/neon/vabals16.c
33068 --- a/gcc/testsuite/gcc.target/arm/neon/vabals16.c      2007-07-25 14:28:31.000000000 +0200
33069 +++ b/gcc/testsuite/gcc.target/arm/neon/vabals16.c      2010-01-25 09:50:29.275686903 +0100
33070 @@ -3,7 +3,8 @@
33071  
33072  /* { dg-do assemble } */
33073  /* { dg-require-effective-target arm_neon_ok } */
33074 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33075 +/* { dg-options "-save-temps -O0" } */
33076 +/* { dg-add-options arm_neon } */
33077  
33078  #include "arm_neon.h"
33079  
33080 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabals32.c b/gcc/testsuite/gcc.target/arm/neon/vabals32.c
33081 --- a/gcc/testsuite/gcc.target/arm/neon/vabals32.c      2007-07-25 14:28:31.000000000 +0200
33082 +++ b/gcc/testsuite/gcc.target/arm/neon/vabals32.c      2010-01-25 09:50:29.275686903 +0100
33083 @@ -3,7 +3,8 @@
33084  
33085  /* { dg-do assemble } */
33086  /* { dg-require-effective-target arm_neon_ok } */
33087 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33088 +/* { dg-options "-save-temps -O0" } */
33089 +/* { dg-add-options arm_neon } */
33090  
33091  #include "arm_neon.h"
33092  
33093 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabals8.c b/gcc/testsuite/gcc.target/arm/neon/vabals8.c
33094 --- a/gcc/testsuite/gcc.target/arm/neon/vabals8.c       2007-07-25 14:28:31.000000000 +0200
33095 +++ b/gcc/testsuite/gcc.target/arm/neon/vabals8.c       2010-01-25 09:50:29.275686903 +0100
33096 @@ -3,7 +3,8 @@
33097  
33098  /* { dg-do assemble } */
33099  /* { dg-require-effective-target arm_neon_ok } */
33100 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33101 +/* { dg-options "-save-temps -O0" } */
33102 +/* { dg-add-options arm_neon } */
33103  
33104  #include "arm_neon.h"
33105  
33106 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabalu16.c b/gcc/testsuite/gcc.target/arm/neon/vabalu16.c
33107 --- a/gcc/testsuite/gcc.target/arm/neon/vabalu16.c      2007-07-25 14:28:31.000000000 +0200
33108 +++ b/gcc/testsuite/gcc.target/arm/neon/vabalu16.c      2010-01-25 09:50:29.275686903 +0100
33109 @@ -3,7 +3,8 @@
33110  
33111  /* { dg-do assemble } */
33112  /* { dg-require-effective-target arm_neon_ok } */
33113 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33114 +/* { dg-options "-save-temps -O0" } */
33115 +/* { dg-add-options arm_neon } */
33116  
33117  #include "arm_neon.h"
33118  
33119 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabalu32.c b/gcc/testsuite/gcc.target/arm/neon/vabalu32.c
33120 --- a/gcc/testsuite/gcc.target/arm/neon/vabalu32.c      2007-07-25 14:28:31.000000000 +0200
33121 +++ b/gcc/testsuite/gcc.target/arm/neon/vabalu32.c      2010-01-25 09:50:29.275686903 +0100
33122 @@ -3,7 +3,8 @@
33123  
33124  /* { dg-do assemble } */
33125  /* { dg-require-effective-target arm_neon_ok } */
33126 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33127 +/* { dg-options "-save-temps -O0" } */
33128 +/* { dg-add-options arm_neon } */
33129  
33130  #include "arm_neon.h"
33131  
33132 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabalu8.c b/gcc/testsuite/gcc.target/arm/neon/vabalu8.c
33133 --- a/gcc/testsuite/gcc.target/arm/neon/vabalu8.c       2007-07-25 14:28:31.000000000 +0200
33134 +++ b/gcc/testsuite/gcc.target/arm/neon/vabalu8.c       2010-01-25 09:50:29.275686903 +0100
33135 @@ -3,7 +3,8 @@
33136  
33137  /* { dg-do assemble } */
33138  /* { dg-require-effective-target arm_neon_ok } */
33139 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33140 +/* { dg-options "-save-temps -O0" } */
33141 +/* { dg-add-options arm_neon } */
33142  
33143  #include "arm_neon.h"
33144  
33145 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c b/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c
33146 --- a/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c      2007-07-25 14:28:31.000000000 +0200
33147 +++ b/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c      2010-01-25 09:50:29.275686903 +0100
33148 @@ -3,7 +3,8 @@
33149  
33150  /* { dg-do assemble } */
33151  /* { dg-require-effective-target arm_neon_ok } */
33152 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33153 +/* { dg-options "-save-temps -O0" } */
33154 +/* { dg-add-options arm_neon } */
33155  
33156  #include "arm_neon.h"
33157  
33158 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c b/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c
33159 --- a/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c      2007-07-25 14:28:31.000000000 +0200
33160 +++ b/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c      2010-01-25 09:50:29.275686903 +0100
33161 @@ -3,7 +3,8 @@
33162  
33163  /* { dg-do assemble } */
33164  /* { dg-require-effective-target arm_neon_ok } */
33165 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33166 +/* { dg-options "-save-temps -O0" } */
33167 +/* { dg-add-options arm_neon } */
33168  
33169  #include "arm_neon.h"
33170  
33171 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c b/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c
33172 --- a/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c       2007-07-25 14:28:31.000000000 +0200
33173 +++ b/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c       2010-01-25 09:50:29.275686903 +0100
33174 @@ -3,7 +3,8 @@
33175  
33176  /* { dg-do assemble } */
33177  /* { dg-require-effective-target arm_neon_ok } */
33178 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33179 +/* { dg-options "-save-temps -O0" } */
33180 +/* { dg-add-options arm_neon } */
33181  
33182  #include "arm_neon.h"
33183  
33184 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c b/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c
33185 --- a/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c      2007-07-25 14:28:31.000000000 +0200
33186 +++ b/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c      2010-01-25 09:50:29.275686903 +0100
33187 @@ -3,7 +3,8 @@
33188  
33189  /* { dg-do assemble } */
33190  /* { dg-require-effective-target arm_neon_ok } */
33191 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33192 +/* { dg-options "-save-temps -O0" } */
33193 +/* { dg-add-options arm_neon } */
33194  
33195  #include "arm_neon.h"
33196  
33197 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c b/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c
33198 --- a/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c      2007-07-25 14:28:31.000000000 +0200
33199 +++ b/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c      2010-01-25 09:50:29.275686903 +0100
33200 @@ -3,7 +3,8 @@
33201  
33202  /* { dg-do assemble } */
33203  /* { dg-require-effective-target arm_neon_ok } */
33204 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33205 +/* { dg-options "-save-temps -O0" } */
33206 +/* { dg-add-options arm_neon } */
33207  
33208  #include "arm_neon.h"
33209  
33210 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c b/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c
33211 --- a/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c       2007-07-25 14:28:31.000000000 +0200
33212 +++ b/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c       2010-01-25 09:50:29.275686903 +0100
33213 @@ -3,7 +3,8 @@
33214  
33215  /* { dg-do assemble } */
33216  /* { dg-require-effective-target arm_neon_ok } */
33217 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33218 +/* { dg-options "-save-temps -O0" } */
33219 +/* { dg-add-options arm_neon } */
33220  
33221  #include "arm_neon.h"
33222  
33223 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabas16.c b/gcc/testsuite/gcc.target/arm/neon/vabas16.c
33224 --- a/gcc/testsuite/gcc.target/arm/neon/vabas16.c       2007-07-25 14:28:31.000000000 +0200
33225 +++ b/gcc/testsuite/gcc.target/arm/neon/vabas16.c       2010-01-25 09:50:29.275686903 +0100
33226 @@ -3,7 +3,8 @@
33227  
33228  /* { dg-do assemble } */
33229  /* { dg-require-effective-target arm_neon_ok } */
33230 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33231 +/* { dg-options "-save-temps -O0" } */
33232 +/* { dg-add-options arm_neon } */
33233  
33234  #include "arm_neon.h"
33235  
33236 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabas32.c b/gcc/testsuite/gcc.target/arm/neon/vabas32.c
33237 --- a/gcc/testsuite/gcc.target/arm/neon/vabas32.c       2007-07-25 14:28:31.000000000 +0200
33238 +++ b/gcc/testsuite/gcc.target/arm/neon/vabas32.c       2010-01-25 09:50:29.275686903 +0100
33239 @@ -3,7 +3,8 @@
33240  
33241  /* { dg-do assemble } */
33242  /* { dg-require-effective-target arm_neon_ok } */
33243 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33244 +/* { dg-options "-save-temps -O0" } */
33245 +/* { dg-add-options arm_neon } */
33246  
33247  #include "arm_neon.h"
33248  
33249 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabas8.c b/gcc/testsuite/gcc.target/arm/neon/vabas8.c
33250 --- a/gcc/testsuite/gcc.target/arm/neon/vabas8.c        2007-07-25 14:28:31.000000000 +0200
33251 +++ b/gcc/testsuite/gcc.target/arm/neon/vabas8.c        2010-01-25 09:50:29.275686903 +0100
33252 @@ -3,7 +3,8 @@
33253  
33254  /* { dg-do assemble } */
33255  /* { dg-require-effective-target arm_neon_ok } */
33256 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33257 +/* { dg-options "-save-temps -O0" } */
33258 +/* { dg-add-options arm_neon } */
33259  
33260  #include "arm_neon.h"
33261  
33262 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabau16.c b/gcc/testsuite/gcc.target/arm/neon/vabau16.c
33263 --- a/gcc/testsuite/gcc.target/arm/neon/vabau16.c       2007-07-25 14:28:31.000000000 +0200
33264 +++ b/gcc/testsuite/gcc.target/arm/neon/vabau16.c       2010-01-25 09:50:29.275686903 +0100
33265 @@ -3,7 +3,8 @@
33266  
33267  /* { dg-do assemble } */
33268  /* { dg-require-effective-target arm_neon_ok } */
33269 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33270 +/* { dg-options "-save-temps -O0" } */
33271 +/* { dg-add-options arm_neon } */
33272  
33273  #include "arm_neon.h"
33274  
33275 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabau32.c b/gcc/testsuite/gcc.target/arm/neon/vabau32.c
33276 --- a/gcc/testsuite/gcc.target/arm/neon/vabau32.c       2007-07-25 14:28:31.000000000 +0200
33277 +++ b/gcc/testsuite/gcc.target/arm/neon/vabau32.c       2010-01-25 09:50:29.275686903 +0100
33278 @@ -3,7 +3,8 @@
33279  
33280  /* { dg-do assemble } */
33281  /* { dg-require-effective-target arm_neon_ok } */
33282 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33283 +/* { dg-options "-save-temps -O0" } */
33284 +/* { dg-add-options arm_neon } */
33285  
33286  #include "arm_neon.h"
33287  
33288 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabau8.c b/gcc/testsuite/gcc.target/arm/neon/vabau8.c
33289 --- a/gcc/testsuite/gcc.target/arm/neon/vabau8.c        2007-07-25 14:28:31.000000000 +0200
33290 +++ b/gcc/testsuite/gcc.target/arm/neon/vabau8.c        2010-01-25 09:50:29.275686903 +0100
33291 @@ -3,7 +3,8 @@
33292  
33293  /* { dg-do assemble } */
33294  /* { dg-require-effective-target arm_neon_ok } */
33295 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33296 +/* { dg-options "-save-temps -O0" } */
33297 +/* { dg-add-options arm_neon } */
33298  
33299  #include "arm_neon.h"
33300  
33301 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdf32.c b/gcc/testsuite/gcc.target/arm/neon/vabdf32.c
33302 --- a/gcc/testsuite/gcc.target/arm/neon/vabdf32.c       2007-07-25 14:28:31.000000000 +0200
33303 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdf32.c       2010-01-25 09:50:29.275686903 +0100
33304 @@ -3,7 +3,8 @@
33305  
33306  /* { dg-do assemble } */
33307  /* { dg-require-effective-target arm_neon_ok } */
33308 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33309 +/* { dg-options "-save-temps -O0" } */
33310 +/* { dg-add-options arm_neon } */
33311  
33312  #include "arm_neon.h"
33313  
33314 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdls16.c b/gcc/testsuite/gcc.target/arm/neon/vabdls16.c
33315 --- a/gcc/testsuite/gcc.target/arm/neon/vabdls16.c      2007-07-25 14:28:31.000000000 +0200
33316 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdls16.c      2010-01-25 09:50:29.275686903 +0100
33317 @@ -3,7 +3,8 @@
33318  
33319  /* { dg-do assemble } */
33320  /* { dg-require-effective-target arm_neon_ok } */
33321 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33322 +/* { dg-options "-save-temps -O0" } */
33323 +/* { dg-add-options arm_neon } */
33324  
33325  #include "arm_neon.h"
33326  
33327 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdls32.c b/gcc/testsuite/gcc.target/arm/neon/vabdls32.c
33328 --- a/gcc/testsuite/gcc.target/arm/neon/vabdls32.c      2007-07-25 14:28:31.000000000 +0200
33329 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdls32.c      2010-01-25 09:50:29.275686903 +0100
33330 @@ -3,7 +3,8 @@
33331  
33332  /* { dg-do assemble } */
33333  /* { dg-require-effective-target arm_neon_ok } */
33334 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33335 +/* { dg-options "-save-temps -O0" } */
33336 +/* { dg-add-options arm_neon } */
33337  
33338  #include "arm_neon.h"
33339  
33340 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdls8.c b/gcc/testsuite/gcc.target/arm/neon/vabdls8.c
33341 --- a/gcc/testsuite/gcc.target/arm/neon/vabdls8.c       2007-07-25 14:28:31.000000000 +0200
33342 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdls8.c       2010-01-25 09:50:29.275686903 +0100
33343 @@ -3,7 +3,8 @@
33344  
33345  /* { dg-do assemble } */
33346  /* { dg-require-effective-target arm_neon_ok } */
33347 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33348 +/* { dg-options "-save-temps -O0" } */
33349 +/* { dg-add-options arm_neon } */
33350  
33351  #include "arm_neon.h"
33352  
33353 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c b/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c
33354 --- a/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c      2007-07-25 14:28:31.000000000 +0200
33355 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c      2010-01-25 09:50:29.275686903 +0100
33356 @@ -3,7 +3,8 @@
33357  
33358  /* { dg-do assemble } */
33359  /* { dg-require-effective-target arm_neon_ok } */
33360 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33361 +/* { dg-options "-save-temps -O0" } */
33362 +/* { dg-add-options arm_neon } */
33363  
33364  #include "arm_neon.h"
33365  
33366 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c b/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c
33367 --- a/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c      2007-07-25 14:28:31.000000000 +0200
33368 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c      2010-01-25 09:50:29.275686903 +0100
33369 @@ -3,7 +3,8 @@
33370  
33371  /* { dg-do assemble } */
33372  /* { dg-require-effective-target arm_neon_ok } */
33373 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33374 +/* { dg-options "-save-temps -O0" } */
33375 +/* { dg-add-options arm_neon } */
33376  
33377  #include "arm_neon.h"
33378  
33379 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c b/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c
33380 --- a/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c       2007-07-25 14:28:31.000000000 +0200
33381 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c       2010-01-25 09:50:29.275686903 +0100
33382 @@ -3,7 +3,8 @@
33383  
33384  /* { dg-do assemble } */
33385  /* { dg-require-effective-target arm_neon_ok } */
33386 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33387 +/* { dg-options "-save-temps -O0" } */
33388 +/* { dg-add-options arm_neon } */
33389  
33390  #include "arm_neon.h"
33391  
33392 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c b/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c
33393 --- a/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c      2007-07-25 14:28:31.000000000 +0200
33394 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c      2010-01-25 09:50:29.275686903 +0100
33395 @@ -3,7 +3,8 @@
33396  
33397  /* { dg-do assemble } */
33398  /* { dg-require-effective-target arm_neon_ok } */
33399 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33400 +/* { dg-options "-save-temps -O0" } */
33401 +/* { dg-add-options arm_neon } */
33402  
33403  #include "arm_neon.h"
33404  
33405 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c b/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c
33406 --- a/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c      2007-07-25 14:28:31.000000000 +0200
33407 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c      2010-01-25 09:50:29.275686903 +0100
33408 @@ -3,7 +3,8 @@
33409  
33410  /* { dg-do assemble } */
33411  /* { dg-require-effective-target arm_neon_ok } */
33412 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33413 +/* { dg-options "-save-temps -O0" } */
33414 +/* { dg-add-options arm_neon } */
33415  
33416  #include "arm_neon.h"
33417  
33418 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c b/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c
33419 --- a/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c      2007-07-25 14:28:31.000000000 +0200
33420 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c      2010-01-25 09:50:29.275686903 +0100
33421 @@ -3,7 +3,8 @@
33422  
33423  /* { dg-do assemble } */
33424  /* { dg-require-effective-target arm_neon_ok } */
33425 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33426 +/* { dg-options "-save-temps -O0" } */
33427 +/* { dg-add-options arm_neon } */
33428  
33429  #include "arm_neon.h"
33430  
33431 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c b/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c
33432 --- a/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c       2007-07-25 14:28:31.000000000 +0200
33433 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c       2010-01-25 09:50:29.275686903 +0100
33434 @@ -3,7 +3,8 @@
33435  
33436  /* { dg-do assemble } */
33437  /* { dg-require-effective-target arm_neon_ok } */
33438 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33439 +/* { dg-options "-save-temps -O0" } */
33440 +/* { dg-add-options arm_neon } */
33441  
33442  #include "arm_neon.h"
33443  
33444 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c b/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c
33445 --- a/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c      2007-07-25 14:28:31.000000000 +0200
33446 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c      2010-01-25 09:50:29.275686903 +0100
33447 @@ -3,7 +3,8 @@
33448  
33449  /* { dg-do assemble } */
33450  /* { dg-require-effective-target arm_neon_ok } */
33451 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33452 +/* { dg-options "-save-temps -O0" } */
33453 +/* { dg-add-options arm_neon } */
33454  
33455  #include "arm_neon.h"
33456  
33457 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c b/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c
33458 --- a/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c      2007-07-25 14:28:31.000000000 +0200
33459 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c      2010-01-25 09:50:29.275686903 +0100
33460 @@ -3,7 +3,8 @@
33461  
33462  /* { dg-do assemble } */
33463  /* { dg-require-effective-target arm_neon_ok } */
33464 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33465 +/* { dg-options "-save-temps -O0" } */
33466 +/* { dg-add-options arm_neon } */
33467  
33468  #include "arm_neon.h"
33469  
33470 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c b/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c
33471 --- a/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c       2007-07-25 14:28:31.000000000 +0200
33472 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c       2010-01-25 09:50:29.275686903 +0100
33473 @@ -3,7 +3,8 @@
33474  
33475  /* { dg-do assemble } */
33476  /* { dg-require-effective-target arm_neon_ok } */
33477 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33478 +/* { dg-options "-save-temps -O0" } */
33479 +/* { dg-add-options arm_neon } */
33480  
33481  #include "arm_neon.h"
33482  
33483 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabds16.c b/gcc/testsuite/gcc.target/arm/neon/vabds16.c
33484 --- a/gcc/testsuite/gcc.target/arm/neon/vabds16.c       2007-07-25 14:28:31.000000000 +0200
33485 +++ b/gcc/testsuite/gcc.target/arm/neon/vabds16.c       2010-01-25 09:50:29.275686903 +0100
33486 @@ -3,7 +3,8 @@
33487  
33488  /* { dg-do assemble } */
33489  /* { dg-require-effective-target arm_neon_ok } */
33490 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33491 +/* { dg-options "-save-temps -O0" } */
33492 +/* { dg-add-options arm_neon } */
33493  
33494  #include "arm_neon.h"
33495  
33496 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabds32.c b/gcc/testsuite/gcc.target/arm/neon/vabds32.c
33497 --- a/gcc/testsuite/gcc.target/arm/neon/vabds32.c       2007-07-25 14:28:31.000000000 +0200
33498 +++ b/gcc/testsuite/gcc.target/arm/neon/vabds32.c       2010-01-25 09:50:29.275686903 +0100
33499 @@ -3,7 +3,8 @@
33500  
33501  /* { dg-do assemble } */
33502  /* { dg-require-effective-target arm_neon_ok } */
33503 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33504 +/* { dg-options "-save-temps -O0" } */
33505 +/* { dg-add-options arm_neon } */
33506  
33507  #include "arm_neon.h"
33508  
33509 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabds8.c b/gcc/testsuite/gcc.target/arm/neon/vabds8.c
33510 --- a/gcc/testsuite/gcc.target/arm/neon/vabds8.c        2007-07-25 14:28:31.000000000 +0200
33511 +++ b/gcc/testsuite/gcc.target/arm/neon/vabds8.c        2010-01-25 09:50:29.275686903 +0100
33512 @@ -3,7 +3,8 @@
33513  
33514  /* { dg-do assemble } */
33515  /* { dg-require-effective-target arm_neon_ok } */
33516 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33517 +/* { dg-options "-save-temps -O0" } */
33518 +/* { dg-add-options arm_neon } */
33519  
33520  #include "arm_neon.h"
33521  
33522 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdu16.c b/gcc/testsuite/gcc.target/arm/neon/vabdu16.c
33523 --- a/gcc/testsuite/gcc.target/arm/neon/vabdu16.c       2007-07-25 14:28:31.000000000 +0200
33524 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdu16.c       2010-01-25 09:50:29.275686903 +0100
33525 @@ -3,7 +3,8 @@
33526  
33527  /* { dg-do assemble } */
33528  /* { dg-require-effective-target arm_neon_ok } */
33529 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33530 +/* { dg-options "-save-temps -O0" } */
33531 +/* { dg-add-options arm_neon } */
33532  
33533  #include "arm_neon.h"
33534  
33535 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdu32.c b/gcc/testsuite/gcc.target/arm/neon/vabdu32.c
33536 --- a/gcc/testsuite/gcc.target/arm/neon/vabdu32.c       2007-07-25 14:28:31.000000000 +0200
33537 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdu32.c       2010-01-25 09:50:29.275686903 +0100
33538 @@ -3,7 +3,8 @@
33539  
33540  /* { dg-do assemble } */
33541  /* { dg-require-effective-target arm_neon_ok } */
33542 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33543 +/* { dg-options "-save-temps -O0" } */
33544 +/* { dg-add-options arm_neon } */
33545  
33546  #include "arm_neon.h"
33547  
33548 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdu8.c b/gcc/testsuite/gcc.target/arm/neon/vabdu8.c
33549 --- a/gcc/testsuite/gcc.target/arm/neon/vabdu8.c        2007-07-25 14:28:31.000000000 +0200
33550 +++ b/gcc/testsuite/gcc.target/arm/neon/vabdu8.c        2010-01-25 09:50:29.275686903 +0100
33551 @@ -3,7 +3,8 @@
33552  
33553  /* { dg-do assemble } */
33554  /* { dg-require-effective-target arm_neon_ok } */
33555 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33556 +/* { dg-options "-save-temps -O0" } */
33557 +/* { dg-add-options arm_neon } */
33558  
33559  #include "arm_neon.h"
33560  
33561 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabsf32.c b/gcc/testsuite/gcc.target/arm/neon/vabsf32.c
33562 --- a/gcc/testsuite/gcc.target/arm/neon/vabsf32.c       2007-07-25 14:28:31.000000000 +0200
33563 +++ b/gcc/testsuite/gcc.target/arm/neon/vabsf32.c       2010-01-25 09:50:29.275686903 +0100
33564 @@ -3,7 +3,8 @@
33565  
33566  /* { dg-do assemble } */
33567  /* { dg-require-effective-target arm_neon_ok } */
33568 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33569 +/* { dg-options "-save-temps -O0" } */
33570 +/* { dg-add-options arm_neon } */
33571  
33572  #include "arm_neon.h"
33573  
33574 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c b/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c
33575 --- a/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c      2007-07-25 14:28:31.000000000 +0200
33576 +++ b/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c      2010-01-25 09:50:29.275686903 +0100
33577 @@ -3,7 +3,8 @@
33578  
33579  /* { dg-do assemble } */
33580  /* { dg-require-effective-target arm_neon_ok } */
33581 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33582 +/* { dg-options "-save-temps -O0" } */
33583 +/* { dg-add-options arm_neon } */
33584  
33585  #include "arm_neon.h"
33586  
33587 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c b/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c
33588 --- a/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c      2007-07-25 14:28:31.000000000 +0200
33589 +++ b/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c      2010-01-25 09:50:29.275686903 +0100
33590 @@ -3,7 +3,8 @@
33591  
33592  /* { dg-do assemble } */
33593  /* { dg-require-effective-target arm_neon_ok } */
33594 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33595 +/* { dg-options "-save-temps -O0" } */
33596 +/* { dg-add-options arm_neon } */
33597  
33598  #include "arm_neon.h"
33599  
33600 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c b/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c
33601 --- a/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c      2007-07-25 14:28:31.000000000 +0200
33602 +++ b/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c      2010-01-25 09:50:29.275686903 +0100
33603 @@ -3,7 +3,8 @@
33604  
33605  /* { dg-do assemble } */
33606  /* { dg-require-effective-target arm_neon_ok } */
33607 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33608 +/* { dg-options "-save-temps -O0" } */
33609 +/* { dg-add-options arm_neon } */
33610  
33611  #include "arm_neon.h"
33612  
33613 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c b/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c
33614 --- a/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c       2007-07-25 14:28:31.000000000 +0200
33615 +++ b/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c       2010-01-25 09:50:29.275686903 +0100
33616 @@ -3,7 +3,8 @@
33617  
33618  /* { dg-do assemble } */
33619  /* { dg-require-effective-target arm_neon_ok } */
33620 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33621 +/* { dg-options "-save-temps -O0" } */
33622 +/* { dg-add-options arm_neon } */
33623  
33624  #include "arm_neon.h"
33625  
33626 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabss16.c b/gcc/testsuite/gcc.target/arm/neon/vabss16.c
33627 --- a/gcc/testsuite/gcc.target/arm/neon/vabss16.c       2007-07-25 14:28:31.000000000 +0200
33628 +++ b/gcc/testsuite/gcc.target/arm/neon/vabss16.c       2010-01-25 09:50:29.275686903 +0100
33629 @@ -3,7 +3,8 @@
33630  
33631  /* { dg-do assemble } */
33632  /* { dg-require-effective-target arm_neon_ok } */
33633 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33634 +/* { dg-options "-save-temps -O0" } */
33635 +/* { dg-add-options arm_neon } */
33636  
33637  #include "arm_neon.h"
33638  
33639 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabss32.c b/gcc/testsuite/gcc.target/arm/neon/vabss32.c
33640 --- a/gcc/testsuite/gcc.target/arm/neon/vabss32.c       2007-07-25 14:28:31.000000000 +0200
33641 +++ b/gcc/testsuite/gcc.target/arm/neon/vabss32.c       2010-01-25 09:50:29.275686903 +0100
33642 @@ -3,7 +3,8 @@
33643  
33644  /* { dg-do assemble } */
33645  /* { dg-require-effective-target arm_neon_ok } */
33646 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33647 +/* { dg-options "-save-temps -O0" } */
33648 +/* { dg-add-options arm_neon } */
33649  
33650  #include "arm_neon.h"
33651  
33652 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabss8.c b/gcc/testsuite/gcc.target/arm/neon/vabss8.c
33653 --- a/gcc/testsuite/gcc.target/arm/neon/vabss8.c        2007-07-25 14:28:31.000000000 +0200
33654 +++ b/gcc/testsuite/gcc.target/arm/neon/vabss8.c        2010-01-25 09:50:29.275686903 +0100
33655 @@ -3,7 +3,8 @@
33656  
33657  /* { dg-do assemble } */
33658  /* { dg-require-effective-target arm_neon_ok } */
33659 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33660 +/* { dg-options "-save-temps -O0" } */
33661 +/* { dg-add-options arm_neon } */
33662  
33663  #include "arm_neon.h"
33664  
33665 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddf32.c b/gcc/testsuite/gcc.target/arm/neon/vaddf32.c
33666 --- a/gcc/testsuite/gcc.target/arm/neon/vaddf32.c       2007-07-25 14:28:31.000000000 +0200
33667 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddf32.c       2010-01-25 09:50:29.275686903 +0100
33668 @@ -3,7 +3,8 @@
33669  
33670  /* { dg-do assemble } */
33671  /* { dg-require-effective-target arm_neon_ok } */
33672 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33673 +/* { dg-options "-save-temps -O0" } */
33674 +/* { dg-add-options arm_neon } */
33675  
33676  #include "arm_neon.h"
33677  
33678 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c b/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c
33679 --- a/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c     2007-07-25 14:28:31.000000000 +0200
33680 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c     2010-01-25 09:50:29.275686903 +0100
33681 @@ -3,7 +3,8 @@
33682  
33683  /* { dg-do assemble } */
33684  /* { dg-require-effective-target arm_neon_ok } */
33685 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33686 +/* { dg-options "-save-temps -O0" } */
33687 +/* { dg-add-options arm_neon } */
33688  
33689  #include "arm_neon.h"
33690  
33691 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c b/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c
33692 --- a/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c     2007-07-25 14:28:31.000000000 +0200
33693 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c     2010-01-25 09:50:29.275686903 +0100
33694 @@ -3,7 +3,8 @@
33695  
33696  /* { dg-do assemble } */
33697  /* { dg-require-effective-target arm_neon_ok } */
33698 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33699 +/* { dg-options "-save-temps -O0" } */
33700 +/* { dg-add-options arm_neon } */
33701  
33702  #include "arm_neon.h"
33703  
33704 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c b/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c
33705 --- a/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c     2007-07-25 14:28:31.000000000 +0200
33706 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c     2010-01-25 09:50:29.275686903 +0100
33707 @@ -3,7 +3,8 @@
33708  
33709  /* { dg-do assemble } */
33710  /* { dg-require-effective-target arm_neon_ok } */
33711 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33712 +/* { dg-options "-save-temps -O0" } */
33713 +/* { dg-add-options arm_neon } */
33714  
33715  #include "arm_neon.h"
33716  
33717 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c b/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c
33718 --- a/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c     2007-07-25 14:28:31.000000000 +0200
33719 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c     2010-01-25 09:50:29.275686903 +0100
33720 @@ -3,7 +3,8 @@
33721  
33722  /* { dg-do assemble } */
33723  /* { dg-require-effective-target arm_neon_ok } */
33724 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33725 +/* { dg-options "-save-temps -O0" } */
33726 +/* { dg-add-options arm_neon } */
33727  
33728  #include "arm_neon.h"
33729  
33730 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c b/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c
33731 --- a/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c     2007-07-25 14:28:31.000000000 +0200
33732 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c     2010-01-25 09:50:29.285687196 +0100
33733 @@ -3,7 +3,8 @@
33734  
33735  /* { dg-do assemble } */
33736  /* { dg-require-effective-target arm_neon_ok } */
33737 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33738 +/* { dg-options "-save-temps -O0" } */
33739 +/* { dg-add-options arm_neon } */
33740  
33741  #include "arm_neon.h"
33742  
33743 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c b/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c
33744 --- a/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c     2007-07-25 14:28:31.000000000 +0200
33745 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c     2010-01-25 09:50:29.285687196 +0100
33746 @@ -3,7 +3,8 @@
33747  
33748  /* { dg-do assemble } */
33749  /* { dg-require-effective-target arm_neon_ok } */
33750 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33751 +/* { dg-options "-save-temps -O0" } */
33752 +/* { dg-add-options arm_neon } */
33753  
33754  #include "arm_neon.h"
33755  
33756 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddls16.c b/gcc/testsuite/gcc.target/arm/neon/vaddls16.c
33757 --- a/gcc/testsuite/gcc.target/arm/neon/vaddls16.c      2007-07-25 14:28:31.000000000 +0200
33758 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddls16.c      2010-01-25 09:50:29.285687196 +0100
33759 @@ -3,7 +3,8 @@
33760  
33761  /* { dg-do assemble } */
33762  /* { dg-require-effective-target arm_neon_ok } */
33763 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33764 +/* { dg-options "-save-temps -O0" } */
33765 +/* { dg-add-options arm_neon } */
33766  
33767  #include "arm_neon.h"
33768  
33769 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddls32.c b/gcc/testsuite/gcc.target/arm/neon/vaddls32.c
33770 --- a/gcc/testsuite/gcc.target/arm/neon/vaddls32.c      2007-07-25 14:28:31.000000000 +0200
33771 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddls32.c      2010-01-25 09:50:29.285687196 +0100
33772 @@ -3,7 +3,8 @@
33773  
33774  /* { dg-do assemble } */
33775  /* { dg-require-effective-target arm_neon_ok } */
33776 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33777 +/* { dg-options "-save-temps -O0" } */
33778 +/* { dg-add-options arm_neon } */
33779  
33780  #include "arm_neon.h"
33781  
33782 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddls8.c b/gcc/testsuite/gcc.target/arm/neon/vaddls8.c
33783 --- a/gcc/testsuite/gcc.target/arm/neon/vaddls8.c       2007-07-25 14:28:31.000000000 +0200
33784 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddls8.c       2010-01-25 09:50:29.285687196 +0100
33785 @@ -3,7 +3,8 @@
33786  
33787  /* { dg-do assemble } */
33788  /* { dg-require-effective-target arm_neon_ok } */
33789 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33790 +/* { dg-options "-save-temps -O0" } */
33791 +/* { dg-add-options arm_neon } */
33792  
33793  #include "arm_neon.h"
33794  
33795 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c b/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c
33796 --- a/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c      2007-07-25 14:28:31.000000000 +0200
33797 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c      2010-01-25 09:50:29.285687196 +0100
33798 @@ -3,7 +3,8 @@
33799  
33800  /* { dg-do assemble } */
33801  /* { dg-require-effective-target arm_neon_ok } */
33802 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33803 +/* { dg-options "-save-temps -O0" } */
33804 +/* { dg-add-options arm_neon } */
33805  
33806  #include "arm_neon.h"
33807  
33808 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c b/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c
33809 --- a/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c      2007-07-25 14:28:31.000000000 +0200
33810 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c      2010-01-25 09:50:29.285687196 +0100
33811 @@ -3,7 +3,8 @@
33812  
33813  /* { dg-do assemble } */
33814  /* { dg-require-effective-target arm_neon_ok } */
33815 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33816 +/* { dg-options "-save-temps -O0" } */
33817 +/* { dg-add-options arm_neon } */
33818  
33819  #include "arm_neon.h"
33820  
33821 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c b/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c
33822 --- a/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c       2007-07-25 14:28:31.000000000 +0200
33823 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c       2010-01-25 09:50:29.285687196 +0100
33824 @@ -3,7 +3,8 @@
33825  
33826  /* { dg-do assemble } */
33827  /* { dg-require-effective-target arm_neon_ok } */
33828 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33829 +/* { dg-options "-save-temps -O0" } */
33830 +/* { dg-add-options arm_neon } */
33831  
33832  #include "arm_neon.h"
33833  
33834 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c b/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c
33835 --- a/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c      2007-07-25 14:28:31.000000000 +0200
33836 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c      2010-01-25 09:50:29.285687196 +0100
33837 @@ -3,7 +3,8 @@
33838  
33839  /* { dg-do assemble } */
33840  /* { dg-require-effective-target arm_neon_ok } */
33841 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33842 +/* { dg-options "-save-temps -O0" } */
33843 +/* { dg-add-options arm_neon } */
33844  
33845  #include "arm_neon.h"
33846  
33847 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c b/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c
33848 --- a/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c      2007-07-25 14:28:31.000000000 +0200
33849 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c      2010-01-25 09:50:29.285687196 +0100
33850 @@ -3,7 +3,8 @@
33851  
33852  /* { dg-do assemble } */
33853  /* { dg-require-effective-target arm_neon_ok } */
33854 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33855 +/* { dg-options "-save-temps -O0" } */
33856 +/* { dg-add-options arm_neon } */
33857  
33858  #include "arm_neon.h"
33859  
33860 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c b/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c
33861 --- a/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c      2007-07-25 14:28:31.000000000 +0200
33862 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c      2010-01-25 09:50:29.285687196 +0100
33863 @@ -3,7 +3,8 @@
33864  
33865  /* { dg-do assemble } */
33866  /* { dg-require-effective-target arm_neon_ok } */
33867 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33868 +/* { dg-options "-save-temps -O0" } */
33869 +/* { dg-add-options arm_neon } */
33870  
33871  #include "arm_neon.h"
33872  
33873 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c b/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c
33874 --- a/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c      2007-07-25 14:28:31.000000000 +0200
33875 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c      2010-01-25 09:50:29.285687196 +0100
33876 @@ -3,7 +3,8 @@
33877  
33878  /* { dg-do assemble } */
33879  /* { dg-require-effective-target arm_neon_ok } */
33880 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33881 +/* { dg-options "-save-temps -O0" } */
33882 +/* { dg-add-options arm_neon } */
33883  
33884  #include "arm_neon.h"
33885  
33886 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c b/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c
33887 --- a/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c       2007-07-25 14:28:31.000000000 +0200
33888 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c       2010-01-25 09:50:29.285687196 +0100
33889 @@ -3,7 +3,8 @@
33890  
33891  /* { dg-do assemble } */
33892  /* { dg-require-effective-target arm_neon_ok } */
33893 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33894 +/* { dg-options "-save-temps -O0" } */
33895 +/* { dg-add-options arm_neon } */
33896  
33897  #include "arm_neon.h"
33898  
33899 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c b/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c
33900 --- a/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c      2007-07-25 14:28:31.000000000 +0200
33901 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c      2010-01-25 09:50:29.285687196 +0100
33902 @@ -3,7 +3,8 @@
33903  
33904  /* { dg-do assemble } */
33905  /* { dg-require-effective-target arm_neon_ok } */
33906 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33907 +/* { dg-options "-save-temps -O0" } */
33908 +/* { dg-add-options arm_neon } */
33909  
33910  #include "arm_neon.h"
33911  
33912 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c b/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c
33913 --- a/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c      2007-07-25 14:28:31.000000000 +0200
33914 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c      2010-01-25 09:50:29.285687196 +0100
33915 @@ -3,7 +3,8 @@
33916  
33917  /* { dg-do assemble } */
33918  /* { dg-require-effective-target arm_neon_ok } */
33919 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33920 +/* { dg-options "-save-temps -O0" } */
33921 +/* { dg-add-options arm_neon } */
33922  
33923  #include "arm_neon.h"
33924  
33925 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c b/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c
33926 --- a/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c      2007-07-25 14:28:31.000000000 +0200
33927 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c      2010-01-25 09:50:29.285687196 +0100
33928 @@ -3,7 +3,8 @@
33929  
33930  /* { dg-do assemble } */
33931  /* { dg-require-effective-target arm_neon_ok } */
33932 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33933 +/* { dg-options "-save-temps -O0" } */
33934 +/* { dg-add-options arm_neon } */
33935  
33936  #include "arm_neon.h"
33937  
33938 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c b/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c
33939 --- a/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c       2007-07-25 14:28:31.000000000 +0200
33940 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c       2010-01-25 09:50:29.285687196 +0100
33941 @@ -3,7 +3,8 @@
33942  
33943  /* { dg-do assemble } */
33944  /* { dg-require-effective-target arm_neon_ok } */
33945 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33946 +/* { dg-options "-save-temps -O0" } */
33947 +/* { dg-add-options arm_neon } */
33948  
33949  #include "arm_neon.h"
33950  
33951 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vadds16.c b/gcc/testsuite/gcc.target/arm/neon/vadds16.c
33952 --- a/gcc/testsuite/gcc.target/arm/neon/vadds16.c       2007-07-25 14:28:31.000000000 +0200
33953 +++ b/gcc/testsuite/gcc.target/arm/neon/vadds16.c       2010-01-25 09:50:29.285687196 +0100
33954 @@ -3,7 +3,8 @@
33955  
33956  /* { dg-do assemble } */
33957  /* { dg-require-effective-target arm_neon_ok } */
33958 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33959 +/* { dg-options "-save-temps -O0" } */
33960 +/* { dg-add-options arm_neon } */
33961  
33962  #include "arm_neon.h"
33963  
33964 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vadds32.c b/gcc/testsuite/gcc.target/arm/neon/vadds32.c
33965 --- a/gcc/testsuite/gcc.target/arm/neon/vadds32.c       2007-07-25 14:28:31.000000000 +0200
33966 +++ b/gcc/testsuite/gcc.target/arm/neon/vadds32.c       2010-01-25 09:50:29.285687196 +0100
33967 @@ -3,7 +3,8 @@
33968  
33969  /* { dg-do assemble } */
33970  /* { dg-require-effective-target arm_neon_ok } */
33971 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33972 +/* { dg-options "-save-temps -O0" } */
33973 +/* { dg-add-options arm_neon } */
33974  
33975  #include "arm_neon.h"
33976  
33977 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vadds64.c b/gcc/testsuite/gcc.target/arm/neon/vadds64.c
33978 --- a/gcc/testsuite/gcc.target/arm/neon/vadds64.c       2007-07-25 14:28:31.000000000 +0200
33979 +++ b/gcc/testsuite/gcc.target/arm/neon/vadds64.c       2010-01-25 09:50:29.285687196 +0100
33980 @@ -3,7 +3,8 @@
33981  
33982  /* { dg-do assemble } */
33983  /* { dg-require-effective-target arm_neon_ok } */
33984 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33985 +/* { dg-options "-save-temps -O0" } */
33986 +/* { dg-add-options arm_neon } */
33987  
33988  #include "arm_neon.h"
33989  
33990 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vadds8.c b/gcc/testsuite/gcc.target/arm/neon/vadds8.c
33991 --- a/gcc/testsuite/gcc.target/arm/neon/vadds8.c        2007-07-25 14:28:31.000000000 +0200
33992 +++ b/gcc/testsuite/gcc.target/arm/neon/vadds8.c        2010-01-25 09:50:29.285687196 +0100
33993 @@ -3,7 +3,8 @@
33994  
33995  /* { dg-do assemble } */
33996  /* { dg-require-effective-target arm_neon_ok } */
33997 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
33998 +/* { dg-options "-save-temps -O0" } */
33999 +/* { dg-add-options arm_neon } */
34000  
34001  #include "arm_neon.h"
34002  
34003 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddu16.c b/gcc/testsuite/gcc.target/arm/neon/vaddu16.c
34004 --- a/gcc/testsuite/gcc.target/arm/neon/vaddu16.c       2007-07-25 14:28:31.000000000 +0200
34005 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddu16.c       2010-01-25 09:50:29.285687196 +0100
34006 @@ -3,7 +3,8 @@
34007  
34008  /* { dg-do assemble } */
34009  /* { dg-require-effective-target arm_neon_ok } */
34010 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34011 +/* { dg-options "-save-temps -O0" } */
34012 +/* { dg-add-options arm_neon } */
34013  
34014  #include "arm_neon.h"
34015  
34016 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddu32.c b/gcc/testsuite/gcc.target/arm/neon/vaddu32.c
34017 --- a/gcc/testsuite/gcc.target/arm/neon/vaddu32.c       2007-07-25 14:28:31.000000000 +0200
34018 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddu32.c       2010-01-25 09:50:29.285687196 +0100
34019 @@ -3,7 +3,8 @@
34020  
34021  /* { dg-do assemble } */
34022  /* { dg-require-effective-target arm_neon_ok } */
34023 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34024 +/* { dg-options "-save-temps -O0" } */
34025 +/* { dg-add-options arm_neon } */
34026  
34027  #include "arm_neon.h"
34028  
34029 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddu64.c b/gcc/testsuite/gcc.target/arm/neon/vaddu64.c
34030 --- a/gcc/testsuite/gcc.target/arm/neon/vaddu64.c       2007-07-25 14:28:31.000000000 +0200
34031 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddu64.c       2010-01-25 09:50:29.285687196 +0100
34032 @@ -3,7 +3,8 @@
34033  
34034  /* { dg-do assemble } */
34035  /* { dg-require-effective-target arm_neon_ok } */
34036 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34037 +/* { dg-options "-save-temps -O0" } */
34038 +/* { dg-add-options arm_neon } */
34039  
34040  #include "arm_neon.h"
34041  
34042 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddu8.c b/gcc/testsuite/gcc.target/arm/neon/vaddu8.c
34043 --- a/gcc/testsuite/gcc.target/arm/neon/vaddu8.c        2007-07-25 14:28:31.000000000 +0200
34044 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddu8.c        2010-01-25 09:50:29.285687196 +0100
34045 @@ -3,7 +3,8 @@
34046  
34047  /* { dg-do assemble } */
34048  /* { dg-require-effective-target arm_neon_ok } */
34049 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34050 +/* { dg-options "-save-temps -O0" } */
34051 +/* { dg-add-options arm_neon } */
34052  
34053  #include "arm_neon.h"
34054  
34055 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddws16.c b/gcc/testsuite/gcc.target/arm/neon/vaddws16.c
34056 --- a/gcc/testsuite/gcc.target/arm/neon/vaddws16.c      2007-07-25 14:28:31.000000000 +0200
34057 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddws16.c      2010-01-25 09:50:29.285687196 +0100
34058 @@ -3,7 +3,8 @@
34059  
34060  /* { dg-do assemble } */
34061  /* { dg-require-effective-target arm_neon_ok } */
34062 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34063 +/* { dg-options "-save-temps -O0" } */
34064 +/* { dg-add-options arm_neon } */
34065  
34066  #include "arm_neon.h"
34067  
34068 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddws32.c b/gcc/testsuite/gcc.target/arm/neon/vaddws32.c
34069 --- a/gcc/testsuite/gcc.target/arm/neon/vaddws32.c      2007-07-25 14:28:31.000000000 +0200
34070 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddws32.c      2010-01-25 09:50:29.285687196 +0100
34071 @@ -3,7 +3,8 @@
34072  
34073  /* { dg-do assemble } */
34074  /* { dg-require-effective-target arm_neon_ok } */
34075 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34076 +/* { dg-options "-save-temps -O0" } */
34077 +/* { dg-add-options arm_neon } */
34078  
34079  #include "arm_neon.h"
34080  
34081 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddws8.c b/gcc/testsuite/gcc.target/arm/neon/vaddws8.c
34082 --- a/gcc/testsuite/gcc.target/arm/neon/vaddws8.c       2007-07-25 14:28:31.000000000 +0200
34083 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddws8.c       2010-01-25 09:50:29.285687196 +0100
34084 @@ -3,7 +3,8 @@
34085  
34086  /* { dg-do assemble } */
34087  /* { dg-require-effective-target arm_neon_ok } */
34088 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34089 +/* { dg-options "-save-temps -O0" } */
34090 +/* { dg-add-options arm_neon } */
34091  
34092  #include "arm_neon.h"
34093  
34094 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c b/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c
34095 --- a/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c      2007-07-25 14:28:31.000000000 +0200
34096 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c      2010-01-25 09:50:29.285687196 +0100
34097 @@ -3,7 +3,8 @@
34098  
34099  /* { dg-do assemble } */
34100  /* { dg-require-effective-target arm_neon_ok } */
34101 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34102 +/* { dg-options "-save-temps -O0" } */
34103 +/* { dg-add-options arm_neon } */
34104  
34105  #include "arm_neon.h"
34106  
34107 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c b/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c
34108 --- a/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c      2007-07-25 14:28:31.000000000 +0200
34109 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c      2010-01-25 09:50:29.285687196 +0100
34110 @@ -3,7 +3,8 @@
34111  
34112  /* { dg-do assemble } */
34113  /* { dg-require-effective-target arm_neon_ok } */
34114 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34115 +/* { dg-options "-save-temps -O0" } */
34116 +/* { dg-add-options arm_neon } */
34117  
34118  #include "arm_neon.h"
34119  
34120 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c b/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c
34121 --- a/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c       2007-07-25 14:28:31.000000000 +0200
34122 +++ b/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c       2010-01-25 09:50:29.285687196 +0100
34123 @@ -3,7 +3,8 @@
34124  
34125  /* { dg-do assemble } */
34126  /* { dg-require-effective-target arm_neon_ok } */
34127 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34128 +/* { dg-options "-save-temps -O0" } */
34129 +/* { dg-add-options arm_neon } */
34130  
34131  #include "arm_neon.h"
34132  
34133 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQs16.c b/gcc/testsuite/gcc.target/arm/neon/vandQs16.c
34134 --- a/gcc/testsuite/gcc.target/arm/neon/vandQs16.c      2007-07-25 14:28:31.000000000 +0200
34135 +++ b/gcc/testsuite/gcc.target/arm/neon/vandQs16.c      2010-01-25 09:50:29.285687196 +0100
34136 @@ -3,7 +3,8 @@
34137  
34138  /* { dg-do assemble } */
34139  /* { dg-require-effective-target arm_neon_ok } */
34140 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34141 +/* { dg-options "-save-temps -O0" } */
34142 +/* { dg-add-options arm_neon } */
34143  
34144  #include "arm_neon.h"
34145  
34146 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQs32.c b/gcc/testsuite/gcc.target/arm/neon/vandQs32.c
34147 --- a/gcc/testsuite/gcc.target/arm/neon/vandQs32.c      2007-07-25 14:28:31.000000000 +0200
34148 +++ b/gcc/testsuite/gcc.target/arm/neon/vandQs32.c      2010-01-25 09:50:29.285687196 +0100
34149 @@ -3,7 +3,8 @@
34150  
34151  /* { dg-do assemble } */
34152  /* { dg-require-effective-target arm_neon_ok } */
34153 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34154 +/* { dg-options "-save-temps -O0" } */
34155 +/* { dg-add-options arm_neon } */
34156  
34157  #include "arm_neon.h"
34158  
34159 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQs64.c b/gcc/testsuite/gcc.target/arm/neon/vandQs64.c
34160 --- a/gcc/testsuite/gcc.target/arm/neon/vandQs64.c      2007-07-25 14:28:31.000000000 +0200
34161 +++ b/gcc/testsuite/gcc.target/arm/neon/vandQs64.c      2010-01-25 09:50:29.285687196 +0100
34162 @@ -3,7 +3,8 @@
34163  
34164  /* { dg-do assemble } */
34165  /* { dg-require-effective-target arm_neon_ok } */
34166 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34167 +/* { dg-options "-save-temps -O0" } */
34168 +/* { dg-add-options arm_neon } */
34169  
34170  #include "arm_neon.h"
34171  
34172 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQs8.c b/gcc/testsuite/gcc.target/arm/neon/vandQs8.c
34173 --- a/gcc/testsuite/gcc.target/arm/neon/vandQs8.c       2007-07-25 14:28:31.000000000 +0200
34174 +++ b/gcc/testsuite/gcc.target/arm/neon/vandQs8.c       2010-01-25 09:50:29.285687196 +0100
34175 @@ -3,7 +3,8 @@
34176  
34177  /* { dg-do assemble } */
34178  /* { dg-require-effective-target arm_neon_ok } */
34179 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34180 +/* { dg-options "-save-temps -O0" } */
34181 +/* { dg-add-options arm_neon } */
34182  
34183  #include "arm_neon.h"
34184  
34185 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQu16.c b/gcc/testsuite/gcc.target/arm/neon/vandQu16.c
34186 --- a/gcc/testsuite/gcc.target/arm/neon/vandQu16.c      2007-07-25 14:28:31.000000000 +0200
34187 +++ b/gcc/testsuite/gcc.target/arm/neon/vandQu16.c      2010-01-25 09:50:29.285687196 +0100
34188 @@ -3,7 +3,8 @@
34189  
34190  /* { dg-do assemble } */
34191  /* { dg-require-effective-target arm_neon_ok } */
34192 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34193 +/* { dg-options "-save-temps -O0" } */
34194 +/* { dg-add-options arm_neon } */
34195  
34196  #include "arm_neon.h"
34197  
34198 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQu32.c b/gcc/testsuite/gcc.target/arm/neon/vandQu32.c
34199 --- a/gcc/testsuite/gcc.target/arm/neon/vandQu32.c      2007-07-25 14:28:31.000000000 +0200
34200 +++ b/gcc/testsuite/gcc.target/arm/neon/vandQu32.c      2010-01-25 09:50:29.285687196 +0100
34201 @@ -3,7 +3,8 @@
34202  
34203  /* { dg-do assemble } */
34204  /* { dg-require-effective-target arm_neon_ok } */
34205 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34206 +/* { dg-options "-save-temps -O0" } */
34207 +/* { dg-add-options arm_neon } */
34208  
34209  #include "arm_neon.h"
34210  
34211 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQu64.c b/gcc/testsuite/gcc.target/arm/neon/vandQu64.c
34212 --- a/gcc/testsuite/gcc.target/arm/neon/vandQu64.c      2007-07-25 14:28:31.000000000 +0200
34213 +++ b/gcc/testsuite/gcc.target/arm/neon/vandQu64.c      2010-01-25 09:50:29.285687196 +0100
34214 @@ -3,7 +3,8 @@
34215  
34216  /* { dg-do assemble } */
34217  /* { dg-require-effective-target arm_neon_ok } */
34218 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34219 +/* { dg-options "-save-temps -O0" } */
34220 +/* { dg-add-options arm_neon } */
34221  
34222  #include "arm_neon.h"
34223  
34224 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQu8.c b/gcc/testsuite/gcc.target/arm/neon/vandQu8.c
34225 --- a/gcc/testsuite/gcc.target/arm/neon/vandQu8.c       2007-07-25 14:28:31.000000000 +0200
34226 +++ b/gcc/testsuite/gcc.target/arm/neon/vandQu8.c       2010-01-25 09:50:29.285687196 +0100
34227 @@ -3,7 +3,8 @@
34228  
34229  /* { dg-do assemble } */
34230  /* { dg-require-effective-target arm_neon_ok } */
34231 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34232 +/* { dg-options "-save-temps -O0" } */
34233 +/* { dg-add-options arm_neon } */
34234  
34235  #include "arm_neon.h"
34236  
34237 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vands16.c b/gcc/testsuite/gcc.target/arm/neon/vands16.c
34238 --- a/gcc/testsuite/gcc.target/arm/neon/vands16.c       2007-07-25 14:28:31.000000000 +0200
34239 +++ b/gcc/testsuite/gcc.target/arm/neon/vands16.c       2010-01-25 09:50:29.285687196 +0100
34240 @@ -3,7 +3,8 @@
34241  
34242  /* { dg-do assemble } */
34243  /* { dg-require-effective-target arm_neon_ok } */
34244 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34245 +/* { dg-options "-save-temps -O0" } */
34246 +/* { dg-add-options arm_neon } */
34247  
34248  #include "arm_neon.h"
34249  
34250 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vands32.c b/gcc/testsuite/gcc.target/arm/neon/vands32.c
34251 --- a/gcc/testsuite/gcc.target/arm/neon/vands32.c       2007-07-25 14:28:31.000000000 +0200
34252 +++ b/gcc/testsuite/gcc.target/arm/neon/vands32.c       2010-01-25 09:50:29.285687196 +0100
34253 @@ -3,7 +3,8 @@
34254  
34255  /* { dg-do assemble } */
34256  /* { dg-require-effective-target arm_neon_ok } */
34257 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34258 +/* { dg-options "-save-temps -O0" } */
34259 +/* { dg-add-options arm_neon } */
34260  
34261  #include "arm_neon.h"
34262  
34263 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vands64.c b/gcc/testsuite/gcc.target/arm/neon/vands64.c
34264 --- a/gcc/testsuite/gcc.target/arm/neon/vands64.c       2007-07-25 14:28:31.000000000 +0200
34265 +++ b/gcc/testsuite/gcc.target/arm/neon/vands64.c       2010-01-25 09:50:29.285687196 +0100
34266 @@ -3,7 +3,8 @@
34267  
34268  /* { dg-do assemble } */
34269  /* { dg-require-effective-target arm_neon_ok } */
34270 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34271 +/* { dg-options "-save-temps -O0" } */
34272 +/* { dg-add-options arm_neon } */
34273  
34274  #include "arm_neon.h"
34275  
34276 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vands8.c b/gcc/testsuite/gcc.target/arm/neon/vands8.c
34277 --- a/gcc/testsuite/gcc.target/arm/neon/vands8.c        2007-07-25 14:28:31.000000000 +0200
34278 +++ b/gcc/testsuite/gcc.target/arm/neon/vands8.c        2010-01-25 09:50:29.285687196 +0100
34279 @@ -3,7 +3,8 @@
34280  
34281  /* { dg-do assemble } */
34282  /* { dg-require-effective-target arm_neon_ok } */
34283 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34284 +/* { dg-options "-save-temps -O0" } */
34285 +/* { dg-add-options arm_neon } */
34286  
34287  #include "arm_neon.h"
34288  
34289 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandu16.c b/gcc/testsuite/gcc.target/arm/neon/vandu16.c
34290 --- a/gcc/testsuite/gcc.target/arm/neon/vandu16.c       2007-07-25 14:28:31.000000000 +0200
34291 +++ b/gcc/testsuite/gcc.target/arm/neon/vandu16.c       2010-01-25 09:50:29.285687196 +0100
34292 @@ -3,7 +3,8 @@
34293  
34294  /* { dg-do assemble } */
34295  /* { dg-require-effective-target arm_neon_ok } */
34296 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34297 +/* { dg-options "-save-temps -O0" } */
34298 +/* { dg-add-options arm_neon } */
34299  
34300  #include "arm_neon.h"
34301  
34302 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandu32.c b/gcc/testsuite/gcc.target/arm/neon/vandu32.c
34303 --- a/gcc/testsuite/gcc.target/arm/neon/vandu32.c       2007-07-25 14:28:31.000000000 +0200
34304 +++ b/gcc/testsuite/gcc.target/arm/neon/vandu32.c       2010-01-25 09:50:29.285687196 +0100
34305 @@ -3,7 +3,8 @@
34306  
34307  /* { dg-do assemble } */
34308  /* { dg-require-effective-target arm_neon_ok } */
34309 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34310 +/* { dg-options "-save-temps -O0" } */
34311 +/* { dg-add-options arm_neon } */
34312  
34313  #include "arm_neon.h"
34314  
34315 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandu64.c b/gcc/testsuite/gcc.target/arm/neon/vandu64.c
34316 --- a/gcc/testsuite/gcc.target/arm/neon/vandu64.c       2007-07-25 14:28:31.000000000 +0200
34317 +++ b/gcc/testsuite/gcc.target/arm/neon/vandu64.c       2010-01-25 09:50:29.285687196 +0100
34318 @@ -3,7 +3,8 @@
34319  
34320  /* { dg-do assemble } */
34321  /* { dg-require-effective-target arm_neon_ok } */
34322 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34323 +/* { dg-options "-save-temps -O0" } */
34324 +/* { dg-add-options arm_neon } */
34325  
34326  #include "arm_neon.h"
34327  
34328 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandu8.c b/gcc/testsuite/gcc.target/arm/neon/vandu8.c
34329 --- a/gcc/testsuite/gcc.target/arm/neon/vandu8.c        2007-07-25 14:28:31.000000000 +0200
34330 +++ b/gcc/testsuite/gcc.target/arm/neon/vandu8.c        2010-01-25 09:50:29.285687196 +0100
34331 @@ -3,7 +3,8 @@
34332  
34333  /* { dg-do assemble } */
34334  /* { dg-require-effective-target arm_neon_ok } */
34335 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34336 +/* { dg-options "-save-temps -O0" } */
34337 +/* { dg-add-options arm_neon } */
34338  
34339  #include "arm_neon.h"
34340  
34341 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c b/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c
34342 --- a/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c      2007-07-25 14:28:31.000000000 +0200
34343 +++ b/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c      2010-01-25 09:50:29.285687196 +0100
34344 @@ -3,7 +3,8 @@
34345  
34346  /* { dg-do assemble } */
34347  /* { dg-require-effective-target arm_neon_ok } */
34348 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34349 +/* { dg-options "-save-temps -O0" } */
34350 +/* { dg-add-options arm_neon } */
34351  
34352  #include "arm_neon.h"
34353  
34354 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c b/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c
34355 --- a/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c      2007-07-25 14:28:31.000000000 +0200
34356 +++ b/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c      2010-01-25 09:50:29.285687196 +0100
34357 @@ -3,7 +3,8 @@
34358  
34359  /* { dg-do assemble } */
34360  /* { dg-require-effective-target arm_neon_ok } */
34361 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34362 +/* { dg-options "-save-temps -O0" } */
34363 +/* { dg-add-options arm_neon } */
34364  
34365  #include "arm_neon.h"
34366  
34367 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c b/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c
34368 --- a/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c      2007-07-25 14:28:31.000000000 +0200
34369 +++ b/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c      2010-01-25 09:50:29.285687196 +0100
34370 @@ -3,7 +3,8 @@
34371  
34372  /* { dg-do assemble } */
34373  /* { dg-require-effective-target arm_neon_ok } */
34374 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34375 +/* { dg-options "-save-temps -O0" } */
34376 +/* { dg-add-options arm_neon } */
34377  
34378  #include "arm_neon.h"
34379  
34380 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c b/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c
34381 --- a/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c       2007-07-25 14:28:31.000000000 +0200
34382 +++ b/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c       2010-01-25 09:50:29.285687196 +0100
34383 @@ -3,7 +3,8 @@
34384  
34385  /* { dg-do assemble } */
34386  /* { dg-require-effective-target arm_neon_ok } */
34387 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34388 +/* { dg-options "-save-temps -O0" } */
34389 +/* { dg-add-options arm_neon } */
34390  
34391  #include "arm_neon.h"
34392  
34393 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c b/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c
34394 --- a/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c      2007-07-25 14:28:31.000000000 +0200
34395 +++ b/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c      2010-01-25 09:50:29.285687196 +0100
34396 @@ -3,7 +3,8 @@
34397  
34398  /* { dg-do assemble } */
34399  /* { dg-require-effective-target arm_neon_ok } */
34400 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34401 +/* { dg-options "-save-temps -O0" } */
34402 +/* { dg-add-options arm_neon } */
34403  
34404  #include "arm_neon.h"
34405  
34406 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c b/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c
34407 --- a/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c      2007-07-25 14:28:31.000000000 +0200
34408 +++ b/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c      2010-01-25 09:50:29.285687196 +0100
34409 @@ -3,7 +3,8 @@
34410  
34411  /* { dg-do assemble } */
34412  /* { dg-require-effective-target arm_neon_ok } */
34413 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34414 +/* { dg-options "-save-temps -O0" } */
34415 +/* { dg-add-options arm_neon } */
34416  
34417  #include "arm_neon.h"
34418  
34419 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c b/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c
34420 --- a/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c      2007-07-25 14:28:31.000000000 +0200
34421 +++ b/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c      2010-01-25 09:50:29.285687196 +0100
34422 @@ -3,7 +3,8 @@
34423  
34424  /* { dg-do assemble } */
34425  /* { dg-require-effective-target arm_neon_ok } */
34426 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34427 +/* { dg-options "-save-temps -O0" } */
34428 +/* { dg-add-options arm_neon } */
34429  
34430  #include "arm_neon.h"
34431  
34432 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c b/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c
34433 --- a/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c       2007-07-25 14:28:31.000000000 +0200
34434 +++ b/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c       2010-01-25 09:50:29.285687196 +0100
34435 @@ -3,7 +3,8 @@
34436  
34437  /* { dg-do assemble } */
34438  /* { dg-require-effective-target arm_neon_ok } */
34439 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34440 +/* { dg-options "-save-temps -O0" } */
34441 +/* { dg-add-options arm_neon } */
34442  
34443  #include "arm_neon.h"
34444  
34445 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbics16.c b/gcc/testsuite/gcc.target/arm/neon/vbics16.c
34446 --- a/gcc/testsuite/gcc.target/arm/neon/vbics16.c       2007-07-25 14:28:31.000000000 +0200
34447 +++ b/gcc/testsuite/gcc.target/arm/neon/vbics16.c       2010-01-25 09:50:29.285687196 +0100
34448 @@ -3,7 +3,8 @@
34449  
34450  /* { dg-do assemble } */
34451  /* { dg-require-effective-target arm_neon_ok } */
34452 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34453 +/* { dg-options "-save-temps -O0" } */
34454 +/* { dg-add-options arm_neon } */
34455  
34456  #include "arm_neon.h"
34457  
34458 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbics32.c b/gcc/testsuite/gcc.target/arm/neon/vbics32.c
34459 --- a/gcc/testsuite/gcc.target/arm/neon/vbics32.c       2007-07-25 14:28:31.000000000 +0200
34460 +++ b/gcc/testsuite/gcc.target/arm/neon/vbics32.c       2010-01-25 09:50:29.285687196 +0100
34461 @@ -3,7 +3,8 @@
34462  
34463  /* { dg-do assemble } */
34464  /* { dg-require-effective-target arm_neon_ok } */
34465 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34466 +/* { dg-options "-save-temps -O0" } */
34467 +/* { dg-add-options arm_neon } */
34468  
34469  #include "arm_neon.h"
34470  
34471 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbics64.c b/gcc/testsuite/gcc.target/arm/neon/vbics64.c
34472 --- a/gcc/testsuite/gcc.target/arm/neon/vbics64.c       2007-07-25 14:28:31.000000000 +0200
34473 +++ b/gcc/testsuite/gcc.target/arm/neon/vbics64.c       2010-01-25 09:50:29.285687196 +0100
34474 @@ -3,7 +3,8 @@
34475  
34476  /* { dg-do assemble } */
34477  /* { dg-require-effective-target arm_neon_ok } */
34478 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34479 +/* { dg-options "-save-temps -O0" } */
34480 +/* { dg-add-options arm_neon } */
34481  
34482  #include "arm_neon.h"
34483  
34484 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbics8.c b/gcc/testsuite/gcc.target/arm/neon/vbics8.c
34485 --- a/gcc/testsuite/gcc.target/arm/neon/vbics8.c        2007-07-25 14:28:31.000000000 +0200
34486 +++ b/gcc/testsuite/gcc.target/arm/neon/vbics8.c        2010-01-25 09:50:29.285687196 +0100
34487 @@ -3,7 +3,8 @@
34488  
34489  /* { dg-do assemble } */
34490  /* { dg-require-effective-target arm_neon_ok } */
34491 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34492 +/* { dg-options "-save-temps -O0" } */
34493 +/* { dg-add-options arm_neon } */
34494  
34495  #include "arm_neon.h"
34496  
34497 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicu16.c b/gcc/testsuite/gcc.target/arm/neon/vbicu16.c
34498 --- a/gcc/testsuite/gcc.target/arm/neon/vbicu16.c       2007-07-25 14:28:31.000000000 +0200
34499 +++ b/gcc/testsuite/gcc.target/arm/neon/vbicu16.c       2010-01-25 09:50:29.285687196 +0100
34500 @@ -3,7 +3,8 @@
34501  
34502  /* { dg-do assemble } */
34503  /* { dg-require-effective-target arm_neon_ok } */
34504 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34505 +/* { dg-options "-save-temps -O0" } */
34506 +/* { dg-add-options arm_neon } */
34507  
34508  #include "arm_neon.h"
34509  
34510 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicu32.c b/gcc/testsuite/gcc.target/arm/neon/vbicu32.c
34511 --- a/gcc/testsuite/gcc.target/arm/neon/vbicu32.c       2007-07-25 14:28:31.000000000 +0200
34512 +++ b/gcc/testsuite/gcc.target/arm/neon/vbicu32.c       2010-01-25 09:50:29.285687196 +0100
34513 @@ -3,7 +3,8 @@
34514  
34515  /* { dg-do assemble } */
34516  /* { dg-require-effective-target arm_neon_ok } */
34517 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34518 +/* { dg-options "-save-temps -O0" } */
34519 +/* { dg-add-options arm_neon } */
34520  
34521  #include "arm_neon.h"
34522  
34523 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicu64.c b/gcc/testsuite/gcc.target/arm/neon/vbicu64.c
34524 --- a/gcc/testsuite/gcc.target/arm/neon/vbicu64.c       2007-07-25 14:28:31.000000000 +0200
34525 +++ b/gcc/testsuite/gcc.target/arm/neon/vbicu64.c       2010-01-25 09:50:29.285687196 +0100
34526 @@ -3,7 +3,8 @@
34527  
34528  /* { dg-do assemble } */
34529  /* { dg-require-effective-target arm_neon_ok } */
34530 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34531 +/* { dg-options "-save-temps -O0" } */
34532 +/* { dg-add-options arm_neon } */
34533  
34534  #include "arm_neon.h"
34535  
34536 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicu8.c b/gcc/testsuite/gcc.target/arm/neon/vbicu8.c
34537 --- a/gcc/testsuite/gcc.target/arm/neon/vbicu8.c        2007-07-25 14:28:31.000000000 +0200
34538 +++ b/gcc/testsuite/gcc.target/arm/neon/vbicu8.c        2010-01-25 09:50:29.285687196 +0100
34539 @@ -3,7 +3,8 @@
34540  
34541  /* { dg-do assemble } */
34542  /* { dg-require-effective-target arm_neon_ok } */
34543 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34544 +/* { dg-options "-save-temps -O0" } */
34545 +/* { dg-add-options arm_neon } */
34546  
34547  #include "arm_neon.h"
34548  
34549 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslf32.c b/gcc/testsuite/gcc.target/arm/neon/vbslf32.c
34550 --- a/gcc/testsuite/gcc.target/arm/neon/vbslf32.c       2007-07-25 14:28:31.000000000 +0200
34551 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslf32.c       2010-01-25 09:50:29.285687196 +0100
34552 @@ -3,7 +3,8 @@
34553  
34554  /* { dg-do assemble } */
34555  /* { dg-require-effective-target arm_neon_ok } */
34556 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34557 +/* { dg-options "-save-temps -O0" } */
34558 +/* { dg-add-options arm_neon } */
34559  
34560  #include "arm_neon.h"
34561  
34562 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslp16.c b/gcc/testsuite/gcc.target/arm/neon/vbslp16.c
34563 --- a/gcc/testsuite/gcc.target/arm/neon/vbslp16.c       2007-07-25 14:28:31.000000000 +0200
34564 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslp16.c       2010-01-25 09:50:29.285687196 +0100
34565 @@ -3,7 +3,8 @@
34566  
34567  /* { dg-do assemble } */
34568  /* { dg-require-effective-target arm_neon_ok } */
34569 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34570 +/* { dg-options "-save-temps -O0" } */
34571 +/* { dg-add-options arm_neon } */
34572  
34573  #include "arm_neon.h"
34574  
34575 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslp8.c b/gcc/testsuite/gcc.target/arm/neon/vbslp8.c
34576 --- a/gcc/testsuite/gcc.target/arm/neon/vbslp8.c        2007-07-25 14:28:31.000000000 +0200
34577 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslp8.c        2010-01-25 09:50:29.285687196 +0100
34578 @@ -3,7 +3,8 @@
34579  
34580  /* { dg-do assemble } */
34581  /* { dg-require-effective-target arm_neon_ok } */
34582 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34583 +/* { dg-options "-save-temps -O0" } */
34584 +/* { dg-add-options arm_neon } */
34585  
34586  #include "arm_neon.h"
34587  
34588 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c b/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c
34589 --- a/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c      2007-07-25 14:28:31.000000000 +0200
34590 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c      2010-01-25 09:50:29.295686791 +0100
34591 @@ -3,7 +3,8 @@
34592  
34593  /* { dg-do assemble } */
34594  /* { dg-require-effective-target arm_neon_ok } */
34595 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34596 +/* { dg-options "-save-temps -O0" } */
34597 +/* { dg-add-options arm_neon } */
34598  
34599  #include "arm_neon.h"
34600  
34601 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c b/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c
34602 --- a/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c      2007-07-25 14:28:31.000000000 +0200
34603 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c      2010-01-25 09:50:29.295686791 +0100
34604 @@ -3,7 +3,8 @@
34605  
34606  /* { dg-do assemble } */
34607  /* { dg-require-effective-target arm_neon_ok } */
34608 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34609 +/* { dg-options "-save-temps -O0" } */
34610 +/* { dg-add-options arm_neon } */
34611  
34612  #include "arm_neon.h"
34613  
34614 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c b/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c
34615 --- a/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c       2007-07-25 14:28:31.000000000 +0200
34616 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c       2010-01-25 09:50:29.295686791 +0100
34617 @@ -3,7 +3,8 @@
34618  
34619  /* { dg-do assemble } */
34620  /* { dg-require-effective-target arm_neon_ok } */
34621 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34622 +/* { dg-options "-save-temps -O0" } */
34623 +/* { dg-add-options arm_neon } */
34624  
34625  #include "arm_neon.h"
34626  
34627 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c b/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c
34628 --- a/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c      2007-07-25 14:28:31.000000000 +0200
34629 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c      2010-01-25 09:50:29.295686791 +0100
34630 @@ -3,7 +3,8 @@
34631  
34632  /* { dg-do assemble } */
34633  /* { dg-require-effective-target arm_neon_ok } */
34634 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34635 +/* { dg-options "-save-temps -O0" } */
34636 +/* { dg-add-options arm_neon } */
34637  
34638  #include "arm_neon.h"
34639  
34640 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c b/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c
34641 --- a/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c      2007-07-25 14:28:31.000000000 +0200
34642 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c      2010-01-25 09:50:29.295686791 +0100
34643 @@ -3,7 +3,8 @@
34644  
34645  /* { dg-do assemble } */
34646  /* { dg-require-effective-target arm_neon_ok } */
34647 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34648 +/* { dg-options "-save-temps -O0" } */
34649 +/* { dg-add-options arm_neon } */
34650  
34651  #include "arm_neon.h"
34652  
34653 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c b/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c
34654 --- a/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c      2007-07-25 14:28:31.000000000 +0200
34655 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c      2010-01-25 09:50:29.295686791 +0100
34656 @@ -3,7 +3,8 @@
34657  
34658  /* { dg-do assemble } */
34659  /* { dg-require-effective-target arm_neon_ok } */
34660 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34661 +/* { dg-options "-save-temps -O0" } */
34662 +/* { dg-add-options arm_neon } */
34663  
34664  #include "arm_neon.h"
34665  
34666 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c b/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c
34667 --- a/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c       2007-07-25 14:28:31.000000000 +0200
34668 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c       2010-01-25 09:50:29.295686791 +0100
34669 @@ -3,7 +3,8 @@
34670  
34671  /* { dg-do assemble } */
34672  /* { dg-require-effective-target arm_neon_ok } */
34673 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34674 +/* { dg-options "-save-temps -O0" } */
34675 +/* { dg-add-options arm_neon } */
34676  
34677  #include "arm_neon.h"
34678  
34679 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c b/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c
34680 --- a/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c      2007-07-25 14:28:31.000000000 +0200
34681 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c      2010-01-25 09:50:29.295686791 +0100
34682 @@ -3,7 +3,8 @@
34683  
34684  /* { dg-do assemble } */
34685  /* { dg-require-effective-target arm_neon_ok } */
34686 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34687 +/* { dg-options "-save-temps -O0" } */
34688 +/* { dg-add-options arm_neon } */
34689  
34690  #include "arm_neon.h"
34691  
34692 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c b/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c
34693 --- a/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c      2007-07-25 14:28:31.000000000 +0200
34694 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c      2010-01-25 09:50:29.295686791 +0100
34695 @@ -3,7 +3,8 @@
34696  
34697  /* { dg-do assemble } */
34698  /* { dg-require-effective-target arm_neon_ok } */
34699 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34700 +/* { dg-options "-save-temps -O0" } */
34701 +/* { dg-add-options arm_neon } */
34702  
34703  #include "arm_neon.h"
34704  
34705 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c b/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c
34706 --- a/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c      2007-07-25 14:28:31.000000000 +0200
34707 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c      2010-01-25 09:50:29.295686791 +0100
34708 @@ -3,7 +3,8 @@
34709  
34710  /* { dg-do assemble } */
34711  /* { dg-require-effective-target arm_neon_ok } */
34712 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34713 +/* { dg-options "-save-temps -O0" } */
34714 +/* { dg-add-options arm_neon } */
34715  
34716  #include "arm_neon.h"
34717  
34718 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c b/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c
34719 --- a/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c       2007-07-25 14:28:31.000000000 +0200
34720 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c       2010-01-25 09:50:29.295686791 +0100
34721 @@ -3,7 +3,8 @@
34722  
34723  /* { dg-do assemble } */
34724  /* { dg-require-effective-target arm_neon_ok } */
34725 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34726 +/* { dg-options "-save-temps -O0" } */
34727 +/* { dg-add-options arm_neon } */
34728  
34729  #include "arm_neon.h"
34730  
34731 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbsls16.c b/gcc/testsuite/gcc.target/arm/neon/vbsls16.c
34732 --- a/gcc/testsuite/gcc.target/arm/neon/vbsls16.c       2007-07-25 14:28:31.000000000 +0200
34733 +++ b/gcc/testsuite/gcc.target/arm/neon/vbsls16.c       2010-01-25 09:50:29.295686791 +0100
34734 @@ -3,7 +3,8 @@
34735  
34736  /* { dg-do assemble } */
34737  /* { dg-require-effective-target arm_neon_ok } */
34738 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34739 +/* { dg-options "-save-temps -O0" } */
34740 +/* { dg-add-options arm_neon } */
34741  
34742  #include "arm_neon.h"
34743  
34744 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbsls32.c b/gcc/testsuite/gcc.target/arm/neon/vbsls32.c
34745 --- a/gcc/testsuite/gcc.target/arm/neon/vbsls32.c       2007-07-25 14:28:31.000000000 +0200
34746 +++ b/gcc/testsuite/gcc.target/arm/neon/vbsls32.c       2010-01-25 09:50:29.295686791 +0100
34747 @@ -3,7 +3,8 @@
34748  
34749  /* { dg-do assemble } */
34750  /* { dg-require-effective-target arm_neon_ok } */
34751 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34752 +/* { dg-options "-save-temps -O0" } */
34753 +/* { dg-add-options arm_neon } */
34754  
34755  #include "arm_neon.h"
34756  
34757 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbsls64.c b/gcc/testsuite/gcc.target/arm/neon/vbsls64.c
34758 --- a/gcc/testsuite/gcc.target/arm/neon/vbsls64.c       2007-07-25 14:28:31.000000000 +0200
34759 +++ b/gcc/testsuite/gcc.target/arm/neon/vbsls64.c       2010-01-25 09:50:29.295686791 +0100
34760 @@ -3,7 +3,8 @@
34761  
34762  /* { dg-do assemble } */
34763  /* { dg-require-effective-target arm_neon_ok } */
34764 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34765 +/* { dg-options "-save-temps -O0" } */
34766 +/* { dg-add-options arm_neon } */
34767  
34768  #include "arm_neon.h"
34769  
34770 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbsls8.c b/gcc/testsuite/gcc.target/arm/neon/vbsls8.c
34771 --- a/gcc/testsuite/gcc.target/arm/neon/vbsls8.c        2007-07-25 14:28:31.000000000 +0200
34772 +++ b/gcc/testsuite/gcc.target/arm/neon/vbsls8.c        2010-01-25 09:50:29.295686791 +0100
34773 @@ -3,7 +3,8 @@
34774  
34775  /* { dg-do assemble } */
34776  /* { dg-require-effective-target arm_neon_ok } */
34777 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34778 +/* { dg-options "-save-temps -O0" } */
34779 +/* { dg-add-options arm_neon } */
34780  
34781  #include "arm_neon.h"
34782  
34783 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslu16.c b/gcc/testsuite/gcc.target/arm/neon/vbslu16.c
34784 --- a/gcc/testsuite/gcc.target/arm/neon/vbslu16.c       2007-07-25 14:28:31.000000000 +0200
34785 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslu16.c       2010-01-25 09:50:29.295686791 +0100
34786 @@ -3,7 +3,8 @@
34787  
34788  /* { dg-do assemble } */
34789  /* { dg-require-effective-target arm_neon_ok } */
34790 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34791 +/* { dg-options "-save-temps -O0" } */
34792 +/* { dg-add-options arm_neon } */
34793  
34794  #include "arm_neon.h"
34795  
34796 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslu32.c b/gcc/testsuite/gcc.target/arm/neon/vbslu32.c
34797 --- a/gcc/testsuite/gcc.target/arm/neon/vbslu32.c       2007-07-25 14:28:31.000000000 +0200
34798 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslu32.c       2010-01-25 09:50:29.295686791 +0100
34799 @@ -3,7 +3,8 @@
34800  
34801  /* { dg-do assemble } */
34802  /* { dg-require-effective-target arm_neon_ok } */
34803 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34804 +/* { dg-options "-save-temps -O0" } */
34805 +/* { dg-add-options arm_neon } */
34806  
34807  #include "arm_neon.h"
34808  
34809 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslu64.c b/gcc/testsuite/gcc.target/arm/neon/vbslu64.c
34810 --- a/gcc/testsuite/gcc.target/arm/neon/vbslu64.c       2007-07-25 14:28:31.000000000 +0200
34811 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslu64.c       2010-01-25 09:50:29.295686791 +0100
34812 @@ -3,7 +3,8 @@
34813  
34814  /* { dg-do assemble } */
34815  /* { dg-require-effective-target arm_neon_ok } */
34816 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34817 +/* { dg-options "-save-temps -O0" } */
34818 +/* { dg-add-options arm_neon } */
34819  
34820  #include "arm_neon.h"
34821  
34822 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslu8.c b/gcc/testsuite/gcc.target/arm/neon/vbslu8.c
34823 --- a/gcc/testsuite/gcc.target/arm/neon/vbslu8.c        2007-07-25 14:28:31.000000000 +0200
34824 +++ b/gcc/testsuite/gcc.target/arm/neon/vbslu8.c        2010-01-25 09:50:29.295686791 +0100
34825 @@ -3,7 +3,8 @@
34826  
34827  /* { dg-do assemble } */
34828  /* { dg-require-effective-target arm_neon_ok } */
34829 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34830 +/* { dg-options "-save-temps -O0" } */
34831 +/* { dg-add-options arm_neon } */
34832  
34833  #include "arm_neon.h"
34834  
34835 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcagef32.c b/gcc/testsuite/gcc.target/arm/neon/vcagef32.c
34836 --- a/gcc/testsuite/gcc.target/arm/neon/vcagef32.c      2007-07-25 14:28:31.000000000 +0200
34837 +++ b/gcc/testsuite/gcc.target/arm/neon/vcagef32.c      2010-01-25 09:50:29.295686791 +0100
34838 @@ -3,7 +3,8 @@
34839  
34840  /* { dg-do assemble } */
34841  /* { dg-require-effective-target arm_neon_ok } */
34842 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34843 +/* { dg-options "-save-temps -O0" } */
34844 +/* { dg-add-options arm_neon } */
34845  
34846  #include "arm_neon.h"
34847  
34848 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c
34849 --- a/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c     2007-07-25 14:28:31.000000000 +0200
34850 +++ b/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c     2010-01-25 09:50:29.295686791 +0100
34851 @@ -3,7 +3,8 @@
34852  
34853  /* { dg-do assemble } */
34854  /* { dg-require-effective-target arm_neon_ok } */
34855 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34856 +/* { dg-options "-save-temps -O0" } */
34857 +/* { dg-add-options arm_neon } */
34858  
34859  #include "arm_neon.h"
34860  
34861 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c b/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c
34862 --- a/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c      2007-07-25 14:28:31.000000000 +0200
34863 +++ b/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c      2010-01-25 09:50:29.295686791 +0100
34864 @@ -3,7 +3,8 @@
34865  
34866  /* { dg-do assemble } */
34867  /* { dg-require-effective-target arm_neon_ok } */
34868 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34869 +/* { dg-options "-save-temps -O0" } */
34870 +/* { dg-add-options arm_neon } */
34871  
34872  #include "arm_neon.h"
34873  
34874 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c
34875 --- a/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c     2007-07-25 14:28:31.000000000 +0200
34876 +++ b/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c     2010-01-25 09:50:29.295686791 +0100
34877 @@ -3,7 +3,8 @@
34878  
34879  /* { dg-do assemble } */
34880  /* { dg-require-effective-target arm_neon_ok } */
34881 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34882 +/* { dg-options "-save-temps -O0" } */
34883 +/* { dg-add-options arm_neon } */
34884  
34885  #include "arm_neon.h"
34886  
34887 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcalef32.c b/gcc/testsuite/gcc.target/arm/neon/vcalef32.c
34888 --- a/gcc/testsuite/gcc.target/arm/neon/vcalef32.c      2007-07-25 14:28:31.000000000 +0200
34889 +++ b/gcc/testsuite/gcc.target/arm/neon/vcalef32.c      2010-01-25 09:50:29.295686791 +0100
34890 @@ -3,7 +3,8 @@
34891  
34892  /* { dg-do assemble } */
34893  /* { dg-require-effective-target arm_neon_ok } */
34894 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34895 +/* { dg-options "-save-temps -O0" } */
34896 +/* { dg-add-options arm_neon } */
34897  
34898  #include "arm_neon.h"
34899  
34900 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c
34901 --- a/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c     2007-07-25 14:28:31.000000000 +0200
34902 +++ b/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c     2010-01-25 09:50:29.295686791 +0100
34903 @@ -3,7 +3,8 @@
34904  
34905  /* { dg-do assemble } */
34906  /* { dg-require-effective-target arm_neon_ok } */
34907 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34908 +/* { dg-options "-save-temps -O0" } */
34909 +/* { dg-add-options arm_neon } */
34910  
34911  #include "arm_neon.h"
34912  
34913 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c b/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c
34914 --- a/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c      2007-07-25 14:28:31.000000000 +0200
34915 +++ b/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c      2010-01-25 09:50:29.295686791 +0100
34916 @@ -3,7 +3,8 @@
34917  
34918  /* { dg-do assemble } */
34919  /* { dg-require-effective-target arm_neon_ok } */
34920 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34921 +/* { dg-options "-save-temps -O0" } */
34922 +/* { dg-add-options arm_neon } */
34923  
34924  #include "arm_neon.h"
34925  
34926 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c
34927 --- a/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c     2007-07-25 14:28:31.000000000 +0200
34928 +++ b/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c     2010-01-25 09:50:29.295686791 +0100
34929 @@ -3,7 +3,8 @@
34930  
34931  /* { dg-do assemble } */
34932  /* { dg-require-effective-target arm_neon_ok } */
34933 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34934 +/* { dg-options "-save-temps -O0" } */
34935 +/* { dg-add-options arm_neon } */
34936  
34937  #include "arm_neon.h"
34938  
34939 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqf32.c b/gcc/testsuite/gcc.target/arm/neon/vceqf32.c
34940 --- a/gcc/testsuite/gcc.target/arm/neon/vceqf32.c       2007-07-25 14:28:31.000000000 +0200
34941 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqf32.c       2010-01-25 09:50:29.305687083 +0100
34942 @@ -3,7 +3,8 @@
34943  
34944  /* { dg-do assemble } */
34945  /* { dg-require-effective-target arm_neon_ok } */
34946 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34947 +/* { dg-options "-save-temps -O0" } */
34948 +/* { dg-add-options arm_neon } */
34949  
34950  #include "arm_neon.h"
34951  
34952 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqp8.c b/gcc/testsuite/gcc.target/arm/neon/vceqp8.c
34953 --- a/gcc/testsuite/gcc.target/arm/neon/vceqp8.c        2007-07-25 14:28:31.000000000 +0200
34954 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqp8.c        2010-01-25 09:50:29.305687083 +0100
34955 @@ -3,7 +3,8 @@
34956  
34957  /* { dg-do assemble } */
34958  /* { dg-require-effective-target arm_neon_ok } */
34959 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34960 +/* { dg-options "-save-temps -O0" } */
34961 +/* { dg-add-options arm_neon } */
34962  
34963  #include "arm_neon.h"
34964  
34965 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c b/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c
34966 --- a/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c      2007-07-25 14:28:31.000000000 +0200
34967 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c      2010-01-25 09:50:29.305687083 +0100
34968 @@ -3,7 +3,8 @@
34969  
34970  /* { dg-do assemble } */
34971  /* { dg-require-effective-target arm_neon_ok } */
34972 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34973 +/* { dg-options "-save-temps -O0" } */
34974 +/* { dg-add-options arm_neon } */
34975  
34976  #include "arm_neon.h"
34977  
34978 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c b/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c
34979 --- a/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c       2007-07-25 14:28:31.000000000 +0200
34980 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c       2010-01-25 09:50:29.305687083 +0100
34981 @@ -3,7 +3,8 @@
34982  
34983  /* { dg-do assemble } */
34984  /* { dg-require-effective-target arm_neon_ok } */
34985 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34986 +/* { dg-options "-save-temps -O0" } */
34987 +/* { dg-add-options arm_neon } */
34988  
34989  #include "arm_neon.h"
34990  
34991 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c b/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c
34992 --- a/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c      2007-07-25 14:28:31.000000000 +0200
34993 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c      2010-01-25 09:50:29.305687083 +0100
34994 @@ -3,7 +3,8 @@
34995  
34996  /* { dg-do assemble } */
34997  /* { dg-require-effective-target arm_neon_ok } */
34998 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
34999 +/* { dg-options "-save-temps -O0" } */
35000 +/* { dg-add-options arm_neon } */
35001  
35002  #include "arm_neon.h"
35003  
35004 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c b/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c
35005 --- a/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c      2007-07-25 14:28:31.000000000 +0200
35006 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c      2010-01-25 09:50:29.305687083 +0100
35007 @@ -3,7 +3,8 @@
35008  
35009  /* { dg-do assemble } */
35010  /* { dg-require-effective-target arm_neon_ok } */
35011 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35012 +/* { dg-options "-save-temps -O0" } */
35013 +/* { dg-add-options arm_neon } */
35014  
35015  #include "arm_neon.h"
35016  
35017 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c b/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c
35018 --- a/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c       2007-07-25 14:28:31.000000000 +0200
35019 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c       2010-01-25 09:50:29.305687083 +0100
35020 @@ -3,7 +3,8 @@
35021  
35022  /* { dg-do assemble } */
35023  /* { dg-require-effective-target arm_neon_ok } */
35024 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35025 +/* { dg-options "-save-temps -O0" } */
35026 +/* { dg-add-options arm_neon } */
35027  
35028  #include "arm_neon.h"
35029  
35030 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c b/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c
35031 --- a/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c      2007-07-25 14:28:31.000000000 +0200
35032 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c      2010-01-25 09:50:29.305687083 +0100
35033 @@ -3,7 +3,8 @@
35034  
35035  /* { dg-do assemble } */
35036  /* { dg-require-effective-target arm_neon_ok } */
35037 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35038 +/* { dg-options "-save-temps -O0" } */
35039 +/* { dg-add-options arm_neon } */
35040  
35041  #include "arm_neon.h"
35042  
35043 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c b/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c
35044 --- a/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c      2007-07-25 14:28:31.000000000 +0200
35045 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c      2010-01-25 09:50:29.305687083 +0100
35046 @@ -3,7 +3,8 @@
35047  
35048  /* { dg-do assemble } */
35049  /* { dg-require-effective-target arm_neon_ok } */
35050 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35051 +/* { dg-options "-save-temps -O0" } */
35052 +/* { dg-add-options arm_neon } */
35053  
35054  #include "arm_neon.h"
35055  
35056 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c b/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c
35057 --- a/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c       2007-07-25 14:28:31.000000000 +0200
35058 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c       2010-01-25 09:50:29.305687083 +0100
35059 @@ -3,7 +3,8 @@
35060  
35061  /* { dg-do assemble } */
35062  /* { dg-require-effective-target arm_neon_ok } */
35063 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35064 +/* { dg-options "-save-temps -O0" } */
35065 +/* { dg-add-options arm_neon } */
35066  
35067  #include "arm_neon.h"
35068  
35069 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqs16.c b/gcc/testsuite/gcc.target/arm/neon/vceqs16.c
35070 --- a/gcc/testsuite/gcc.target/arm/neon/vceqs16.c       2007-07-25 14:28:31.000000000 +0200
35071 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqs16.c       2010-01-25 09:50:29.305687083 +0100
35072 @@ -3,7 +3,8 @@
35073  
35074  /* { dg-do assemble } */
35075  /* { dg-require-effective-target arm_neon_ok } */
35076 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35077 +/* { dg-options "-save-temps -O0" } */
35078 +/* { dg-add-options arm_neon } */
35079  
35080  #include "arm_neon.h"
35081  
35082 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqs32.c b/gcc/testsuite/gcc.target/arm/neon/vceqs32.c
35083 --- a/gcc/testsuite/gcc.target/arm/neon/vceqs32.c       2007-07-25 14:28:31.000000000 +0200
35084 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqs32.c       2010-01-25 09:50:29.305687083 +0100
35085 @@ -3,7 +3,8 @@
35086  
35087  /* { dg-do assemble } */
35088  /* { dg-require-effective-target arm_neon_ok } */
35089 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35090 +/* { dg-options "-save-temps -O0" } */
35091 +/* { dg-add-options arm_neon } */
35092  
35093  #include "arm_neon.h"
35094  
35095 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqs8.c b/gcc/testsuite/gcc.target/arm/neon/vceqs8.c
35096 --- a/gcc/testsuite/gcc.target/arm/neon/vceqs8.c        2007-07-25 14:28:31.000000000 +0200
35097 +++ b/gcc/testsuite/gcc.target/arm/neon/vceqs8.c        2010-01-25 09:50:29.305687083 +0100
35098 @@ -3,7 +3,8 @@
35099  
35100  /* { dg-do assemble } */
35101  /* { dg-require-effective-target arm_neon_ok } */
35102 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35103 +/* { dg-options "-save-temps -O0" } */
35104 +/* { dg-add-options arm_neon } */
35105  
35106  #include "arm_neon.h"
35107  
35108 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcequ16.c b/gcc/testsuite/gcc.target/arm/neon/vcequ16.c
35109 --- a/gcc/testsuite/gcc.target/arm/neon/vcequ16.c       2007-07-25 14:28:31.000000000 +0200
35110 +++ b/gcc/testsuite/gcc.target/arm/neon/vcequ16.c       2010-01-25 09:50:29.305687083 +0100
35111 @@ -3,7 +3,8 @@
35112  
35113  /* { dg-do assemble } */
35114  /* { dg-require-effective-target arm_neon_ok } */
35115 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35116 +/* { dg-options "-save-temps -O0" } */
35117 +/* { dg-add-options arm_neon } */
35118  
35119  #include "arm_neon.h"
35120  
35121 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcequ32.c b/gcc/testsuite/gcc.target/arm/neon/vcequ32.c
35122 --- a/gcc/testsuite/gcc.target/arm/neon/vcequ32.c       2007-07-25 14:28:31.000000000 +0200
35123 +++ b/gcc/testsuite/gcc.target/arm/neon/vcequ32.c       2010-01-25 09:50:29.305687083 +0100
35124 @@ -3,7 +3,8 @@
35125  
35126  /* { dg-do assemble } */
35127  /* { dg-require-effective-target arm_neon_ok } */
35128 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35129 +/* { dg-options "-save-temps -O0" } */
35130 +/* { dg-add-options arm_neon } */
35131  
35132  #include "arm_neon.h"
35133  
35134 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcequ8.c b/gcc/testsuite/gcc.target/arm/neon/vcequ8.c
35135 --- a/gcc/testsuite/gcc.target/arm/neon/vcequ8.c        2007-07-25 14:28:31.000000000 +0200
35136 +++ b/gcc/testsuite/gcc.target/arm/neon/vcequ8.c        2010-01-25 09:50:29.305687083 +0100
35137 @@ -3,7 +3,8 @@
35138  
35139  /* { dg-do assemble } */
35140  /* { dg-require-effective-target arm_neon_ok } */
35141 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35142 +/* { dg-options "-save-temps -O0" } */
35143 +/* { dg-add-options arm_neon } */
35144  
35145  #include "arm_neon.h"
35146  
35147 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgef32.c b/gcc/testsuite/gcc.target/arm/neon/vcgef32.c
35148 --- a/gcc/testsuite/gcc.target/arm/neon/vcgef32.c       2007-07-25 14:28:31.000000000 +0200
35149 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgef32.c       2010-01-25 09:50:29.305687083 +0100
35150 @@ -3,7 +3,8 @@
35151  
35152  /* { dg-do assemble } */
35153  /* { dg-require-effective-target arm_neon_ok } */
35154 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35155 +/* { dg-options "-save-temps -O0" } */
35156 +/* { dg-add-options arm_neon } */
35157  
35158  #include "arm_neon.h"
35159  
35160 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c
35161 --- a/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c      2007-07-25 14:28:31.000000000 +0200
35162 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c      2010-01-25 09:50:29.315687027 +0100
35163 @@ -3,7 +3,8 @@
35164  
35165  /* { dg-do assemble } */
35166  /* { dg-require-effective-target arm_neon_ok } */
35167 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35168 +/* { dg-options "-save-temps -O0" } */
35169 +/* { dg-add-options arm_neon } */
35170  
35171  #include "arm_neon.h"
35172  
35173 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c
35174 --- a/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c      2007-07-25 14:28:31.000000000 +0200
35175 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c      2010-01-25 09:50:29.315687027 +0100
35176 @@ -3,7 +3,8 @@
35177  
35178  /* { dg-do assemble } */
35179  /* { dg-require-effective-target arm_neon_ok } */
35180 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35181 +/* { dg-options "-save-temps -O0" } */
35182 +/* { dg-add-options arm_neon } */
35183  
35184  #include "arm_neon.h"
35185  
35186 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c
35187 --- a/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c      2007-07-25 14:28:31.000000000 +0200
35188 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c      2010-01-25 09:50:29.315687027 +0100
35189 @@ -3,7 +3,8 @@
35190  
35191  /* { dg-do assemble } */
35192  /* { dg-require-effective-target arm_neon_ok } */
35193 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35194 +/* { dg-options "-save-temps -O0" } */
35195 +/* { dg-add-options arm_neon } */
35196  
35197  #include "arm_neon.h"
35198  
35199 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c
35200 --- a/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c       2007-07-25 14:28:31.000000000 +0200
35201 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c       2010-01-25 09:50:29.315687027 +0100
35202 @@ -3,7 +3,8 @@
35203  
35204  /* { dg-do assemble } */
35205  /* { dg-require-effective-target arm_neon_ok } */
35206 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35207 +/* { dg-options "-save-temps -O0" } */
35208 +/* { dg-add-options arm_neon } */
35209  
35210  #include "arm_neon.h"
35211  
35212 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c
35213 --- a/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c      2007-07-25 14:28:31.000000000 +0200
35214 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c      2010-01-25 09:50:29.315687027 +0100
35215 @@ -3,7 +3,8 @@
35216  
35217  /* { dg-do assemble } */
35218  /* { dg-require-effective-target arm_neon_ok } */
35219 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35220 +/* { dg-options "-save-temps -O0" } */
35221 +/* { dg-add-options arm_neon } */
35222  
35223  #include "arm_neon.h"
35224  
35225 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c
35226 --- a/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c      2007-07-25 14:28:31.000000000 +0200
35227 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c      2010-01-25 09:50:29.315687027 +0100
35228 @@ -3,7 +3,8 @@
35229  
35230  /* { dg-do assemble } */
35231  /* { dg-require-effective-target arm_neon_ok } */
35232 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35233 +/* { dg-options "-save-temps -O0" } */
35234 +/* { dg-add-options arm_neon } */
35235  
35236  #include "arm_neon.h"
35237  
35238 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c
35239 --- a/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c       2007-07-25 14:28:31.000000000 +0200
35240 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c       2010-01-25 09:50:29.315687027 +0100
35241 @@ -3,7 +3,8 @@
35242  
35243  /* { dg-do assemble } */
35244  /* { dg-require-effective-target arm_neon_ok } */
35245 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35246 +/* { dg-options "-save-temps -O0" } */
35247 +/* { dg-add-options arm_neon } */
35248  
35249  #include "arm_neon.h"
35250  
35251 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcges16.c b/gcc/testsuite/gcc.target/arm/neon/vcges16.c
35252 --- a/gcc/testsuite/gcc.target/arm/neon/vcges16.c       2007-07-25 14:28:31.000000000 +0200
35253 +++ b/gcc/testsuite/gcc.target/arm/neon/vcges16.c       2010-01-25 09:50:29.315687027 +0100
35254 @@ -3,7 +3,8 @@
35255  
35256  /* { dg-do assemble } */
35257  /* { dg-require-effective-target arm_neon_ok } */
35258 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35259 +/* { dg-options "-save-temps -O0" } */
35260 +/* { dg-add-options arm_neon } */
35261  
35262  #include "arm_neon.h"
35263  
35264 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcges32.c b/gcc/testsuite/gcc.target/arm/neon/vcges32.c
35265 --- a/gcc/testsuite/gcc.target/arm/neon/vcges32.c       2007-07-25 14:28:31.000000000 +0200
35266 +++ b/gcc/testsuite/gcc.target/arm/neon/vcges32.c       2010-01-25 09:50:29.315687027 +0100
35267 @@ -3,7 +3,8 @@
35268  
35269  /* { dg-do assemble } */
35270  /* { dg-require-effective-target arm_neon_ok } */
35271 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35272 +/* { dg-options "-save-temps -O0" } */
35273 +/* { dg-add-options arm_neon } */
35274  
35275  #include "arm_neon.h"
35276  
35277 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcges8.c b/gcc/testsuite/gcc.target/arm/neon/vcges8.c
35278 --- a/gcc/testsuite/gcc.target/arm/neon/vcges8.c        2007-07-25 14:28:31.000000000 +0200
35279 +++ b/gcc/testsuite/gcc.target/arm/neon/vcges8.c        2010-01-25 09:50:29.315687027 +0100
35280 @@ -3,7 +3,8 @@
35281  
35282  /* { dg-do assemble } */
35283  /* { dg-require-effective-target arm_neon_ok } */
35284 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35285 +/* { dg-options "-save-temps -O0" } */
35286 +/* { dg-add-options arm_neon } */
35287  
35288  #include "arm_neon.h"
35289  
35290 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c b/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c
35291 --- a/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c       2007-07-25 14:28:31.000000000 +0200
35292 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c       2010-01-25 09:50:29.315687027 +0100
35293 @@ -3,7 +3,8 @@
35294  
35295  /* { dg-do assemble } */
35296  /* { dg-require-effective-target arm_neon_ok } */
35297 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35298 +/* { dg-options "-save-temps -O0" } */
35299 +/* { dg-add-options arm_neon } */
35300  
35301  #include "arm_neon.h"
35302  
35303 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c b/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c
35304 --- a/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c       2007-07-25 14:28:31.000000000 +0200
35305 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c       2010-01-25 09:50:29.315687027 +0100
35306 @@ -3,7 +3,8 @@
35307  
35308  /* { dg-do assemble } */
35309  /* { dg-require-effective-target arm_neon_ok } */
35310 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35311 +/* { dg-options "-save-temps -O0" } */
35312 +/* { dg-add-options arm_neon } */
35313  
35314  #include "arm_neon.h"
35315  
35316 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c b/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c
35317 --- a/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c        2007-07-25 14:28:31.000000000 +0200
35318 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c        2010-01-25 09:50:29.315687027 +0100
35319 @@ -3,7 +3,8 @@
35320  
35321  /* { dg-do assemble } */
35322  /* { dg-require-effective-target arm_neon_ok } */
35323 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35324 +/* { dg-options "-save-temps -O0" } */
35325 +/* { dg-add-options arm_neon } */
35326  
35327  #include "arm_neon.h"
35328  
35329 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c b/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c
35330 --- a/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c       2007-07-25 14:28:31.000000000 +0200
35331 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c       2010-01-25 09:50:29.315687027 +0100
35332 @@ -3,7 +3,8 @@
35333  
35334  /* { dg-do assemble } */
35335  /* { dg-require-effective-target arm_neon_ok } */
35336 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35337 +/* { dg-options "-save-temps -O0" } */
35338 +/* { dg-add-options arm_neon } */
35339  
35340  #include "arm_neon.h"
35341  
35342 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c
35343 --- a/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c      2007-07-25 14:28:31.000000000 +0200
35344 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c      2010-01-25 09:50:29.315687027 +0100
35345 @@ -3,7 +3,8 @@
35346  
35347  /* { dg-do assemble } */
35348  /* { dg-require-effective-target arm_neon_ok } */
35349 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35350 +/* { dg-options "-save-temps -O0" } */
35351 +/* { dg-add-options arm_neon } */
35352  
35353  #include "arm_neon.h"
35354  
35355 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c
35356 --- a/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c      2007-07-25 14:28:31.000000000 +0200
35357 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c      2010-01-25 09:50:29.315687027 +0100
35358 @@ -3,7 +3,8 @@
35359  
35360  /* { dg-do assemble } */
35361  /* { dg-require-effective-target arm_neon_ok } */
35362 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35363 +/* { dg-options "-save-temps -O0" } */
35364 +/* { dg-add-options arm_neon } */
35365  
35366  #include "arm_neon.h"
35367  
35368 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c
35369 --- a/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c      2007-07-25 14:28:31.000000000 +0200
35370 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c      2010-01-25 09:50:29.315687027 +0100
35371 @@ -3,7 +3,8 @@
35372  
35373  /* { dg-do assemble } */
35374  /* { dg-require-effective-target arm_neon_ok } */
35375 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35376 +/* { dg-options "-save-temps -O0" } */
35377 +/* { dg-add-options arm_neon } */
35378  
35379  #include "arm_neon.h"
35380  
35381 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c
35382 --- a/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c       2007-07-25 14:28:31.000000000 +0200
35383 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c       2010-01-25 09:50:29.315687027 +0100
35384 @@ -3,7 +3,8 @@
35385  
35386  /* { dg-do assemble } */
35387  /* { dg-require-effective-target arm_neon_ok } */
35388 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35389 +/* { dg-options "-save-temps -O0" } */
35390 +/* { dg-add-options arm_neon } */
35391  
35392  #include "arm_neon.h"
35393  
35394 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c
35395 --- a/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c      2007-07-25 14:28:31.000000000 +0200
35396 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c      2010-01-25 09:50:29.315687027 +0100
35397 @@ -3,7 +3,8 @@
35398  
35399  /* { dg-do assemble } */
35400  /* { dg-require-effective-target arm_neon_ok } */
35401 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35402 +/* { dg-options "-save-temps -O0" } */
35403 +/* { dg-add-options arm_neon } */
35404  
35405  #include "arm_neon.h"
35406  
35407 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c
35408 --- a/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c      2007-07-25 14:28:31.000000000 +0200
35409 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c      2010-01-25 09:50:29.315687027 +0100
35410 @@ -3,7 +3,8 @@
35411  
35412  /* { dg-do assemble } */
35413  /* { dg-require-effective-target arm_neon_ok } */
35414 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35415 +/* { dg-options "-save-temps -O0" } */
35416 +/* { dg-add-options arm_neon } */
35417  
35418  #include "arm_neon.h"
35419  
35420 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c
35421 --- a/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c       2007-07-25 14:28:31.000000000 +0200
35422 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c       2010-01-25 09:50:29.315687027 +0100
35423 @@ -3,7 +3,8 @@
35424  
35425  /* { dg-do assemble } */
35426  /* { dg-require-effective-target arm_neon_ok } */
35427 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35428 +/* { dg-options "-save-temps -O0" } */
35429 +/* { dg-add-options arm_neon } */
35430  
35431  #include "arm_neon.h"
35432  
35433 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgts16.c b/gcc/testsuite/gcc.target/arm/neon/vcgts16.c
35434 --- a/gcc/testsuite/gcc.target/arm/neon/vcgts16.c       2007-07-25 14:28:31.000000000 +0200
35435 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgts16.c       2010-01-25 09:50:29.315687027 +0100
35436 @@ -3,7 +3,8 @@
35437  
35438  /* { dg-do assemble } */
35439  /* { dg-require-effective-target arm_neon_ok } */
35440 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35441 +/* { dg-options "-save-temps -O0" } */
35442 +/* { dg-add-options arm_neon } */
35443  
35444  #include "arm_neon.h"
35445  
35446 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgts32.c b/gcc/testsuite/gcc.target/arm/neon/vcgts32.c
35447 --- a/gcc/testsuite/gcc.target/arm/neon/vcgts32.c       2007-07-25 14:28:31.000000000 +0200
35448 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgts32.c       2010-01-25 09:50:29.315687027 +0100
35449 @@ -3,7 +3,8 @@
35450  
35451  /* { dg-do assemble } */
35452  /* { dg-require-effective-target arm_neon_ok } */
35453 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35454 +/* { dg-options "-save-temps -O0" } */
35455 +/* { dg-add-options arm_neon } */
35456  
35457  #include "arm_neon.h"
35458  
35459 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgts8.c b/gcc/testsuite/gcc.target/arm/neon/vcgts8.c
35460 --- a/gcc/testsuite/gcc.target/arm/neon/vcgts8.c        2007-07-25 14:28:31.000000000 +0200
35461 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgts8.c        2010-01-25 09:50:29.315687027 +0100
35462 @@ -3,7 +3,8 @@
35463  
35464  /* { dg-do assemble } */
35465  /* { dg-require-effective-target arm_neon_ok } */
35466 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35467 +/* { dg-options "-save-temps -O0" } */
35468 +/* { dg-add-options arm_neon } */
35469  
35470  #include "arm_neon.h"
35471  
35472 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c b/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c
35473 --- a/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c       2007-07-25 14:28:31.000000000 +0200
35474 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c       2010-01-25 09:50:29.315687027 +0100
35475 @@ -3,7 +3,8 @@
35476  
35477  /* { dg-do assemble } */
35478  /* { dg-require-effective-target arm_neon_ok } */
35479 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35480 +/* { dg-options "-save-temps -O0" } */
35481 +/* { dg-add-options arm_neon } */
35482  
35483  #include "arm_neon.h"
35484  
35485 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c b/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c
35486 --- a/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c       2007-07-25 14:28:31.000000000 +0200
35487 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c       2010-01-25 09:50:29.315687027 +0100
35488 @@ -3,7 +3,8 @@
35489  
35490  /* { dg-do assemble } */
35491  /* { dg-require-effective-target arm_neon_ok } */
35492 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35493 +/* { dg-options "-save-temps -O0" } */
35494 +/* { dg-add-options arm_neon } */
35495  
35496  #include "arm_neon.h"
35497  
35498 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c b/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c
35499 --- a/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c        2007-07-25 14:28:31.000000000 +0200
35500 +++ b/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c        2010-01-25 09:50:29.315687027 +0100
35501 @@ -3,7 +3,8 @@
35502  
35503  /* { dg-do assemble } */
35504  /* { dg-require-effective-target arm_neon_ok } */
35505 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35506 +/* { dg-options "-save-temps -O0" } */
35507 +/* { dg-add-options arm_neon } */
35508  
35509  #include "arm_neon.h"
35510  
35511 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclef32.c b/gcc/testsuite/gcc.target/arm/neon/vclef32.c
35512 --- a/gcc/testsuite/gcc.target/arm/neon/vclef32.c       2007-07-25 14:28:31.000000000 +0200
35513 +++ b/gcc/testsuite/gcc.target/arm/neon/vclef32.c       2010-01-25 09:50:29.315687027 +0100
35514 @@ -3,7 +3,8 @@
35515  
35516  /* { dg-do assemble } */
35517  /* { dg-require-effective-target arm_neon_ok } */
35518 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35519 +/* { dg-options "-save-temps -O0" } */
35520 +/* { dg-add-options arm_neon } */
35521  
35522  #include "arm_neon.h"
35523  
35524 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c
35525 --- a/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c      2007-07-25 14:28:31.000000000 +0200
35526 +++ b/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c      2010-01-25 09:50:29.315687027 +0100
35527 @@ -3,7 +3,8 @@
35528  
35529  /* { dg-do assemble } */
35530  /* { dg-require-effective-target arm_neon_ok } */
35531 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35532 +/* { dg-options "-save-temps -O0" } */
35533 +/* { dg-add-options arm_neon } */
35534  
35535  #include "arm_neon.h"
35536  
35537 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c b/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c
35538 --- a/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c      2007-07-25 14:28:31.000000000 +0200
35539 +++ b/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c      2010-01-25 09:50:29.315687027 +0100
35540 @@ -3,7 +3,8 @@
35541  
35542  /* { dg-do assemble } */
35543  /* { dg-require-effective-target arm_neon_ok } */
35544 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35545 +/* { dg-options "-save-temps -O0" } */
35546 +/* { dg-add-options arm_neon } */
35547  
35548  #include "arm_neon.h"
35549  
35550 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c b/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c
35551 --- a/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c      2007-07-25 14:28:31.000000000 +0200
35552 +++ b/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c      2010-01-25 09:50:29.315687027 +0100
35553 @@ -3,7 +3,8 @@
35554  
35555  /* { dg-do assemble } */
35556  /* { dg-require-effective-target arm_neon_ok } */
35557 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35558 +/* { dg-options "-save-temps -O0" } */
35559 +/* { dg-add-options arm_neon } */
35560  
35561  #include "arm_neon.h"
35562  
35563 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c b/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c
35564 --- a/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c       2007-07-25 14:28:31.000000000 +0200
35565 +++ b/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c       2010-01-25 09:50:29.315687027 +0100
35566 @@ -3,7 +3,8 @@
35567  
35568  /* { dg-do assemble } */
35569  /* { dg-require-effective-target arm_neon_ok } */
35570 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35571 +/* { dg-options "-save-temps -O0" } */
35572 +/* { dg-add-options arm_neon } */
35573  
35574  #include "arm_neon.h"
35575  
35576 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c b/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c
35577 --- a/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c      2007-07-25 14:28:31.000000000 +0200
35578 +++ b/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c      2010-01-25 09:50:29.315687027 +0100
35579 @@ -3,7 +3,8 @@
35580  
35581  /* { dg-do assemble } */
35582  /* { dg-require-effective-target arm_neon_ok } */
35583 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35584 +/* { dg-options "-save-temps -O0" } */
35585 +/* { dg-add-options arm_neon } */
35586  
35587  #include "arm_neon.h"
35588  
35589 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c b/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c
35590 --- a/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c      2007-07-25 14:28:31.000000000 +0200
35591 +++ b/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c      2010-01-25 09:50:29.315687027 +0100
35592 @@ -3,7 +3,8 @@
35593  
35594  /* { dg-do assemble } */
35595  /* { dg-require-effective-target arm_neon_ok } */
35596 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35597 +/* { dg-options "-save-temps -O0" } */
35598 +/* { dg-add-options arm_neon } */
35599  
35600  #include "arm_neon.h"
35601  
35602 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c b/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c
35603 --- a/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c       2007-07-25 14:28:31.000000000 +0200
35604 +++ b/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c       2010-01-25 09:50:29.315687027 +0100
35605 @@ -3,7 +3,8 @@
35606  
35607  /* { dg-do assemble } */
35608  /* { dg-require-effective-target arm_neon_ok } */
35609 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35610 +/* { dg-options "-save-temps -O0" } */
35611 +/* { dg-add-options arm_neon } */
35612  
35613  #include "arm_neon.h"
35614  
35615 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcles16.c b/gcc/testsuite/gcc.target/arm/neon/vcles16.c
35616 --- a/gcc/testsuite/gcc.target/arm/neon/vcles16.c       2007-07-25 14:28:31.000000000 +0200
35617 +++ b/gcc/testsuite/gcc.target/arm/neon/vcles16.c       2010-01-25 09:50:29.315687027 +0100
35618 @@ -3,7 +3,8 @@
35619  
35620  /* { dg-do assemble } */
35621  /* { dg-require-effective-target arm_neon_ok } */
35622 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35623 +/* { dg-options "-save-temps -O0" } */
35624 +/* { dg-add-options arm_neon } */
35625  
35626  #include "arm_neon.h"
35627  
35628 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcles32.c b/gcc/testsuite/gcc.target/arm/neon/vcles32.c
35629 --- a/gcc/testsuite/gcc.target/arm/neon/vcles32.c       2007-07-25 14:28:31.000000000 +0200
35630 +++ b/gcc/testsuite/gcc.target/arm/neon/vcles32.c       2010-01-25 09:50:29.315687027 +0100
35631 @@ -3,7 +3,8 @@
35632  
35633  /* { dg-do assemble } */
35634  /* { dg-require-effective-target arm_neon_ok } */
35635 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35636 +/* { dg-options "-save-temps -O0" } */
35637 +/* { dg-add-options arm_neon } */
35638  
35639  #include "arm_neon.h"
35640  
35641 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcles8.c b/gcc/testsuite/gcc.target/arm/neon/vcles8.c
35642 --- a/gcc/testsuite/gcc.target/arm/neon/vcles8.c        2007-07-25 14:28:31.000000000 +0200
35643 +++ b/gcc/testsuite/gcc.target/arm/neon/vcles8.c        2010-01-25 09:50:29.315687027 +0100
35644 @@ -3,7 +3,8 @@
35645  
35646  /* { dg-do assemble } */
35647  /* { dg-require-effective-target arm_neon_ok } */
35648 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35649 +/* { dg-options "-save-temps -O0" } */
35650 +/* { dg-add-options arm_neon } */
35651  
35652  #include "arm_neon.h"
35653  
35654 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleu16.c b/gcc/testsuite/gcc.target/arm/neon/vcleu16.c
35655 --- a/gcc/testsuite/gcc.target/arm/neon/vcleu16.c       2007-07-25 14:28:31.000000000 +0200
35656 +++ b/gcc/testsuite/gcc.target/arm/neon/vcleu16.c       2010-01-25 09:50:29.315687027 +0100
35657 @@ -3,7 +3,8 @@
35658  
35659  /* { dg-do assemble } */
35660  /* { dg-require-effective-target arm_neon_ok } */
35661 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35662 +/* { dg-options "-save-temps -O0" } */
35663 +/* { dg-add-options arm_neon } */
35664  
35665  #include "arm_neon.h"
35666  
35667 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleu32.c b/gcc/testsuite/gcc.target/arm/neon/vcleu32.c
35668 --- a/gcc/testsuite/gcc.target/arm/neon/vcleu32.c       2007-07-25 14:28:31.000000000 +0200
35669 +++ b/gcc/testsuite/gcc.target/arm/neon/vcleu32.c       2010-01-25 09:50:29.315687027 +0100
35670 @@ -3,7 +3,8 @@
35671  
35672  /* { dg-do assemble } */
35673  /* { dg-require-effective-target arm_neon_ok } */
35674 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35675 +/* { dg-options "-save-temps -O0" } */
35676 +/* { dg-add-options arm_neon } */
35677  
35678  #include "arm_neon.h"
35679  
35680 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleu8.c b/gcc/testsuite/gcc.target/arm/neon/vcleu8.c
35681 --- a/gcc/testsuite/gcc.target/arm/neon/vcleu8.c        2007-07-25 14:28:31.000000000 +0200
35682 +++ b/gcc/testsuite/gcc.target/arm/neon/vcleu8.c        2010-01-25 09:50:29.315687027 +0100
35683 @@ -3,7 +3,8 @@
35684  
35685  /* { dg-do assemble } */
35686  /* { dg-require-effective-target arm_neon_ok } */
35687 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35688 +/* { dg-options "-save-temps -O0" } */
35689 +/* { dg-add-options arm_neon } */
35690  
35691  #include "arm_neon.h"
35692  
35693 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c b/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c
35694 --- a/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c      2007-07-25 14:28:31.000000000 +0200
35695 +++ b/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c      2010-01-25 09:50:29.315687027 +0100
35696 @@ -3,7 +3,8 @@
35697  
35698  /* { dg-do assemble } */
35699  /* { dg-require-effective-target arm_neon_ok } */
35700 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35701 +/* { dg-options "-save-temps -O0" } */
35702 +/* { dg-add-options arm_neon } */
35703  
35704  #include "arm_neon.h"
35705  
35706 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c b/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c
35707 --- a/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c      2007-07-25 14:28:31.000000000 +0200
35708 +++ b/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c      2010-01-25 09:50:29.315687027 +0100
35709 @@ -3,7 +3,8 @@
35710  
35711  /* { dg-do assemble } */
35712  /* { dg-require-effective-target arm_neon_ok } */
35713 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35714 +/* { dg-options "-save-temps -O0" } */
35715 +/* { dg-add-options arm_neon } */
35716  
35717  #include "arm_neon.h"
35718  
35719 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c b/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c
35720 --- a/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c       2007-07-25 14:28:31.000000000 +0200
35721 +++ b/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c       2010-01-25 09:50:29.315687027 +0100
35722 @@ -3,7 +3,8 @@
35723  
35724  /* { dg-do assemble } */
35725  /* { dg-require-effective-target arm_neon_ok } */
35726 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35727 +/* { dg-options "-save-temps -O0" } */
35728 +/* { dg-add-options arm_neon } */
35729  
35730  #include "arm_neon.h"
35731  
35732 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclss16.c b/gcc/testsuite/gcc.target/arm/neon/vclss16.c
35733 --- a/gcc/testsuite/gcc.target/arm/neon/vclss16.c       2007-07-25 14:28:31.000000000 +0200
35734 +++ b/gcc/testsuite/gcc.target/arm/neon/vclss16.c       2010-01-25 09:50:29.315687027 +0100
35735 @@ -3,7 +3,8 @@
35736  
35737  /* { dg-do assemble } */
35738  /* { dg-require-effective-target arm_neon_ok } */
35739 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35740 +/* { dg-options "-save-temps -O0" } */
35741 +/* { dg-add-options arm_neon } */
35742  
35743  #include "arm_neon.h"
35744  
35745 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclss32.c b/gcc/testsuite/gcc.target/arm/neon/vclss32.c
35746 --- a/gcc/testsuite/gcc.target/arm/neon/vclss32.c       2007-07-25 14:28:31.000000000 +0200
35747 +++ b/gcc/testsuite/gcc.target/arm/neon/vclss32.c       2010-01-25 09:50:29.315687027 +0100
35748 @@ -3,7 +3,8 @@
35749  
35750  /* { dg-do assemble } */
35751  /* { dg-require-effective-target arm_neon_ok } */
35752 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35753 +/* { dg-options "-save-temps -O0" } */
35754 +/* { dg-add-options arm_neon } */
35755  
35756  #include "arm_neon.h"
35757  
35758 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclss8.c b/gcc/testsuite/gcc.target/arm/neon/vclss8.c
35759 --- a/gcc/testsuite/gcc.target/arm/neon/vclss8.c        2007-07-25 14:28:31.000000000 +0200
35760 +++ b/gcc/testsuite/gcc.target/arm/neon/vclss8.c        2010-01-25 09:50:29.315687027 +0100
35761 @@ -3,7 +3,8 @@
35762  
35763  /* { dg-do assemble } */
35764  /* { dg-require-effective-target arm_neon_ok } */
35765 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35766 +/* { dg-options "-save-temps -O0" } */
35767 +/* { dg-add-options arm_neon } */
35768  
35769  #include "arm_neon.h"
35770  
35771 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltf32.c b/gcc/testsuite/gcc.target/arm/neon/vcltf32.c
35772 --- a/gcc/testsuite/gcc.target/arm/neon/vcltf32.c       2007-07-25 14:28:31.000000000 +0200
35773 +++ b/gcc/testsuite/gcc.target/arm/neon/vcltf32.c       2010-01-25 09:50:29.315687027 +0100
35774 @@ -3,7 +3,8 @@
35775  
35776  /* { dg-do assemble } */
35777  /* { dg-require-effective-target arm_neon_ok } */
35778 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35779 +/* { dg-options "-save-temps -O0" } */
35780 +/* { dg-add-options arm_neon } */
35781  
35782  #include "arm_neon.h"
35783  
35784 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c
35785 --- a/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c      2007-07-25 14:28:31.000000000 +0200
35786 +++ b/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c      2010-01-25 09:50:29.315687027 +0100
35787 @@ -3,7 +3,8 @@
35788  
35789  /* { dg-do assemble } */
35790  /* { dg-require-effective-target arm_neon_ok } */
35791 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35792 +/* { dg-options "-save-temps -O0" } */
35793 +/* { dg-add-options arm_neon } */
35794  
35795  #include "arm_neon.h"
35796  
35797 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c b/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c
35798 --- a/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c      2007-07-25 14:28:31.000000000 +0200
35799 +++ b/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c      2010-01-25 09:50:29.315687027 +0100
35800 @@ -3,7 +3,8 @@
35801  
35802  /* { dg-do assemble } */
35803  /* { dg-require-effective-target arm_neon_ok } */
35804 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35805 +/* { dg-options "-save-temps -O0" } */
35806 +/* { dg-add-options arm_neon } */
35807  
35808  #include "arm_neon.h"
35809  
35810 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c b/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c
35811 --- a/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c      2007-07-25 14:28:31.000000000 +0200
35812 +++ b/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c      2010-01-25 09:50:29.315687027 +0100
35813 @@ -3,7 +3,8 @@
35814  
35815  /* { dg-do assemble } */
35816  /* { dg-require-effective-target arm_neon_ok } */
35817 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35818 +/* { dg-options "-save-temps -O0" } */
35819 +/* { dg-add-options arm_neon } */
35820  
35821  #include "arm_neon.h"
35822  
35823 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c b/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c
35824 --- a/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c       2007-07-25 14:28:31.000000000 +0200
35825 +++ b/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c       2010-01-25 09:50:29.335686357 +0100
35826 @@ -3,7 +3,8 @@
35827  
35828  /* { dg-do assemble } */
35829  /* { dg-require-effective-target arm_neon_ok } */
35830 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35831 +/* { dg-options "-save-temps -O0" } */
35832 +/* { dg-add-options arm_neon } */
35833  
35834  #include "arm_neon.h"
35835  
35836 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c b/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c
35837 --- a/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c      2007-07-25 14:28:31.000000000 +0200
35838 +++ b/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c      2010-01-25 09:50:29.335686357 +0100
35839 @@ -3,7 +3,8 @@
35840  
35841  /* { dg-do assemble } */
35842  /* { dg-require-effective-target arm_neon_ok } */
35843 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35844 +/* { dg-options "-save-temps -O0" } */
35845 +/* { dg-add-options arm_neon } */
35846  
35847  #include "arm_neon.h"
35848  
35849 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c b/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c
35850 --- a/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c      2007-07-25 14:28:31.000000000 +0200
35851 +++ b/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c      2010-01-25 09:50:29.335686357 +0100
35852 @@ -3,7 +3,8 @@
35853  
35854  /* { dg-do assemble } */
35855  /* { dg-require-effective-target arm_neon_ok } */
35856 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35857 +/* { dg-options "-save-temps -O0" } */
35858 +/* { dg-add-options arm_neon } */
35859  
35860  #include "arm_neon.h"
35861  
35862 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c b/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c
35863 --- a/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c       2007-07-25 14:28:31.000000000 +0200
35864 +++ b/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c       2010-01-25 09:50:29.335686357 +0100
35865 @@ -3,7 +3,8 @@
35866  
35867  /* { dg-do assemble } */
35868  /* { dg-require-effective-target arm_neon_ok } */
35869 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35870 +/* { dg-options "-save-temps -O0" } */
35871 +/* { dg-add-options arm_neon } */
35872  
35873  #include "arm_neon.h"
35874  
35875 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclts16.c b/gcc/testsuite/gcc.target/arm/neon/vclts16.c
35876 --- a/gcc/testsuite/gcc.target/arm/neon/vclts16.c       2007-07-25 14:28:31.000000000 +0200
35877 +++ b/gcc/testsuite/gcc.target/arm/neon/vclts16.c       2010-01-25 09:50:29.335686357 +0100
35878 @@ -3,7 +3,8 @@
35879  
35880  /* { dg-do assemble } */
35881  /* { dg-require-effective-target arm_neon_ok } */
35882 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35883 +/* { dg-options "-save-temps -O0" } */
35884 +/* { dg-add-options arm_neon } */
35885  
35886  #include "arm_neon.h"
35887  
35888 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclts32.c b/gcc/testsuite/gcc.target/arm/neon/vclts32.c
35889 --- a/gcc/testsuite/gcc.target/arm/neon/vclts32.c       2007-07-25 14:28:31.000000000 +0200
35890 +++ b/gcc/testsuite/gcc.target/arm/neon/vclts32.c       2010-01-25 09:50:29.335686357 +0100
35891 @@ -3,7 +3,8 @@
35892  
35893  /* { dg-do assemble } */
35894  /* { dg-require-effective-target arm_neon_ok } */
35895 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35896 +/* { dg-options "-save-temps -O0" } */
35897 +/* { dg-add-options arm_neon } */
35898  
35899  #include "arm_neon.h"
35900  
35901 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclts8.c b/gcc/testsuite/gcc.target/arm/neon/vclts8.c
35902 --- a/gcc/testsuite/gcc.target/arm/neon/vclts8.c        2007-07-25 14:28:31.000000000 +0200
35903 +++ b/gcc/testsuite/gcc.target/arm/neon/vclts8.c        2010-01-25 09:50:29.335686357 +0100
35904 @@ -3,7 +3,8 @@
35905  
35906  /* { dg-do assemble } */
35907  /* { dg-require-effective-target arm_neon_ok } */
35908 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35909 +/* { dg-options "-save-temps -O0" } */
35910 +/* { dg-add-options arm_neon } */
35911  
35912  #include "arm_neon.h"
35913  
35914 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltu16.c b/gcc/testsuite/gcc.target/arm/neon/vcltu16.c
35915 --- a/gcc/testsuite/gcc.target/arm/neon/vcltu16.c       2007-07-25 14:28:31.000000000 +0200
35916 +++ b/gcc/testsuite/gcc.target/arm/neon/vcltu16.c       2010-01-25 09:50:29.335686357 +0100
35917 @@ -3,7 +3,8 @@
35918  
35919  /* { dg-do assemble } */
35920  /* { dg-require-effective-target arm_neon_ok } */
35921 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35922 +/* { dg-options "-save-temps -O0" } */
35923 +/* { dg-add-options arm_neon } */
35924  
35925  #include "arm_neon.h"
35926  
35927 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltu32.c b/gcc/testsuite/gcc.target/arm/neon/vcltu32.c
35928 --- a/gcc/testsuite/gcc.target/arm/neon/vcltu32.c       2007-07-25 14:28:31.000000000 +0200
35929 +++ b/gcc/testsuite/gcc.target/arm/neon/vcltu32.c       2010-01-25 09:50:29.335686357 +0100
35930 @@ -3,7 +3,8 @@
35931  
35932  /* { dg-do assemble } */
35933  /* { dg-require-effective-target arm_neon_ok } */
35934 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35935 +/* { dg-options "-save-temps -O0" } */
35936 +/* { dg-add-options arm_neon } */
35937  
35938  #include "arm_neon.h"
35939  
35940 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltu8.c b/gcc/testsuite/gcc.target/arm/neon/vcltu8.c
35941 --- a/gcc/testsuite/gcc.target/arm/neon/vcltu8.c        2007-07-25 14:28:31.000000000 +0200
35942 +++ b/gcc/testsuite/gcc.target/arm/neon/vcltu8.c        2010-01-25 09:50:29.335686357 +0100
35943 @@ -3,7 +3,8 @@
35944  
35945  /* { dg-do assemble } */
35946  /* { dg-require-effective-target arm_neon_ok } */
35947 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35948 +/* { dg-options "-save-temps -O0" } */
35949 +/* { dg-add-options arm_neon } */
35950  
35951  #include "arm_neon.h"
35952  
35953 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c b/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c
35954 --- a/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c      2007-07-25 14:28:31.000000000 +0200
35955 +++ b/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c      2010-01-25 09:50:29.335686357 +0100
35956 @@ -3,7 +3,8 @@
35957  
35958  /* { dg-do assemble } */
35959  /* { dg-require-effective-target arm_neon_ok } */
35960 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35961 +/* { dg-options "-save-temps -O0" } */
35962 +/* { dg-add-options arm_neon } */
35963  
35964  #include "arm_neon.h"
35965  
35966 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c b/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c
35967 --- a/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c      2007-07-25 14:28:31.000000000 +0200
35968 +++ b/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c      2010-01-25 09:50:29.335686357 +0100
35969 @@ -3,7 +3,8 @@
35970  
35971  /* { dg-do assemble } */
35972  /* { dg-require-effective-target arm_neon_ok } */
35973 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35974 +/* { dg-options "-save-temps -O0" } */
35975 +/* { dg-add-options arm_neon } */
35976  
35977  #include "arm_neon.h"
35978  
35979 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c b/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c
35980 --- a/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c       2007-07-25 14:28:31.000000000 +0200
35981 +++ b/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c       2010-01-25 09:50:29.335686357 +0100
35982 @@ -3,7 +3,8 @@
35983  
35984  /* { dg-do assemble } */
35985  /* { dg-require-effective-target arm_neon_ok } */
35986 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
35987 +/* { dg-options "-save-temps -O0" } */
35988 +/* { dg-add-options arm_neon } */
35989  
35990  #include "arm_neon.h"
35991  
35992 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c b/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c
35993 --- a/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c      2007-07-25 14:28:31.000000000 +0200
35994 +++ b/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c      2010-01-25 09:50:29.335686357 +0100
35995 @@ -3,7 +3,8 @@
35996  
35997  /* { dg-do assemble } */
35998  /* { dg-require-effective-target arm_neon_ok } */
35999 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36000 +/* { dg-options "-save-temps -O0" } */
36001 +/* { dg-add-options arm_neon } */
36002  
36003  #include "arm_neon.h"
36004  
36005 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c b/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c
36006 --- a/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c      2007-07-25 14:28:31.000000000 +0200
36007 +++ b/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c      2010-01-25 09:50:29.335686357 +0100
36008 @@ -3,7 +3,8 @@
36009  
36010  /* { dg-do assemble } */
36011  /* { dg-require-effective-target arm_neon_ok } */
36012 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36013 +/* { dg-options "-save-temps -O0" } */
36014 +/* { dg-add-options arm_neon } */
36015  
36016  #include "arm_neon.h"
36017  
36018 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c b/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c
36019 --- a/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c       2007-07-25 14:28:31.000000000 +0200
36020 +++ b/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c       2010-01-25 09:50:29.335686357 +0100
36021 @@ -3,7 +3,8 @@
36022  
36023  /* { dg-do assemble } */
36024  /* { dg-require-effective-target arm_neon_ok } */
36025 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36026 +/* { dg-options "-save-temps -O0" } */
36027 +/* { dg-add-options arm_neon } */
36028  
36029  #include "arm_neon.h"
36030  
36031 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzs16.c b/gcc/testsuite/gcc.target/arm/neon/vclzs16.c
36032 --- a/gcc/testsuite/gcc.target/arm/neon/vclzs16.c       2007-07-25 14:28:31.000000000 +0200
36033 +++ b/gcc/testsuite/gcc.target/arm/neon/vclzs16.c       2010-01-25 09:50:29.335686357 +0100
36034 @@ -3,7 +3,8 @@
36035  
36036  /* { dg-do assemble } */
36037  /* { dg-require-effective-target arm_neon_ok } */
36038 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36039 +/* { dg-options "-save-temps -O0" } */
36040 +/* { dg-add-options arm_neon } */
36041  
36042  #include "arm_neon.h"
36043  
36044 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzs32.c b/gcc/testsuite/gcc.target/arm/neon/vclzs32.c
36045 --- a/gcc/testsuite/gcc.target/arm/neon/vclzs32.c       2007-07-25 14:28:31.000000000 +0200
36046 +++ b/gcc/testsuite/gcc.target/arm/neon/vclzs32.c       2010-01-25 09:50:29.335686357 +0100
36047 @@ -3,7 +3,8 @@
36048  
36049  /* { dg-do assemble } */
36050  /* { dg-require-effective-target arm_neon_ok } */
36051 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36052 +/* { dg-options "-save-temps -O0" } */
36053 +/* { dg-add-options arm_neon } */
36054  
36055  #include "arm_neon.h"
36056  
36057 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzs8.c b/gcc/testsuite/gcc.target/arm/neon/vclzs8.c
36058 --- a/gcc/testsuite/gcc.target/arm/neon/vclzs8.c        2007-07-25 14:28:31.000000000 +0200
36059 +++ b/gcc/testsuite/gcc.target/arm/neon/vclzs8.c        2010-01-25 09:50:29.335686357 +0100
36060 @@ -3,7 +3,8 @@
36061  
36062  /* { dg-do assemble } */
36063  /* { dg-require-effective-target arm_neon_ok } */
36064 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36065 +/* { dg-options "-save-temps -O0" } */
36066 +/* { dg-add-options arm_neon } */
36067  
36068  #include "arm_neon.h"
36069  
36070 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzu16.c b/gcc/testsuite/gcc.target/arm/neon/vclzu16.c
36071 --- a/gcc/testsuite/gcc.target/arm/neon/vclzu16.c       2007-07-25 14:28:31.000000000 +0200
36072 +++ b/gcc/testsuite/gcc.target/arm/neon/vclzu16.c       2010-01-25 09:50:29.335686357 +0100
36073 @@ -3,7 +3,8 @@
36074  
36075  /* { dg-do assemble } */
36076  /* { dg-require-effective-target arm_neon_ok } */
36077 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36078 +/* { dg-options "-save-temps -O0" } */
36079 +/* { dg-add-options arm_neon } */
36080  
36081  #include "arm_neon.h"
36082  
36083 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzu32.c b/gcc/testsuite/gcc.target/arm/neon/vclzu32.c
36084 --- a/gcc/testsuite/gcc.target/arm/neon/vclzu32.c       2007-07-25 14:28:31.000000000 +0200
36085 +++ b/gcc/testsuite/gcc.target/arm/neon/vclzu32.c       2010-01-25 09:50:29.335686357 +0100
36086 @@ -3,7 +3,8 @@
36087  
36088  /* { dg-do assemble } */
36089  /* { dg-require-effective-target arm_neon_ok } */
36090 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36091 +/* { dg-options "-save-temps -O0" } */
36092 +/* { dg-add-options arm_neon } */
36093  
36094  #include "arm_neon.h"
36095  
36096 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzu8.c b/gcc/testsuite/gcc.target/arm/neon/vclzu8.c
36097 --- a/gcc/testsuite/gcc.target/arm/neon/vclzu8.c        2007-07-25 14:28:31.000000000 +0200
36098 +++ b/gcc/testsuite/gcc.target/arm/neon/vclzu8.c        2010-01-25 09:50:29.335686357 +0100
36099 @@ -3,7 +3,8 @@
36100  
36101  /* { dg-do assemble } */
36102  /* { dg-require-effective-target arm_neon_ok } */
36103 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36104 +/* { dg-options "-save-temps -O0" } */
36105 +/* { dg-add-options arm_neon } */
36106  
36107  #include "arm_neon.h"
36108  
36109 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcntp8.c b/gcc/testsuite/gcc.target/arm/neon/vcntp8.c
36110 --- a/gcc/testsuite/gcc.target/arm/neon/vcntp8.c        2007-07-25 14:28:31.000000000 +0200
36111 +++ b/gcc/testsuite/gcc.target/arm/neon/vcntp8.c        2010-01-25 09:50:29.335686357 +0100
36112 @@ -3,7 +3,8 @@
36113  
36114  /* { dg-do assemble } */
36115  /* { dg-require-effective-target arm_neon_ok } */
36116 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36117 +/* { dg-options "-save-temps -O0" } */
36118 +/* { dg-add-options arm_neon } */
36119  
36120  #include "arm_neon.h"
36121  
36122 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c b/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c
36123 --- a/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c       2007-07-25 14:28:31.000000000 +0200
36124 +++ b/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c       2010-01-25 09:50:29.335686357 +0100
36125 @@ -3,7 +3,8 @@
36126  
36127  /* { dg-do assemble } */
36128  /* { dg-require-effective-target arm_neon_ok } */
36129 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36130 +/* { dg-options "-save-temps -O0" } */
36131 +/* { dg-add-options arm_neon } */
36132  
36133  #include "arm_neon.h"
36134  
36135 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c b/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c
36136 --- a/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c       2007-07-25 14:28:31.000000000 +0200
36137 +++ b/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c       2010-01-25 09:50:29.345686441 +0100
36138 @@ -3,7 +3,8 @@
36139  
36140  /* { dg-do assemble } */
36141  /* { dg-require-effective-target arm_neon_ok } */
36142 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36143 +/* { dg-options "-save-temps -O0" } */
36144 +/* { dg-add-options arm_neon } */
36145  
36146  #include "arm_neon.h"
36147  
36148 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c b/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c
36149 --- a/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c       2007-07-25 14:28:31.000000000 +0200
36150 +++ b/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c       2010-01-25 09:50:29.345686441 +0100
36151 @@ -3,7 +3,8 @@
36152  
36153  /* { dg-do assemble } */
36154  /* { dg-require-effective-target arm_neon_ok } */
36155 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36156 +/* { dg-options "-save-temps -O0" } */
36157 +/* { dg-add-options arm_neon } */
36158  
36159  #include "arm_neon.h"
36160  
36161 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcnts8.c b/gcc/testsuite/gcc.target/arm/neon/vcnts8.c
36162 --- a/gcc/testsuite/gcc.target/arm/neon/vcnts8.c        2007-07-25 14:28:31.000000000 +0200
36163 +++ b/gcc/testsuite/gcc.target/arm/neon/vcnts8.c        2010-01-25 09:50:29.345686441 +0100
36164 @@ -3,7 +3,8 @@
36165  
36166  /* { dg-do assemble } */
36167  /* { dg-require-effective-target arm_neon_ok } */
36168 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36169 +/* { dg-options "-save-temps -O0" } */
36170 +/* { dg-add-options arm_neon } */
36171  
36172  #include "arm_neon.h"
36173  
36174 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcntu8.c b/gcc/testsuite/gcc.target/arm/neon/vcntu8.c
36175 --- a/gcc/testsuite/gcc.target/arm/neon/vcntu8.c        2007-07-25 14:28:31.000000000 +0200
36176 +++ b/gcc/testsuite/gcc.target/arm/neon/vcntu8.c        2010-01-25 09:50:29.345686441 +0100
36177 @@ -3,7 +3,8 @@
36178  
36179  /* { dg-do assemble } */
36180  /* { dg-require-effective-target arm_neon_ok } */
36181 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36182 +/* { dg-options "-save-temps -O0" } */
36183 +/* { dg-add-options arm_neon } */
36184  
36185  #include "arm_neon.h"
36186  
36187 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c b/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c
36188 --- a/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c   2007-07-25 14:28:31.000000000 +0200
36189 +++ b/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c   2010-01-25 09:50:29.345686441 +0100
36190 @@ -3,7 +3,8 @@
36191  
36192  /* { dg-do assemble } */
36193  /* { dg-require-effective-target arm_neon_ok } */
36194 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36195 +/* { dg-options "-save-temps -O0" } */
36196 +/* { dg-add-options arm_neon } */
36197  
36198  #include "arm_neon.h"
36199  
36200 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c b/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c
36201 --- a/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c   2007-07-25 14:28:31.000000000 +0200
36202 +++ b/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c   2010-01-25 09:50:29.345686441 +0100
36203 @@ -3,7 +3,8 @@
36204  
36205  /* { dg-do assemble } */
36206  /* { dg-require-effective-target arm_neon_ok } */
36207 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36208 +/* { dg-options "-save-temps -O0" } */
36209 +/* { dg-add-options arm_neon } */
36210  
36211  #include "arm_neon.h"
36212  
36213 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c b/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c
36214 --- a/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c    2007-07-25 14:28:31.000000000 +0200
36215 +++ b/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c    2010-01-25 09:50:29.345686441 +0100
36216 @@ -3,7 +3,8 @@
36217  
36218  /* { dg-do assemble } */
36219  /* { dg-require-effective-target arm_neon_ok } */
36220 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36221 +/* { dg-options "-save-temps -O0" } */
36222 +/* { dg-add-options arm_neon } */
36223  
36224  #include "arm_neon.h"
36225  
36226 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombines16.c b/gcc/testsuite/gcc.target/arm/neon/vcombines16.c
36227 --- a/gcc/testsuite/gcc.target/arm/neon/vcombines16.c   2007-07-25 14:28:31.000000000 +0200
36228 +++ b/gcc/testsuite/gcc.target/arm/neon/vcombines16.c   2010-01-25 09:50:29.345686441 +0100
36229 @@ -3,7 +3,8 @@
36230  
36231  /* { dg-do assemble } */
36232  /* { dg-require-effective-target arm_neon_ok } */
36233 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36234 +/* { dg-options "-save-temps -O0" } */
36235 +/* { dg-add-options arm_neon } */
36236  
36237  #include "arm_neon.h"
36238  
36239 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombines32.c b/gcc/testsuite/gcc.target/arm/neon/vcombines32.c
36240 --- a/gcc/testsuite/gcc.target/arm/neon/vcombines32.c   2007-07-25 14:28:31.000000000 +0200
36241 +++ b/gcc/testsuite/gcc.target/arm/neon/vcombines32.c   2010-01-25 09:50:29.345686441 +0100
36242 @@ -3,7 +3,8 @@
36243  
36244  /* { dg-do assemble } */
36245  /* { dg-require-effective-target arm_neon_ok } */
36246 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36247 +/* { dg-options "-save-temps -O0" } */
36248 +/* { dg-add-options arm_neon } */
36249  
36250  #include "arm_neon.h"
36251  
36252 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombines64.c b/gcc/testsuite/gcc.target/arm/neon/vcombines64.c
36253 --- a/gcc/testsuite/gcc.target/arm/neon/vcombines64.c   2007-07-25 14:28:31.000000000 +0200
36254 +++ b/gcc/testsuite/gcc.target/arm/neon/vcombines64.c   2010-01-25 09:50:29.345686441 +0100
36255 @@ -3,7 +3,8 @@
36256  
36257  /* { dg-do assemble } */
36258  /* { dg-require-effective-target arm_neon_ok } */
36259 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36260 +/* { dg-options "-save-temps -O0" } */
36261 +/* { dg-add-options arm_neon } */
36262  
36263  #include "arm_neon.h"
36264  
36265 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombines8.c b/gcc/testsuite/gcc.target/arm/neon/vcombines8.c
36266 --- a/gcc/testsuite/gcc.target/arm/neon/vcombines8.c    2007-07-25 14:28:31.000000000 +0200
36267 +++ b/gcc/testsuite/gcc.target/arm/neon/vcombines8.c    2010-01-25 09:50:29.345686441 +0100
36268 @@ -3,7 +3,8 @@
36269  
36270  /* { dg-do assemble } */
36271  /* { dg-require-effective-target arm_neon_ok } */
36272 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36273 +/* { dg-options "-save-temps -O0" } */
36274 +/* { dg-add-options arm_neon } */
36275  
36276  #include "arm_neon.h"
36277  
36278 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c b/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c
36279 --- a/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c   2007-07-25 14:28:31.000000000 +0200
36280 +++ b/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c   2010-01-25 09:50:29.345686441 +0100
36281 @@ -3,7 +3,8 @@
36282  
36283  /* { dg-do assemble } */
36284  /* { dg-require-effective-target arm_neon_ok } */
36285 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36286 +/* { dg-options "-save-temps -O0" } */
36287 +/* { dg-add-options arm_neon } */
36288  
36289  #include "arm_neon.h"
36290  
36291 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c b/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c
36292 --- a/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c   2007-07-25 14:28:31.000000000 +0200
36293 +++ b/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c   2010-01-25 09:50:29.345686441 +0100
36294 @@ -3,7 +3,8 @@
36295  
36296  /* { dg-do assemble } */
36297  /* { dg-require-effective-target arm_neon_ok } */
36298 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36299 +/* { dg-options "-save-temps -O0" } */
36300 +/* { dg-add-options arm_neon } */
36301  
36302  #include "arm_neon.h"
36303  
36304 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c b/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c
36305 --- a/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c   2007-07-25 14:28:31.000000000 +0200
36306 +++ b/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c   2010-01-25 09:50:29.345686441 +0100
36307 @@ -3,7 +3,8 @@
36308  
36309  /* { dg-do assemble } */
36310  /* { dg-require-effective-target arm_neon_ok } */
36311 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36312 +/* { dg-options "-save-temps -O0" } */
36313 +/* { dg-add-options arm_neon } */
36314  
36315  #include "arm_neon.h"
36316  
36317 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c b/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c
36318 --- a/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c    2007-07-25 14:28:31.000000000 +0200
36319 +++ b/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c    2010-01-25 09:50:29.345686441 +0100
36320 @@ -3,7 +3,8 @@
36321  
36322  /* { dg-do assemble } */
36323  /* { dg-require-effective-target arm_neon_ok } */
36324 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36325 +/* { dg-options "-save-temps -O0" } */
36326 +/* { dg-add-options arm_neon } */
36327  
36328  #include "arm_neon.h"
36329  
36330 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c b/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c
36331 --- a/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c    2007-07-25 14:28:31.000000000 +0200
36332 +++ b/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c    2010-01-25 09:50:29.345686441 +0100
36333 @@ -3,7 +3,8 @@
36334  
36335  /* { dg-do assemble } */
36336  /* { dg-require-effective-target arm_neon_ok } */
36337 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36338 +/* { dg-options "-save-temps -O0" } */
36339 +/* { dg-add-options arm_neon } */
36340  
36341  #include "arm_neon.h"
36342  
36343 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c b/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c
36344 --- a/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c    2007-07-25 14:28:31.000000000 +0200
36345 +++ b/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c    2010-01-25 09:50:29.345686441 +0100
36346 @@ -3,7 +3,8 @@
36347  
36348  /* { dg-do assemble } */
36349  /* { dg-require-effective-target arm_neon_ok } */
36350 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36351 +/* { dg-options "-save-temps -O0" } */
36352 +/* { dg-add-options arm_neon } */
36353  
36354  #include "arm_neon.h"
36355  
36356 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c b/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c
36357 --- a/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c     2007-07-25 14:28:31.000000000 +0200
36358 +++ b/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c     2010-01-25 09:50:29.345686441 +0100
36359 @@ -3,7 +3,8 @@
36360  
36361  /* { dg-do assemble } */
36362  /* { dg-require-effective-target arm_neon_ok } */
36363 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36364 +/* { dg-options "-save-temps -O0" } */
36365 +/* { dg-add-options arm_neon } */
36366  
36367  #include "arm_neon.h"
36368  
36369 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreates16.c b/gcc/testsuite/gcc.target/arm/neon/vcreates16.c
36370 --- a/gcc/testsuite/gcc.target/arm/neon/vcreates16.c    2007-07-25 14:28:31.000000000 +0200
36371 +++ b/gcc/testsuite/gcc.target/arm/neon/vcreates16.c    2010-01-25 09:50:29.345686441 +0100
36372 @@ -3,7 +3,8 @@
36373  
36374  /* { dg-do assemble } */
36375  /* { dg-require-effective-target arm_neon_ok } */
36376 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36377 +/* { dg-options "-save-temps -O0" } */
36378 +/* { dg-add-options arm_neon } */
36379  
36380  #include "arm_neon.h"
36381  
36382 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreates32.c b/gcc/testsuite/gcc.target/arm/neon/vcreates32.c
36383 --- a/gcc/testsuite/gcc.target/arm/neon/vcreates32.c    2007-07-25 14:28:31.000000000 +0200
36384 +++ b/gcc/testsuite/gcc.target/arm/neon/vcreates32.c    2010-01-25 09:50:29.345686441 +0100
36385 @@ -3,7 +3,8 @@
36386  
36387  /* { dg-do assemble } */
36388  /* { dg-require-effective-target arm_neon_ok } */
36389 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36390 +/* { dg-options "-save-temps -O0" } */
36391 +/* { dg-add-options arm_neon } */
36392  
36393  #include "arm_neon.h"
36394  
36395 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreates64.c b/gcc/testsuite/gcc.target/arm/neon/vcreates64.c
36396 --- a/gcc/testsuite/gcc.target/arm/neon/vcreates64.c    2007-07-25 14:28:31.000000000 +0200
36397 +++ b/gcc/testsuite/gcc.target/arm/neon/vcreates64.c    2010-01-25 09:50:29.345686441 +0100
36398 @@ -3,7 +3,8 @@
36399  
36400  /* { dg-do assemble } */
36401  /* { dg-require-effective-target arm_neon_ok } */
36402 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36403 +/* { dg-options "-save-temps -O0" } */
36404 +/* { dg-add-options arm_neon } */
36405  
36406  #include "arm_neon.h"
36407  
36408 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreates8.c b/gcc/testsuite/gcc.target/arm/neon/vcreates8.c
36409 --- a/gcc/testsuite/gcc.target/arm/neon/vcreates8.c     2007-07-25 14:28:31.000000000 +0200
36410 +++ b/gcc/testsuite/gcc.target/arm/neon/vcreates8.c     2010-01-25 09:50:29.345686441 +0100
36411 @@ -3,7 +3,8 @@
36412  
36413  /* { dg-do assemble } */
36414  /* { dg-require-effective-target arm_neon_ok } */
36415 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36416 +/* { dg-options "-save-temps -O0" } */
36417 +/* { dg-add-options arm_neon } */
36418  
36419  #include "arm_neon.h"
36420  
36421 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c b/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c
36422 --- a/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c    2007-07-25 14:28:31.000000000 +0200
36423 +++ b/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c    2010-01-25 09:50:29.345686441 +0100
36424 @@ -3,7 +3,8 @@
36425  
36426  /* { dg-do assemble } */
36427  /* { dg-require-effective-target arm_neon_ok } */
36428 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36429 +/* { dg-options "-save-temps -O0" } */
36430 +/* { dg-add-options arm_neon } */
36431  
36432  #include "arm_neon.h"
36433  
36434 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c b/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c
36435 --- a/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c    2007-07-25 14:28:31.000000000 +0200
36436 +++ b/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c    2010-01-25 09:50:29.345686441 +0100
36437 @@ -3,7 +3,8 @@
36438  
36439  /* { dg-do assemble } */
36440  /* { dg-require-effective-target arm_neon_ok } */
36441 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36442 +/* { dg-options "-save-temps -O0" } */
36443 +/* { dg-add-options arm_neon } */
36444  
36445  #include "arm_neon.h"
36446  
36447 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c b/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c
36448 --- a/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c    2007-07-25 14:28:31.000000000 +0200
36449 +++ b/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c    2010-01-25 09:50:29.345686441 +0100
36450 @@ -3,7 +3,8 @@
36451  
36452  /* { dg-do assemble } */
36453  /* { dg-require-effective-target arm_neon_ok } */
36454 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36455 +/* { dg-options "-save-temps -O0" } */
36456 +/* { dg-add-options arm_neon } */
36457  
36458  #include "arm_neon.h"
36459  
36460 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c b/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c
36461 --- a/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c     2007-07-25 14:28:31.000000000 +0200
36462 +++ b/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c     2010-01-25 09:50:29.345686441 +0100
36463 @@ -3,7 +3,8 @@
36464  
36465  /* { dg-do assemble } */
36466  /* { dg-require-effective-target arm_neon_ok } */
36467 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36468 +/* { dg-options "-save-temps -O0" } */
36469 +/* { dg-add-options arm_neon } */
36470  
36471  #include "arm_neon.h"
36472  
36473 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c
36474 --- a/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c   2007-07-25 14:28:31.000000000 +0200
36475 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c   2010-01-25 09:50:29.345686441 +0100
36476 @@ -3,7 +3,8 @@
36477  
36478  /* { dg-do assemble } */
36479  /* { dg-require-effective-target arm_neon_ok } */
36480 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36481 +/* { dg-options "-save-temps -O0" } */
36482 +/* { dg-add-options arm_neon } */
36483  
36484  #include "arm_neon.h"
36485  
36486 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c
36487 --- a/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c   2007-07-25 14:28:31.000000000 +0200
36488 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c   2010-01-25 09:50:29.345686441 +0100
36489 @@ -3,7 +3,8 @@
36490  
36491  /* { dg-do assemble } */
36492  /* { dg-require-effective-target arm_neon_ok } */
36493 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36494 +/* { dg-options "-save-temps -O0" } */
36495 +/* { dg-add-options arm_neon } */
36496  
36497  #include "arm_neon.h"
36498  
36499 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c
36500 --- a/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c 2007-07-25 14:28:31.000000000 +0200
36501 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c 2010-01-25 09:50:29.345686441 +0100
36502 @@ -3,7 +3,8 @@
36503  
36504  /* { dg-do assemble } */
36505  /* { dg-require-effective-target arm_neon_ok } */
36506 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36507 +/* { dg-options "-save-temps -O0" } */
36508 +/* { dg-add-options arm_neon } */
36509  
36510  #include "arm_neon.h"
36511  
36512 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c
36513 --- a/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c 2007-07-25 14:28:31.000000000 +0200
36514 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c 2010-01-25 09:50:29.345686441 +0100
36515 @@ -3,7 +3,8 @@
36516  
36517  /* { dg-do assemble } */
36518  /* { dg-require-effective-target arm_neon_ok } */
36519 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36520 +/* { dg-options "-save-temps -O0" } */
36521 +/* { dg-add-options arm_neon } */
36522  
36523  #include "arm_neon.h"
36524  
36525 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c
36526 --- a/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c 2007-07-25 14:28:31.000000000 +0200
36527 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c 2010-01-25 09:50:29.345686441 +0100
36528 @@ -3,7 +3,8 @@
36529  
36530  /* { dg-do assemble } */
36531  /* { dg-require-effective-target arm_neon_ok } */
36532 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36533 +/* { dg-options "-save-temps -O0" } */
36534 +/* { dg-add-options arm_neon } */
36535  
36536  #include "arm_neon.h"
36537  
36538 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c
36539 --- a/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c 2007-07-25 14:28:31.000000000 +0200
36540 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c 2010-01-25 09:50:29.345686441 +0100
36541 @@ -3,7 +3,8 @@
36542  
36543  /* { dg-do assemble } */
36544  /* { dg-require-effective-target arm_neon_ok } */
36545 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36546 +/* { dg-options "-save-temps -O0" } */
36547 +/* { dg-add-options arm_neon } */
36548  
36549  #include "arm_neon.h"
36550  
36551 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c
36552 --- a/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c  2007-07-25 14:28:31.000000000 +0200
36553 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c  2010-01-25 09:50:29.345686441 +0100
36554 @@ -3,7 +3,8 @@
36555  
36556  /* { dg-do assemble } */
36557  /* { dg-require-effective-target arm_neon_ok } */
36558 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36559 +/* { dg-options "-save-temps -O0" } */
36560 +/* { dg-add-options arm_neon } */
36561  
36562  #include "arm_neon.h"
36563  
36564 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c
36565 --- a/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c  2007-07-25 14:28:31.000000000 +0200
36566 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c  2010-01-25 09:50:29.345686441 +0100
36567 @@ -3,7 +3,8 @@
36568  
36569  /* { dg-do assemble } */
36570  /* { dg-require-effective-target arm_neon_ok } */
36571 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36572 +/* { dg-options "-save-temps -O0" } */
36573 +/* { dg-add-options arm_neon } */
36574  
36575  #include "arm_neon.h"
36576  
36577 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c
36578 --- a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c        2007-07-25 14:28:31.000000000 +0200
36579 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c        2010-01-25 09:50:29.345686441 +0100
36580 @@ -3,7 +3,8 @@
36581  
36582  /* { dg-do assemble } */
36583  /* { dg-require-effective-target arm_neon_ok } */
36584 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36585 +/* { dg-options "-save-temps -O0" } */
36586 +/* { dg-add-options arm_neon } */
36587  
36588  #include "arm_neon.h"
36589  
36590 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c
36591 --- a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c        2007-07-25 14:28:31.000000000 +0200
36592 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c        2010-01-25 09:50:29.345686441 +0100
36593 @@ -3,7 +3,8 @@
36594  
36595  /* { dg-do assemble } */
36596  /* { dg-require-effective-target arm_neon_ok } */
36597 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36598 +/* { dg-options "-save-temps -O0" } */
36599 +/* { dg-add-options arm_neon } */
36600  
36601  #include "arm_neon.h"
36602  
36603 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c
36604 --- a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c        2007-07-25 14:28:31.000000000 +0200
36605 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c        2010-01-25 09:50:29.345686441 +0100
36606 @@ -3,7 +3,8 @@
36607  
36608  /* { dg-do assemble } */
36609  /* { dg-require-effective-target arm_neon_ok } */
36610 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36611 +/* { dg-options "-save-temps -O0" } */
36612 +/* { dg-add-options arm_neon } */
36613  
36614  #include "arm_neon.h"
36615  
36616 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c
36617 --- a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c        2007-07-25 14:28:31.000000000 +0200
36618 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c        2010-01-25 09:50:29.345686441 +0100
36619 @@ -3,7 +3,8 @@
36620  
36621  /* { dg-do assemble } */
36622  /* { dg-require-effective-target arm_neon_ok } */
36623 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36624 +/* { dg-options "-save-temps -O0" } */
36625 +/* { dg-add-options arm_neon } */
36626  
36627  #include "arm_neon.h"
36628  
36629 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c
36630 --- a/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c  2007-07-25 14:28:31.000000000 +0200
36631 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c  2010-01-25 09:50:29.345686441 +0100
36632 @@ -3,7 +3,8 @@
36633  
36634  /* { dg-do assemble } */
36635  /* { dg-require-effective-target arm_neon_ok } */
36636 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36637 +/* { dg-options "-save-temps -O0" } */
36638 +/* { dg-add-options arm_neon } */
36639  
36640  #include "arm_neon.h"
36641  
36642 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c
36643 --- a/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c  2007-07-25 14:28:31.000000000 +0200
36644 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c  2010-01-25 09:50:29.345686441 +0100
36645 @@ -3,7 +3,8 @@
36646  
36647  /* { dg-do assemble } */
36648  /* { dg-require-effective-target arm_neon_ok } */
36649 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36650 +/* { dg-options "-save-temps -O0" } */
36651 +/* { dg-add-options arm_neon } */
36652  
36653  #include "arm_neon.h"
36654  
36655 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c
36656 --- a/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c   2007-07-25 14:28:31.000000000 +0200
36657 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c   2010-01-25 09:50:29.345686441 +0100
36658 @@ -3,7 +3,8 @@
36659  
36660  /* { dg-do assemble } */
36661  /* { dg-require-effective-target arm_neon_ok } */
36662 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36663 +/* { dg-options "-save-temps -O0" } */
36664 +/* { dg-add-options arm_neon } */
36665  
36666  #include "arm_neon.h"
36667  
36668 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c
36669 --- a/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c   2007-07-25 14:28:31.000000000 +0200
36670 +++ b/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c   2010-01-25 09:50:29.345686441 +0100
36671 @@ -3,7 +3,8 @@
36672  
36673  /* { dg-do assemble } */
36674  /* { dg-require-effective-target arm_neon_ok } */
36675 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36676 +/* { dg-options "-save-temps -O0" } */
36677 +/* { dg-add-options arm_neon } */
36678  
36679  #include "arm_neon.h"
36680  
36681 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c
36682 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c  2007-07-25 14:28:31.000000000 +0200
36683 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c  2010-01-25 09:50:29.345686441 +0100
36684 @@ -3,7 +3,8 @@
36685  
36686  /* { dg-do assemble } */
36687  /* { dg-require-effective-target arm_neon_ok } */
36688 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36689 +/* { dg-options "-save-temps -O0" } */
36690 +/* { dg-add-options arm_neon } */
36691  
36692  #include "arm_neon.h"
36693  
36694 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c
36695 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c  2007-07-25 14:28:31.000000000 +0200
36696 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c  2010-01-25 09:50:29.345686441 +0100
36697 @@ -3,7 +3,8 @@
36698  
36699  /* { dg-do assemble } */
36700  /* { dg-require-effective-target arm_neon_ok } */
36701 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36702 +/* { dg-options "-save-temps -O0" } */
36703 +/* { dg-add-options arm_neon } */
36704  
36705  #include "arm_neon.h"
36706  
36707 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c
36708 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c   2007-07-25 14:28:31.000000000 +0200
36709 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c   2010-01-25 09:50:29.345686441 +0100
36710 @@ -3,7 +3,8 @@
36711  
36712  /* { dg-do assemble } */
36713  /* { dg-require-effective-target arm_neon_ok } */
36714 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36715 +/* { dg-options "-save-temps -O0" } */
36716 +/* { dg-add-options arm_neon } */
36717  
36718  #include "arm_neon.h"
36719  
36720 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c
36721 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c  2007-07-25 14:28:31.000000000 +0200
36722 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c  2010-01-25 09:50:29.345686441 +0100
36723 @@ -3,7 +3,8 @@
36724  
36725  /* { dg-do assemble } */
36726  /* { dg-require-effective-target arm_neon_ok } */
36727 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36728 +/* { dg-options "-save-temps -O0" } */
36729 +/* { dg-add-options arm_neon } */
36730  
36731  #include "arm_neon.h"
36732  
36733 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c
36734 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c  2007-07-25 14:28:31.000000000 +0200
36735 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c  2010-01-25 09:50:29.345686441 +0100
36736 @@ -3,7 +3,8 @@
36737  
36738  /* { dg-do assemble } */
36739  /* { dg-require-effective-target arm_neon_ok } */
36740 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36741 +/* { dg-options "-save-temps -O0" } */
36742 +/* { dg-add-options arm_neon } */
36743  
36744  #include "arm_neon.h"
36745  
36746 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c
36747 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c  2007-07-25 14:28:31.000000000 +0200
36748 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c  2010-01-25 09:50:29.345686441 +0100
36749 @@ -3,7 +3,8 @@
36750  
36751  /* { dg-do assemble } */
36752  /* { dg-require-effective-target arm_neon_ok } */
36753 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36754 +/* { dg-options "-save-temps -O0" } */
36755 +/* { dg-add-options arm_neon } */
36756  
36757  #include "arm_neon.h"
36758  
36759 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c
36760 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c   2007-07-25 14:28:31.000000000 +0200
36761 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c   2010-01-25 09:50:29.345686441 +0100
36762 @@ -3,7 +3,8 @@
36763  
36764  /* { dg-do assemble } */
36765  /* { dg-require-effective-target arm_neon_ok } */
36766 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36767 +/* { dg-options "-save-temps -O0" } */
36768 +/* { dg-add-options arm_neon } */
36769  
36770  #include "arm_neon.h"
36771  
36772 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c
36773 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c  2007-07-25 14:28:31.000000000 +0200
36774 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c  2010-01-25 09:50:29.345686441 +0100
36775 @@ -3,7 +3,8 @@
36776  
36777  /* { dg-do assemble } */
36778  /* { dg-require-effective-target arm_neon_ok } */
36779 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36780 +/* { dg-options "-save-temps -O0" } */
36781 +/* { dg-add-options arm_neon } */
36782  
36783  #include "arm_neon.h"
36784  
36785 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c
36786 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c  2007-07-25 14:28:31.000000000 +0200
36787 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c  2010-01-25 09:50:29.345686441 +0100
36788 @@ -3,7 +3,8 @@
36789  
36790  /* { dg-do assemble } */
36791  /* { dg-require-effective-target arm_neon_ok } */
36792 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36793 +/* { dg-options "-save-temps -O0" } */
36794 +/* { dg-add-options arm_neon } */
36795  
36796  #include "arm_neon.h"
36797  
36798 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c
36799 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c  2007-07-25 14:28:31.000000000 +0200
36800 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c  2010-01-25 09:50:29.345686441 +0100
36801 @@ -3,7 +3,8 @@
36802  
36803  /* { dg-do assemble } */
36804  /* { dg-require-effective-target arm_neon_ok } */
36805 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36806 +/* { dg-options "-save-temps -O0" } */
36807 +/* { dg-add-options arm_neon } */
36808  
36809  #include "arm_neon.h"
36810  
36811 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c
36812 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c   2007-07-25 14:28:31.000000000 +0200
36813 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c   2010-01-25 09:50:29.345686441 +0100
36814 @@ -3,7 +3,8 @@
36815  
36816  /* { dg-do assemble } */
36817  /* { dg-require-effective-target arm_neon_ok } */
36818 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36819 +/* { dg-options "-save-temps -O0" } */
36820 +/* { dg-add-options arm_neon } */
36821  
36822  #include "arm_neon.h"
36823  
36824 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c
36825 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c     2007-07-25 14:28:31.000000000 +0200
36826 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c     2010-01-25 09:50:29.345686441 +0100
36827 @@ -3,7 +3,8 @@
36828  
36829  /* { dg-do assemble } */
36830  /* { dg-require-effective-target arm_neon_ok } */
36831 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36832 +/* { dg-options "-save-temps -O0" } */
36833 +/* { dg-add-options arm_neon } */
36834  
36835  #include "arm_neon.h"
36836  
36837 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c b/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c
36838 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c     2007-07-25 14:28:31.000000000 +0200
36839 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c     2010-01-25 09:50:29.345686441 +0100
36840 @@ -3,7 +3,8 @@
36841  
36842  /* { dg-do assemble } */
36843  /* { dg-require-effective-target arm_neon_ok } */
36844 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36845 +/* { dg-options "-save-temps -O0" } */
36846 +/* { dg-add-options arm_neon } */
36847  
36848  #include "arm_neon.h"
36849  
36850 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c b/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c
36851 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c      2007-07-25 14:28:31.000000000 +0200
36852 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c      2010-01-25 09:50:29.345686441 +0100
36853 @@ -3,7 +3,8 @@
36854  
36855  /* { dg-do assemble } */
36856  /* { dg-require-effective-target arm_neon_ok } */
36857 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36858 +/* { dg-options "-save-temps -O0" } */
36859 +/* { dg-add-options arm_neon } */
36860  
36861  #include "arm_neon.h"
36862  
36863 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c
36864 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c     2007-07-25 14:28:31.000000000 +0200
36865 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c     2010-01-25 09:50:29.345686441 +0100
36866 @@ -3,7 +3,8 @@
36867  
36868  /* { dg-do assemble } */
36869  /* { dg-require-effective-target arm_neon_ok } */
36870 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36871 +/* { dg-options "-save-temps -O0" } */
36872 +/* { dg-add-options arm_neon } */
36873  
36874  #include "arm_neon.h"
36875  
36876 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c
36877 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c     2007-07-25 14:28:31.000000000 +0200
36878 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c     2010-01-25 09:50:29.345686441 +0100
36879 @@ -3,7 +3,8 @@
36880  
36881  /* { dg-do assemble } */
36882  /* { dg-require-effective-target arm_neon_ok } */
36883 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36884 +/* { dg-options "-save-temps -O0" } */
36885 +/* { dg-add-options arm_neon } */
36886  
36887  #include "arm_neon.h"
36888  
36889 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c
36890 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c     2007-07-25 14:28:31.000000000 +0200
36891 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c     2010-01-25 09:50:29.345686441 +0100
36892 @@ -3,7 +3,8 @@
36893  
36894  /* { dg-do assemble } */
36895  /* { dg-require-effective-target arm_neon_ok } */
36896 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36897 +/* { dg-options "-save-temps -O0" } */
36898 +/* { dg-add-options arm_neon } */
36899  
36900  #include "arm_neon.h"
36901  
36902 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c
36903 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c      2007-07-25 14:28:31.000000000 +0200
36904 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c      2010-01-25 09:50:29.345686441 +0100
36905 @@ -3,7 +3,8 @@
36906  
36907  /* { dg-do assemble } */
36908  /* { dg-require-effective-target arm_neon_ok } */
36909 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36910 +/* { dg-options "-save-temps -O0" } */
36911 +/* { dg-add-options arm_neon } */
36912  
36913  #include "arm_neon.h"
36914  
36915 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c
36916 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c     2007-07-25 14:28:31.000000000 +0200
36917 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c     2010-01-25 09:50:29.345686441 +0100
36918 @@ -3,7 +3,8 @@
36919  
36920  /* { dg-do assemble } */
36921  /* { dg-require-effective-target arm_neon_ok } */
36922 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36923 +/* { dg-options "-save-temps -O0" } */
36924 +/* { dg-add-options arm_neon } */
36925  
36926  #include "arm_neon.h"
36927  
36928 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c
36929 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c     2007-07-25 14:28:31.000000000 +0200
36930 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c     2010-01-25 09:50:29.345686441 +0100
36931 @@ -3,7 +3,8 @@
36932  
36933  /* { dg-do assemble } */
36934  /* { dg-require-effective-target arm_neon_ok } */
36935 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36936 +/* { dg-options "-save-temps -O0" } */
36937 +/* { dg-add-options arm_neon } */
36938  
36939  #include "arm_neon.h"
36940  
36941 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c
36942 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c     2007-07-25 14:28:31.000000000 +0200
36943 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c     2010-01-25 09:50:29.345686441 +0100
36944 @@ -3,7 +3,8 @@
36945  
36946  /* { dg-do assemble } */
36947  /* { dg-require-effective-target arm_neon_ok } */
36948 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36949 +/* { dg-options "-save-temps -O0" } */
36950 +/* { dg-add-options arm_neon } */
36951  
36952  #include "arm_neon.h"
36953  
36954 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c
36955 --- a/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c      2007-07-25 14:28:31.000000000 +0200
36956 +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c      2010-01-25 09:50:29.345686441 +0100
36957 @@ -3,7 +3,8 @@
36958  
36959  /* { dg-do assemble } */
36960  /* { dg-require-effective-target arm_neon_ok } */
36961 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36962 +/* { dg-options "-save-temps -O0" } */
36963 +/* { dg-add-options arm_neon } */
36964  
36965  #include "arm_neon.h"
36966  
36967 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c
36968 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c 2007-07-25 14:28:31.000000000 +0200
36969 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c 2010-01-25 09:50:29.345686441 +0100
36970 @@ -3,7 +3,8 @@
36971  
36972  /* { dg-do assemble } */
36973  /* { dg-require-effective-target arm_neon_ok } */
36974 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36975 +/* { dg-options "-save-temps -O0" } */
36976 +/* { dg-add-options arm_neon } */
36977  
36978  #include "arm_neon.h"
36979  
36980 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c
36981 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c 2007-07-25 14:28:31.000000000 +0200
36982 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c 2010-01-25 09:50:29.345686441 +0100
36983 @@ -3,7 +3,8 @@
36984  
36985  /* { dg-do assemble } */
36986  /* { dg-require-effective-target arm_neon_ok } */
36987 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
36988 +/* { dg-options "-save-temps -O0" } */
36989 +/* { dg-add-options arm_neon } */
36990  
36991  #include "arm_neon.h"
36992  
36993 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c
36994 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c  2007-07-25 14:28:31.000000000 +0200
36995 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c  2010-01-25 09:50:29.345686441 +0100
36996 @@ -3,7 +3,8 @@
36997  
36998  /* { dg-do assemble } */
36999  /* { dg-require-effective-target arm_neon_ok } */
37000 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37001 +/* { dg-options "-save-temps -O0" } */
37002 +/* { dg-add-options arm_neon } */
37003  
37004  #include "arm_neon.h"
37005  
37006 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c
37007 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c 2007-07-25 14:28:31.000000000 +0200
37008 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c 2010-01-25 09:50:29.345686441 +0100
37009 @@ -3,7 +3,8 @@
37010  
37011  /* { dg-do assemble } */
37012  /* { dg-require-effective-target arm_neon_ok } */
37013 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37014 +/* { dg-options "-save-temps -O0" } */
37015 +/* { dg-add-options arm_neon } */
37016  
37017  #include "arm_neon.h"
37018  
37019 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c
37020 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c 2007-07-25 14:28:31.000000000 +0200
37021 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c 2010-01-25 09:50:29.345686441 +0100
37022 @@ -3,7 +3,8 @@
37023  
37024  /* { dg-do assemble } */
37025  /* { dg-require-effective-target arm_neon_ok } */
37026 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37027 +/* { dg-options "-save-temps -O0" } */
37028 +/* { dg-add-options arm_neon } */
37029  
37030  #include "arm_neon.h"
37031  
37032 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c
37033 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c 2007-07-25 14:28:31.000000000 +0200
37034 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c 2010-01-25 09:50:29.345686441 +0100
37035 @@ -3,7 +3,8 @@
37036  
37037  /* { dg-do assemble } */
37038  /* { dg-require-effective-target arm_neon_ok } */
37039 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37040 +/* { dg-options "-save-temps -O0" } */
37041 +/* { dg-add-options arm_neon } */
37042  
37043  #include "arm_neon.h"
37044  
37045 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c
37046 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c  2007-07-25 14:28:31.000000000 +0200
37047 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c  2010-01-25 09:50:29.345686441 +0100
37048 @@ -3,7 +3,8 @@
37049  
37050  /* { dg-do assemble } */
37051  /* { dg-require-effective-target arm_neon_ok } */
37052 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37053 +/* { dg-options "-save-temps -O0" } */
37054 +/* { dg-add-options arm_neon } */
37055  
37056  #include "arm_neon.h"
37057  
37058 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c
37059 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c 2007-07-25 14:28:31.000000000 +0200
37060 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c 2010-01-25 09:50:29.345686441 +0100
37061 @@ -3,7 +3,8 @@
37062  
37063  /* { dg-do assemble } */
37064  /* { dg-require-effective-target arm_neon_ok } */
37065 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37066 +/* { dg-options "-save-temps -O0" } */
37067 +/* { dg-add-options arm_neon } */
37068  
37069  #include "arm_neon.h"
37070  
37071 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c
37072 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c 2007-07-25 14:28:31.000000000 +0200
37073 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c 2010-01-25 09:50:29.345686441 +0100
37074 @@ -3,7 +3,8 @@
37075  
37076  /* { dg-do assemble } */
37077  /* { dg-require-effective-target arm_neon_ok } */
37078 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37079 +/* { dg-options "-save-temps -O0" } */
37080 +/* { dg-add-options arm_neon } */
37081  
37082  #include "arm_neon.h"
37083  
37084 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c
37085 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c 2007-07-25 14:28:31.000000000 +0200
37086 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c 2010-01-25 09:50:29.355686315 +0100
37087 @@ -3,7 +3,8 @@
37088  
37089  /* { dg-do assemble } */
37090  /* { dg-require-effective-target arm_neon_ok } */
37091 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37092 +/* { dg-options "-save-temps -O0" } */
37093 +/* { dg-add-options arm_neon } */
37094  
37095  #include "arm_neon.h"
37096  
37097 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c
37098 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c  2007-07-25 14:28:31.000000000 +0200
37099 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c  2010-01-25 09:50:29.355686315 +0100
37100 @@ -3,7 +3,8 @@
37101  
37102  /* { dg-do assemble } */
37103  /* { dg-require-effective-target arm_neon_ok } */
37104 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37105 +/* { dg-options "-save-temps -O0" } */
37106 +/* { dg-add-options arm_neon } */
37107  
37108  #include "arm_neon.h"
37109  
37110 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c
37111 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c    2007-07-25 14:28:31.000000000 +0200
37112 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c    2010-01-25 09:50:29.355686315 +0100
37113 @@ -3,7 +3,8 @@
37114  
37115  /* { dg-do assemble } */
37116  /* { dg-require-effective-target arm_neon_ok } */
37117 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37118 +/* { dg-options "-save-temps -O0" } */
37119 +/* { dg-add-options arm_neon } */
37120  
37121  #include "arm_neon.h"
37122  
37123 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c
37124 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c    2007-07-25 14:28:31.000000000 +0200
37125 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c    2010-01-25 09:50:29.355686315 +0100
37126 @@ -3,7 +3,8 @@
37127  
37128  /* { dg-do assemble } */
37129  /* { dg-require-effective-target arm_neon_ok } */
37130 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37131 +/* { dg-options "-save-temps -O0" } */
37132 +/* { dg-add-options arm_neon } */
37133  
37134  #include "arm_neon.h"
37135  
37136 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c
37137 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c     2007-07-25 14:28:31.000000000 +0200
37138 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c     2010-01-25 09:50:29.355686315 +0100
37139 @@ -3,7 +3,8 @@
37140  
37141  /* { dg-do assemble } */
37142  /* { dg-require-effective-target arm_neon_ok } */
37143 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37144 +/* { dg-options "-save-temps -O0" } */
37145 +/* { dg-add-options arm_neon } */
37146  
37147  #include "arm_neon.h"
37148  
37149 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c
37150 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c    2007-07-25 14:28:31.000000000 +0200
37151 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c    2010-01-25 09:50:29.355686315 +0100
37152 @@ -3,7 +3,8 @@
37153  
37154  /* { dg-do assemble } */
37155  /* { dg-require-effective-target arm_neon_ok } */
37156 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37157 +/* { dg-options "-save-temps -O0" } */
37158 +/* { dg-add-options arm_neon } */
37159  
37160  #include "arm_neon.h"
37161  
37162 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c
37163 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c    2007-07-25 14:28:31.000000000 +0200
37164 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c    2010-01-25 09:50:29.355686315 +0100
37165 @@ -3,7 +3,8 @@
37166  
37167  /* { dg-do assemble } */
37168  /* { dg-require-effective-target arm_neon_ok } */
37169 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37170 +/* { dg-options "-save-temps -O0" } */
37171 +/* { dg-add-options arm_neon } */
37172  
37173  #include "arm_neon.h"
37174  
37175 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c
37176 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c    2007-07-25 14:28:31.000000000 +0200
37177 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c    2010-01-25 09:50:29.355686315 +0100
37178 @@ -3,7 +3,8 @@
37179  
37180  /* { dg-do assemble } */
37181  /* { dg-require-effective-target arm_neon_ok } */
37182 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37183 +/* { dg-options "-save-temps -O0" } */
37184 +/* { dg-add-options arm_neon } */
37185  
37186  #include "arm_neon.h"
37187  
37188 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c
37189 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c     2007-07-25 14:28:31.000000000 +0200
37190 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c     2010-01-25 09:50:29.355686315 +0100
37191 @@ -3,7 +3,8 @@
37192  
37193  /* { dg-do assemble } */
37194  /* { dg-require-effective-target arm_neon_ok } */
37195 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37196 +/* { dg-options "-save-temps -O0" } */
37197 +/* { dg-add-options arm_neon } */
37198  
37199  #include "arm_neon.h"
37200  
37201 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c
37202 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c    2007-07-25 14:28:31.000000000 +0200
37203 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c    2010-01-25 09:50:29.355686315 +0100
37204 @@ -3,7 +3,8 @@
37205  
37206  /* { dg-do assemble } */
37207  /* { dg-require-effective-target arm_neon_ok } */
37208 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37209 +/* { dg-options "-save-temps -O0" } */
37210 +/* { dg-add-options arm_neon } */
37211  
37212  #include "arm_neon.h"
37213  
37214 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c
37215 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c    2007-07-25 14:28:31.000000000 +0200
37216 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c    2010-01-25 09:50:29.355686315 +0100
37217 @@ -3,7 +3,8 @@
37218  
37219  /* { dg-do assemble } */
37220  /* { dg-require-effective-target arm_neon_ok } */
37221 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37222 +/* { dg-options "-save-temps -O0" } */
37223 +/* { dg-add-options arm_neon } */
37224  
37225  #include "arm_neon.h"
37226  
37227 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c
37228 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c    2007-07-25 14:28:31.000000000 +0200
37229 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c    2010-01-25 09:50:29.355686315 +0100
37230 @@ -3,7 +3,8 @@
37231  
37232  /* { dg-do assemble } */
37233  /* { dg-require-effective-target arm_neon_ok } */
37234 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37235 +/* { dg-options "-save-temps -O0" } */
37236 +/* { dg-add-options arm_neon } */
37237  
37238  #include "arm_neon.h"
37239  
37240 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c
37241 --- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c     2007-07-25 14:28:31.000000000 +0200
37242 +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c     2010-01-25 09:50:29.355686315 +0100
37243 @@ -3,7 +3,8 @@
37244  
37245  /* { dg-do assemble } */
37246  /* { dg-require-effective-target arm_neon_ok } */
37247 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37248 +/* { dg-options "-save-temps -O0" } */
37249 +/* { dg-add-options arm_neon } */
37250  
37251  #include "arm_neon.h"
37252  
37253 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQs16.c b/gcc/testsuite/gcc.target/arm/neon/veorQs16.c
37254 --- a/gcc/testsuite/gcc.target/arm/neon/veorQs16.c      2007-07-25 14:28:31.000000000 +0200
37255 +++ b/gcc/testsuite/gcc.target/arm/neon/veorQs16.c      2010-01-25 09:50:29.355686315 +0100
37256 @@ -3,7 +3,8 @@
37257  
37258  /* { dg-do assemble } */
37259  /* { dg-require-effective-target arm_neon_ok } */
37260 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37261 +/* { dg-options "-save-temps -O0" } */
37262 +/* { dg-add-options arm_neon } */
37263  
37264  #include "arm_neon.h"
37265  
37266 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQs32.c b/gcc/testsuite/gcc.target/arm/neon/veorQs32.c
37267 --- a/gcc/testsuite/gcc.target/arm/neon/veorQs32.c      2007-07-25 14:28:31.000000000 +0200
37268 +++ b/gcc/testsuite/gcc.target/arm/neon/veorQs32.c      2010-01-25 09:50:29.355686315 +0100
37269 @@ -3,7 +3,8 @@
37270  
37271  /* { dg-do assemble } */
37272  /* { dg-require-effective-target arm_neon_ok } */
37273 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37274 +/* { dg-options "-save-temps -O0" } */
37275 +/* { dg-add-options arm_neon } */
37276  
37277  #include "arm_neon.h"
37278  
37279 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQs64.c b/gcc/testsuite/gcc.target/arm/neon/veorQs64.c
37280 --- a/gcc/testsuite/gcc.target/arm/neon/veorQs64.c      2007-07-25 14:28:31.000000000 +0200
37281 +++ b/gcc/testsuite/gcc.target/arm/neon/veorQs64.c      2010-01-25 09:50:29.355686315 +0100
37282 @@ -3,7 +3,8 @@
37283  
37284  /* { dg-do assemble } */
37285  /* { dg-require-effective-target arm_neon_ok } */
37286 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37287 +/* { dg-options "-save-temps -O0" } */
37288 +/* { dg-add-options arm_neon } */
37289  
37290  #include "arm_neon.h"
37291  
37292 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQs8.c b/gcc/testsuite/gcc.target/arm/neon/veorQs8.c
37293 --- a/gcc/testsuite/gcc.target/arm/neon/veorQs8.c       2007-07-25 14:28:31.000000000 +0200
37294 +++ b/gcc/testsuite/gcc.target/arm/neon/veorQs8.c       2010-01-25 09:50:29.355686315 +0100
37295 @@ -3,7 +3,8 @@
37296  
37297  /* { dg-do assemble } */
37298  /* { dg-require-effective-target arm_neon_ok } */
37299 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37300 +/* { dg-options "-save-temps -O0" } */
37301 +/* { dg-add-options arm_neon } */
37302  
37303  #include "arm_neon.h"
37304  
37305 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQu16.c b/gcc/testsuite/gcc.target/arm/neon/veorQu16.c
37306 --- a/gcc/testsuite/gcc.target/arm/neon/veorQu16.c      2007-07-25 14:28:31.000000000 +0200
37307 +++ b/gcc/testsuite/gcc.target/arm/neon/veorQu16.c      2010-01-25 09:50:29.355686315 +0100
37308 @@ -3,7 +3,8 @@
37309  
37310  /* { dg-do assemble } */
37311  /* { dg-require-effective-target arm_neon_ok } */
37312 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37313 +/* { dg-options "-save-temps -O0" } */
37314 +/* { dg-add-options arm_neon } */
37315  
37316  #include "arm_neon.h"
37317  
37318 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQu32.c b/gcc/testsuite/gcc.target/arm/neon/veorQu32.c
37319 --- a/gcc/testsuite/gcc.target/arm/neon/veorQu32.c      2007-07-25 14:28:31.000000000 +0200
37320 +++ b/gcc/testsuite/gcc.target/arm/neon/veorQu32.c      2010-01-25 09:50:29.355686315 +0100
37321 @@ -3,7 +3,8 @@
37322  
37323  /* { dg-do assemble } */
37324  /* { dg-require-effective-target arm_neon_ok } */
37325 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37326 +/* { dg-options "-save-temps -O0" } */
37327 +/* { dg-add-options arm_neon } */
37328  
37329  #include "arm_neon.h"
37330  
37331 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQu64.c b/gcc/testsuite/gcc.target/arm/neon/veorQu64.c
37332 --- a/gcc/testsuite/gcc.target/arm/neon/veorQu64.c      2007-07-25 14:28:31.000000000 +0200
37333 +++ b/gcc/testsuite/gcc.target/arm/neon/veorQu64.c      2010-01-25 09:50:29.355686315 +0100
37334 @@ -3,7 +3,8 @@
37335  
37336  /* { dg-do assemble } */
37337  /* { dg-require-effective-target arm_neon_ok } */
37338 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37339 +/* { dg-options "-save-temps -O0" } */
37340 +/* { dg-add-options arm_neon } */
37341  
37342  #include "arm_neon.h"
37343  
37344 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQu8.c b/gcc/testsuite/gcc.target/arm/neon/veorQu8.c
37345 --- a/gcc/testsuite/gcc.target/arm/neon/veorQu8.c       2007-07-25 14:28:31.000000000 +0200
37346 +++ b/gcc/testsuite/gcc.target/arm/neon/veorQu8.c       2010-01-25 09:50:29.355686315 +0100
37347 @@ -3,7 +3,8 @@
37348  
37349  /* { dg-do assemble } */
37350  /* { dg-require-effective-target arm_neon_ok } */
37351 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37352 +/* { dg-options "-save-temps -O0" } */
37353 +/* { dg-add-options arm_neon } */
37354  
37355  #include "arm_neon.h"
37356  
37357 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veors16.c b/gcc/testsuite/gcc.target/arm/neon/veors16.c
37358 --- a/gcc/testsuite/gcc.target/arm/neon/veors16.c       2007-07-25 14:28:31.000000000 +0200
37359 +++ b/gcc/testsuite/gcc.target/arm/neon/veors16.c       2010-01-25 09:50:29.355686315 +0100
37360 @@ -3,7 +3,8 @@
37361  
37362  /* { dg-do assemble } */
37363  /* { dg-require-effective-target arm_neon_ok } */
37364 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37365 +/* { dg-options "-save-temps -O0" } */
37366 +/* { dg-add-options arm_neon } */
37367  
37368  #include "arm_neon.h"
37369  
37370 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veors32.c b/gcc/testsuite/gcc.target/arm/neon/veors32.c
37371 --- a/gcc/testsuite/gcc.target/arm/neon/veors32.c       2007-07-25 14:28:31.000000000 +0200
37372 +++ b/gcc/testsuite/gcc.target/arm/neon/veors32.c       2010-01-25 09:50:29.355686315 +0100
37373 @@ -3,7 +3,8 @@
37374  
37375  /* { dg-do assemble } */
37376  /* { dg-require-effective-target arm_neon_ok } */
37377 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37378 +/* { dg-options "-save-temps -O0" } */
37379 +/* { dg-add-options arm_neon } */
37380  
37381  #include "arm_neon.h"
37382  
37383 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veors64.c b/gcc/testsuite/gcc.target/arm/neon/veors64.c
37384 --- a/gcc/testsuite/gcc.target/arm/neon/veors64.c       2007-07-25 14:28:31.000000000 +0200
37385 +++ b/gcc/testsuite/gcc.target/arm/neon/veors64.c       2010-01-25 09:50:29.355686315 +0100
37386 @@ -3,7 +3,8 @@
37387  
37388  /* { dg-do assemble } */
37389  /* { dg-require-effective-target arm_neon_ok } */
37390 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37391 +/* { dg-options "-save-temps -O0" } */
37392 +/* { dg-add-options arm_neon } */
37393  
37394  #include "arm_neon.h"
37395  
37396 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veors8.c b/gcc/testsuite/gcc.target/arm/neon/veors8.c
37397 --- a/gcc/testsuite/gcc.target/arm/neon/veors8.c        2007-07-25 14:28:31.000000000 +0200
37398 +++ b/gcc/testsuite/gcc.target/arm/neon/veors8.c        2010-01-25 09:50:29.355686315 +0100
37399 @@ -3,7 +3,8 @@
37400  
37401  /* { dg-do assemble } */
37402  /* { dg-require-effective-target arm_neon_ok } */
37403 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37404 +/* { dg-options "-save-temps -O0" } */
37405 +/* { dg-add-options arm_neon } */
37406  
37407  #include "arm_neon.h"
37408  
37409 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veoru16.c b/gcc/testsuite/gcc.target/arm/neon/veoru16.c
37410 --- a/gcc/testsuite/gcc.target/arm/neon/veoru16.c       2007-07-25 14:28:31.000000000 +0200
37411 +++ b/gcc/testsuite/gcc.target/arm/neon/veoru16.c       2010-01-25 09:50:29.355686315 +0100
37412 @@ -3,7 +3,8 @@
37413  
37414  /* { dg-do assemble } */
37415  /* { dg-require-effective-target arm_neon_ok } */
37416 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37417 +/* { dg-options "-save-temps -O0" } */
37418 +/* { dg-add-options arm_neon } */
37419  
37420  #include "arm_neon.h"
37421  
37422 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veoru32.c b/gcc/testsuite/gcc.target/arm/neon/veoru32.c
37423 --- a/gcc/testsuite/gcc.target/arm/neon/veoru32.c       2007-07-25 14:28:31.000000000 +0200
37424 +++ b/gcc/testsuite/gcc.target/arm/neon/veoru32.c       2010-01-25 09:50:29.355686315 +0100
37425 @@ -3,7 +3,8 @@
37426  
37427  /* { dg-do assemble } */
37428  /* { dg-require-effective-target arm_neon_ok } */
37429 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37430 +/* { dg-options "-save-temps -O0" } */
37431 +/* { dg-add-options arm_neon } */
37432  
37433  #include "arm_neon.h"
37434  
37435 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veoru64.c b/gcc/testsuite/gcc.target/arm/neon/veoru64.c
37436 --- a/gcc/testsuite/gcc.target/arm/neon/veoru64.c       2007-07-25 14:28:31.000000000 +0200
37437 +++ b/gcc/testsuite/gcc.target/arm/neon/veoru64.c       2010-01-25 09:50:29.355686315 +0100
37438 @@ -3,7 +3,8 @@
37439  
37440  /* { dg-do assemble } */
37441  /* { dg-require-effective-target arm_neon_ok } */
37442 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37443 +/* { dg-options "-save-temps -O0" } */
37444 +/* { dg-add-options arm_neon } */
37445  
37446  #include "arm_neon.h"
37447  
37448 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veoru8.c b/gcc/testsuite/gcc.target/arm/neon/veoru8.c
37449 --- a/gcc/testsuite/gcc.target/arm/neon/veoru8.c        2007-07-25 14:28:31.000000000 +0200
37450 +++ b/gcc/testsuite/gcc.target/arm/neon/veoru8.c        2010-01-25 09:50:29.355686315 +0100
37451 @@ -3,7 +3,8 @@
37452  
37453  /* { dg-do assemble } */
37454  /* { dg-require-effective-target arm_neon_ok } */
37455 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37456 +/* { dg-options "-save-temps -O0" } */
37457 +/* { dg-add-options arm_neon } */
37458  
37459  #include "arm_neon.h"
37460  
37461 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextf32.c b/gcc/testsuite/gcc.target/arm/neon/vextf32.c
37462 --- a/gcc/testsuite/gcc.target/arm/neon/vextf32.c       2007-07-25 14:28:31.000000000 +0200
37463 +++ b/gcc/testsuite/gcc.target/arm/neon/vextf32.c       2010-01-25 09:50:29.355686315 +0100
37464 @@ -3,7 +3,8 @@
37465  
37466  /* { dg-do assemble } */
37467  /* { dg-require-effective-target arm_neon_ok } */
37468 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37469 +/* { dg-options "-save-temps -O0" } */
37470 +/* { dg-add-options arm_neon } */
37471  
37472  #include "arm_neon.h"
37473  
37474 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextp16.c b/gcc/testsuite/gcc.target/arm/neon/vextp16.c
37475 --- a/gcc/testsuite/gcc.target/arm/neon/vextp16.c       2007-07-25 14:28:31.000000000 +0200
37476 +++ b/gcc/testsuite/gcc.target/arm/neon/vextp16.c       2010-01-25 09:50:29.355686315 +0100
37477 @@ -3,7 +3,8 @@
37478  
37479  /* { dg-do assemble } */
37480  /* { dg-require-effective-target arm_neon_ok } */
37481 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37482 +/* { dg-options "-save-temps -O0" } */
37483 +/* { dg-add-options arm_neon } */
37484  
37485  #include "arm_neon.h"
37486  
37487 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextp8.c b/gcc/testsuite/gcc.target/arm/neon/vextp8.c
37488 --- a/gcc/testsuite/gcc.target/arm/neon/vextp8.c        2007-07-25 14:28:31.000000000 +0200
37489 +++ b/gcc/testsuite/gcc.target/arm/neon/vextp8.c        2010-01-25 09:50:29.355686315 +0100
37490 @@ -3,7 +3,8 @@
37491  
37492  /* { dg-do assemble } */
37493  /* { dg-require-effective-target arm_neon_ok } */
37494 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37495 +/* { dg-options "-save-temps -O0" } */
37496 +/* { dg-add-options arm_neon } */
37497  
37498  #include "arm_neon.h"
37499  
37500 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQf32.c b/gcc/testsuite/gcc.target/arm/neon/vextQf32.c
37501 --- a/gcc/testsuite/gcc.target/arm/neon/vextQf32.c      2007-07-25 14:28:31.000000000 +0200
37502 +++ b/gcc/testsuite/gcc.target/arm/neon/vextQf32.c      2010-01-25 09:50:29.355686315 +0100
37503 @@ -3,7 +3,8 @@
37504  
37505  /* { dg-do assemble } */
37506  /* { dg-require-effective-target arm_neon_ok } */
37507 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37508 +/* { dg-options "-save-temps -O0" } */
37509 +/* { dg-add-options arm_neon } */
37510  
37511  #include "arm_neon.h"
37512  
37513 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQp16.c b/gcc/testsuite/gcc.target/arm/neon/vextQp16.c
37514 --- a/gcc/testsuite/gcc.target/arm/neon/vextQp16.c      2007-07-25 14:28:31.000000000 +0200
37515 +++ b/gcc/testsuite/gcc.target/arm/neon/vextQp16.c      2010-01-25 09:50:29.355686315 +0100
37516 @@ -3,7 +3,8 @@
37517  
37518  /* { dg-do assemble } */
37519  /* { dg-require-effective-target arm_neon_ok } */
37520 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37521 +/* { dg-options "-save-temps -O0" } */
37522 +/* { dg-add-options arm_neon } */
37523  
37524  #include "arm_neon.h"
37525  
37526 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQp8.c b/gcc/testsuite/gcc.target/arm/neon/vextQp8.c
37527 --- a/gcc/testsuite/gcc.target/arm/neon/vextQp8.c       2007-07-25 14:28:31.000000000 +0200
37528 +++ b/gcc/testsuite/gcc.target/arm/neon/vextQp8.c       2010-01-25 09:50:29.355686315 +0100
37529 @@ -3,7 +3,8 @@
37530  
37531  /* { dg-do assemble } */
37532  /* { dg-require-effective-target arm_neon_ok } */
37533 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37534 +/* { dg-options "-save-temps -O0" } */
37535 +/* { dg-add-options arm_neon } */
37536  
37537  #include "arm_neon.h"
37538  
37539 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQs16.c b/gcc/testsuite/gcc.target/arm/neon/vextQs16.c
37540 --- a/gcc/testsuite/gcc.target/arm/neon/vextQs16.c      2007-07-25 14:28:31.000000000 +0200
37541 +++ b/gcc/testsuite/gcc.target/arm/neon/vextQs16.c      2010-01-25 09:50:29.355686315 +0100
37542 @@ -3,7 +3,8 @@
37543  
37544  /* { dg-do assemble } */
37545  /* { dg-require-effective-target arm_neon_ok } */
37546 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37547 +/* { dg-options "-save-temps -O0" } */
37548 +/* { dg-add-options arm_neon } */
37549  
37550  #include "arm_neon.h"
37551  
37552 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQs32.c b/gcc/testsuite/gcc.target/arm/neon/vextQs32.c
37553 --- a/gcc/testsuite/gcc.target/arm/neon/vextQs32.c      2007-07-25 14:28:31.000000000 +0200
37554 +++ b/gcc/testsuite/gcc.target/arm/neon/vextQs32.c      2010-01-25 09:50:29.355686315 +0100
37555 @@ -3,7 +3,8 @@
37556  
37557  /* { dg-do assemble } */
37558  /* { dg-require-effective-target arm_neon_ok } */
37559 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37560 +/* { dg-options "-save-temps -O0" } */
37561 +/* { dg-add-options arm_neon } */
37562  
37563  #include "arm_neon.h"
37564  
37565 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQs64.c b/gcc/testsuite/gcc.target/arm/neon/vextQs64.c
37566 --- a/gcc/testsuite/gcc.target/arm/neon/vextQs64.c      2007-07-25 14:28:31.000000000 +0200
37567 +++ b/gcc/testsuite/gcc.target/arm/neon/vextQs64.c      2010-01-25 09:50:29.355686315 +0100
37568 @@ -3,7 +3,8 @@
37569  
37570  /* { dg-do assemble } */
37571  /* { dg-require-effective-target arm_neon_ok } */
37572 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37573 +/* { dg-options "-save-temps -O0" } */
37574 +/* { dg-add-options arm_neon } */
37575  
37576  #include "arm_neon.h"
37577  
37578 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQs8.c b/gcc/testsuite/gcc.target/arm/neon/vextQs8.c
37579 --- a/gcc/testsuite/gcc.target/arm/neon/vextQs8.c       2007-07-25 14:28:31.000000000 +0200
37580 +++ b/gcc/testsuite/gcc.target/arm/neon/vextQs8.c       2010-01-25 09:50:29.355686315 +0100
37581 @@ -3,7 +3,8 @@
37582  
37583  /* { dg-do assemble } */
37584  /* { dg-require-effective-target arm_neon_ok } */
37585 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37586 +/* { dg-options "-save-temps -O0" } */
37587 +/* { dg-add-options arm_neon } */
37588  
37589  #include "arm_neon.h"
37590  
37591 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQu16.c b/gcc/testsuite/gcc.target/arm/neon/vextQu16.c
37592 --- a/gcc/testsuite/gcc.target/arm/neon/vextQu16.c      2007-07-25 14:28:31.000000000 +0200
37593 +++ b/gcc/testsuite/gcc.target/arm/neon/vextQu16.c      2010-01-25 09:50:29.355686315 +0100
37594 @@ -3,7 +3,8 @@
37595  
37596  /* { dg-do assemble } */
37597  /* { dg-require-effective-target arm_neon_ok } */
37598 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37599 +/* { dg-options "-save-temps -O0" } */
37600 +/* { dg-add-options arm_neon } */
37601  
37602  #include "arm_neon.h"
37603  
37604 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQu32.c b/gcc/testsuite/gcc.target/arm/neon/vextQu32.c
37605 --- a/gcc/testsuite/gcc.target/arm/neon/vextQu32.c      2007-07-25 14:28:31.000000000 +0200
37606 +++ b/gcc/testsuite/gcc.target/arm/neon/vextQu32.c      2010-01-25 09:50:29.355686315 +0100
37607 @@ -3,7 +3,8 @@
37608  
37609  /* { dg-do assemble } */
37610  /* { dg-require-effective-target arm_neon_ok } */
37611 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37612 +/* { dg-options "-save-temps -O0" } */
37613 +/* { dg-add-options arm_neon } */
37614  
37615  #include "arm_neon.h"
37616  
37617 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQu64.c b/gcc/testsuite/gcc.target/arm/neon/vextQu64.c
37618 --- a/gcc/testsuite/gcc.target/arm/neon/vextQu64.c      2007-07-25 14:28:31.000000000 +0200
37619 +++ b/gcc/testsuite/gcc.target/arm/neon/vextQu64.c      2010-01-25 09:50:29.355686315 +0100
37620 @@ -3,7 +3,8 @@
37621  
37622  /* { dg-do assemble } */
37623  /* { dg-require-effective-target arm_neon_ok } */
37624 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37625 +/* { dg-options "-save-temps -O0" } */
37626 +/* { dg-add-options arm_neon } */
37627  
37628  #include "arm_neon.h"
37629  
37630 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQu8.c b/gcc/testsuite/gcc.target/arm/neon/vextQu8.c
37631 --- a/gcc/testsuite/gcc.target/arm/neon/vextQu8.c       2007-07-25 14:28:31.000000000 +0200
37632 +++ b/gcc/testsuite/gcc.target/arm/neon/vextQu8.c       2010-01-25 09:50:29.355686315 +0100
37633 @@ -3,7 +3,8 @@
37634  
37635  /* { dg-do assemble } */
37636  /* { dg-require-effective-target arm_neon_ok } */
37637 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37638 +/* { dg-options "-save-temps -O0" } */
37639 +/* { dg-add-options arm_neon } */
37640  
37641  #include "arm_neon.h"
37642  
37643 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vexts16.c b/gcc/testsuite/gcc.target/arm/neon/vexts16.c
37644 --- a/gcc/testsuite/gcc.target/arm/neon/vexts16.c       2007-07-25 14:28:31.000000000 +0200
37645 +++ b/gcc/testsuite/gcc.target/arm/neon/vexts16.c       2010-01-25 09:50:29.355686315 +0100
37646 @@ -3,7 +3,8 @@
37647  
37648  /* { dg-do assemble } */
37649  /* { dg-require-effective-target arm_neon_ok } */
37650 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37651 +/* { dg-options "-save-temps -O0" } */
37652 +/* { dg-add-options arm_neon } */
37653  
37654  #include "arm_neon.h"
37655  
37656 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vexts32.c b/gcc/testsuite/gcc.target/arm/neon/vexts32.c
37657 --- a/gcc/testsuite/gcc.target/arm/neon/vexts32.c       2007-07-25 14:28:31.000000000 +0200
37658 +++ b/gcc/testsuite/gcc.target/arm/neon/vexts32.c       2010-01-25 09:50:29.355686315 +0100
37659 @@ -3,7 +3,8 @@
37660  
37661  /* { dg-do assemble } */
37662  /* { dg-require-effective-target arm_neon_ok } */
37663 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37664 +/* { dg-options "-save-temps -O0" } */
37665 +/* { dg-add-options arm_neon } */
37666  
37667  #include "arm_neon.h"
37668  
37669 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vexts64.c b/gcc/testsuite/gcc.target/arm/neon/vexts64.c
37670 --- a/gcc/testsuite/gcc.target/arm/neon/vexts64.c       2007-07-25 14:28:31.000000000 +0200
37671 +++ b/gcc/testsuite/gcc.target/arm/neon/vexts64.c       2010-01-25 09:50:29.355686315 +0100
37672 @@ -3,7 +3,8 @@
37673  
37674  /* { dg-do assemble } */
37675  /* { dg-require-effective-target arm_neon_ok } */
37676 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37677 +/* { dg-options "-save-temps -O0" } */
37678 +/* { dg-add-options arm_neon } */
37679  
37680  #include "arm_neon.h"
37681  
37682 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vexts8.c b/gcc/testsuite/gcc.target/arm/neon/vexts8.c
37683 --- a/gcc/testsuite/gcc.target/arm/neon/vexts8.c        2007-07-25 14:28:31.000000000 +0200
37684 +++ b/gcc/testsuite/gcc.target/arm/neon/vexts8.c        2010-01-25 09:50:29.355686315 +0100
37685 @@ -3,7 +3,8 @@
37686  
37687  /* { dg-do assemble } */
37688  /* { dg-require-effective-target arm_neon_ok } */
37689 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37690 +/* { dg-options "-save-temps -O0" } */
37691 +/* { dg-add-options arm_neon } */
37692  
37693  #include "arm_neon.h"
37694  
37695 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextu16.c b/gcc/testsuite/gcc.target/arm/neon/vextu16.c
37696 --- a/gcc/testsuite/gcc.target/arm/neon/vextu16.c       2007-07-25 14:28:31.000000000 +0200
37697 +++ b/gcc/testsuite/gcc.target/arm/neon/vextu16.c       2010-01-25 09:50:29.355686315 +0100
37698 @@ -3,7 +3,8 @@
37699  
37700  /* { dg-do assemble } */
37701  /* { dg-require-effective-target arm_neon_ok } */
37702 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37703 +/* { dg-options "-save-temps -O0" } */
37704 +/* { dg-add-options arm_neon } */
37705  
37706  #include "arm_neon.h"
37707  
37708 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextu32.c b/gcc/testsuite/gcc.target/arm/neon/vextu32.c
37709 --- a/gcc/testsuite/gcc.target/arm/neon/vextu32.c       2007-07-25 14:28:31.000000000 +0200
37710 +++ b/gcc/testsuite/gcc.target/arm/neon/vextu32.c       2010-01-25 09:50:29.355686315 +0100
37711 @@ -3,7 +3,8 @@
37712  
37713  /* { dg-do assemble } */
37714  /* { dg-require-effective-target arm_neon_ok } */
37715 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37716 +/* { dg-options "-save-temps -O0" } */
37717 +/* { dg-add-options arm_neon } */
37718  
37719  #include "arm_neon.h"
37720  
37721 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextu64.c b/gcc/testsuite/gcc.target/arm/neon/vextu64.c
37722 --- a/gcc/testsuite/gcc.target/arm/neon/vextu64.c       2007-07-25 14:28:31.000000000 +0200
37723 +++ b/gcc/testsuite/gcc.target/arm/neon/vextu64.c       2010-01-25 09:50:29.355686315 +0100
37724 @@ -3,7 +3,8 @@
37725  
37726  /* { dg-do assemble } */
37727  /* { dg-require-effective-target arm_neon_ok } */
37728 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37729 +/* { dg-options "-save-temps -O0" } */
37730 +/* { dg-add-options arm_neon } */
37731  
37732  #include "arm_neon.h"
37733  
37734 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextu8.c b/gcc/testsuite/gcc.target/arm/neon/vextu8.c
37735 --- a/gcc/testsuite/gcc.target/arm/neon/vextu8.c        2007-07-25 14:28:31.000000000 +0200
37736 +++ b/gcc/testsuite/gcc.target/arm/neon/vextu8.c        2010-01-25 09:50:29.355686315 +0100
37737 @@ -3,7 +3,8 @@
37738  
37739  /* { dg-do assemble } */
37740  /* { dg-require-effective-target arm_neon_ok } */
37741 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37742 +/* { dg-options "-save-temps -O0" } */
37743 +/* { dg-add-options arm_neon } */
37744  
37745  #include "arm_neon.h"
37746  
37747 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c b/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c
37748 --- a/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c        1970-01-01 01:00:00.000000000 +0100
37749 +++ b/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c        2010-01-25 09:50:29.355686315 +0100
37750 @@ -0,0 +1,27 @@
37751 +/* Check that NEON vector shifts support immediate values == size.  /*
37752 +
37753 +/* { dg-do compile } */
37754 +/* { dg-require-effective-target arm_neon_ok } */
37755 +/* { dg-add-options arm_neon } */
37756 +
37757 +#include <arm_neon.h>
37758 +
37759 +uint16x8_t test_vshll_n_u8 (uint8x8_t a)
37760 +{
37761 +    return vshll_n_u8(a, 8);
37762 +}
37763 +
37764 +uint32x4_t test_vshll_n_u16 (uint16x4_t a)
37765 +{   
37766 +    return vshll_n_u16(a, 16);
37767 +}
37768 +
37769 +uint64x2_t test_vshll_n_u32 (uint32x2_t a)
37770 +{
37771 +    return vshll_n_u32(a, 32);
37772 +}
37773 +
37774 +/* { dg-final { scan-assembler "vshll\.u16\[   \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[      \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
37775 +/* { dg-final { scan-assembler "vshll\.u32\[   \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[      \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
37776 +/* { dg-final { scan-assembler "vshll\.u8\[    \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[      \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
37777 +/* { dg-final { cleanup-saved-temps } } */
37778 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c b/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c
37779 --- a/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c  2007-07-25 14:28:31.000000000 +0200
37780 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c  2010-01-25 09:50:29.355686315 +0100
37781 @@ -3,7 +3,8 @@
37782  
37783  /* { dg-do assemble } */
37784  /* { dg-require-effective-target arm_neon_ok } */
37785 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37786 +/* { dg-options "-save-temps -O0" } */
37787 +/* { dg-add-options arm_neon } */
37788  
37789  #include "arm_neon.h"
37790  
37791 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c b/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c
37792 --- a/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c  2007-07-25 14:28:31.000000000 +0200
37793 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c  2010-01-25 09:50:29.365686888 +0100
37794 @@ -3,7 +3,8 @@
37795  
37796  /* { dg-do assemble } */
37797  /* { dg-require-effective-target arm_neon_ok } */
37798 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37799 +/* { dg-options "-save-temps -O0" } */
37800 +/* { dg-add-options arm_neon } */
37801  
37802  #include "arm_neon.h"
37803  
37804 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c b/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c
37805 --- a/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c   2007-07-25 14:28:31.000000000 +0200
37806 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c   2010-01-25 09:50:29.365686888 +0100
37807 @@ -3,7 +3,8 @@
37808  
37809  /* { dg-do assemble } */
37810  /* { dg-require-effective-target arm_neon_ok } */
37811 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37812 +/* { dg-options "-save-temps -O0" } */
37813 +/* { dg-add-options arm_neon } */
37814  
37815  #include "arm_neon.h"
37816  
37817 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c b/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c
37818 --- a/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c  2007-07-25 14:28:31.000000000 +0200
37819 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c  2010-01-25 09:50:29.365686888 +0100
37820 @@ -3,7 +3,8 @@
37821  
37822  /* { dg-do assemble } */
37823  /* { dg-require-effective-target arm_neon_ok } */
37824 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37825 +/* { dg-options "-save-temps -O0" } */
37826 +/* { dg-add-options arm_neon } */
37827  
37828  #include "arm_neon.h"
37829  
37830 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c b/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c
37831 --- a/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c  2007-07-25 14:28:31.000000000 +0200
37832 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c  2010-01-25 09:50:29.365686888 +0100
37833 @@ -3,7 +3,8 @@
37834  
37835  /* { dg-do assemble } */
37836  /* { dg-require-effective-target arm_neon_ok } */
37837 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37838 +/* { dg-options "-save-temps -O0" } */
37839 +/* { dg-add-options arm_neon } */
37840  
37841  #include "arm_neon.h"
37842  
37843 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c b/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c
37844 --- a/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c  2007-07-25 14:28:31.000000000 +0200
37845 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c  2010-01-25 09:50:29.365686888 +0100
37846 @@ -3,7 +3,8 @@
37847  
37848  /* { dg-do assemble } */
37849  /* { dg-require-effective-target arm_neon_ok } */
37850 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37851 +/* { dg-options "-save-temps -O0" } */
37852 +/* { dg-add-options arm_neon } */
37853  
37854  #include "arm_neon.h"
37855  
37856 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c b/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c
37857 --- a/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c   2007-07-25 14:28:31.000000000 +0200
37858 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c   2010-01-25 09:50:29.365686888 +0100
37859 @@ -3,7 +3,8 @@
37860  
37861  /* { dg-do assemble } */
37862  /* { dg-require-effective-target arm_neon_ok } */
37863 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37864 +/* { dg-options "-save-temps -O0" } */
37865 +/* { dg-add-options arm_neon } */
37866  
37867  #include "arm_neon.h"
37868  
37869 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c b/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c
37870 --- a/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c  2007-07-25 14:28:31.000000000 +0200
37871 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c  2010-01-25 09:50:29.365686888 +0100
37872 @@ -3,7 +3,8 @@
37873  
37874  /* { dg-do assemble } */
37875  /* { dg-require-effective-target arm_neon_ok } */
37876 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37877 +/* { dg-options "-save-temps -O0" } */
37878 +/* { dg-add-options arm_neon } */
37879  
37880  #include "arm_neon.h"
37881  
37882 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c b/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c
37883 --- a/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c  2007-07-25 14:28:31.000000000 +0200
37884 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c  2010-01-25 09:50:29.365686888 +0100
37885 @@ -3,7 +3,8 @@
37886  
37887  /* { dg-do assemble } */
37888  /* { dg-require-effective-target arm_neon_ok } */
37889 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37890 +/* { dg-options "-save-temps -O0" } */
37891 +/* { dg-add-options arm_neon } */
37892  
37893  #include "arm_neon.h"
37894  
37895 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c b/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c
37896 --- a/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c  2007-07-25 14:28:31.000000000 +0200
37897 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c  2010-01-25 09:50:29.365686888 +0100
37898 @@ -3,7 +3,8 @@
37899  
37900  /* { dg-do assemble } */
37901  /* { dg-require-effective-target arm_neon_ok } */
37902 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37903 +/* { dg-options "-save-temps -O0" } */
37904 +/* { dg-add-options arm_neon } */
37905  
37906  #include "arm_neon.h"
37907  
37908 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c b/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c
37909 --- a/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c   2007-07-25 14:28:31.000000000 +0200
37910 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c   2010-01-25 09:50:29.365686888 +0100
37911 @@ -3,7 +3,8 @@
37912  
37913  /* { dg-do assemble } */
37914  /* { dg-require-effective-target arm_neon_ok } */
37915 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37916 +/* { dg-options "-save-temps -O0" } */
37917 +/* { dg-add-options arm_neon } */
37918  
37919  #include "arm_neon.h"
37920  
37921 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c
37922 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c  2007-07-30 15:48:43.000000000 +0200
37923 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c  2010-01-25 09:50:29.365686888 +0100
37924 @@ -3,7 +3,8 @@
37925  
37926  /* { dg-do assemble } */
37927  /* { dg-require-effective-target arm_neon_ok } */
37928 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37929 +/* { dg-options "-save-temps -O0" } */
37930 +/* { dg-add-options arm_neon } */
37931  
37932  #include "arm_neon.h"
37933  
37934 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c
37935 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c  2007-07-25 14:28:31.000000000 +0200
37936 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c  2010-01-25 09:50:29.365686888 +0100
37937 @@ -3,7 +3,8 @@
37938  
37939  /* { dg-do assemble } */
37940  /* { dg-require-effective-target arm_neon_ok } */
37941 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37942 +/* { dg-options "-save-temps -O0" } */
37943 +/* { dg-add-options arm_neon } */
37944  
37945  #include "arm_neon.h"
37946  
37947 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c
37948 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c   2007-07-25 14:28:31.000000000 +0200
37949 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c   2010-01-25 09:50:29.365686888 +0100
37950 @@ -3,7 +3,8 @@
37951  
37952  /* { dg-do assemble } */
37953  /* { dg-require-effective-target arm_neon_ok } */
37954 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37955 +/* { dg-options "-save-temps -O0" } */
37956 +/* { dg-add-options arm_neon } */
37957  
37958  #include "arm_neon.h"
37959  
37960 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c
37961 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c  2007-07-25 14:28:31.000000000 +0200
37962 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c  2010-01-25 09:50:29.365686888 +0100
37963 @@ -3,7 +3,8 @@
37964  
37965  /* { dg-do assemble } */
37966  /* { dg-require-effective-target arm_neon_ok } */
37967 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37968 +/* { dg-options "-save-temps -O0" } */
37969 +/* { dg-add-options arm_neon } */
37970  
37971  #include "arm_neon.h"
37972  
37973 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c
37974 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c  2007-07-30 15:48:43.000000000 +0200
37975 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c  2010-01-25 09:50:29.365686888 +0100
37976 @@ -3,7 +3,8 @@
37977  
37978  /* { dg-do assemble } */
37979  /* { dg-require-effective-target arm_neon_ok } */
37980 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37981 +/* { dg-options "-save-temps -O0" } */
37982 +/* { dg-add-options arm_neon } */
37983  
37984  #include "arm_neon.h"
37985  
37986 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c
37987 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c  2007-07-25 14:28:31.000000000 +0200
37988 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c  2010-01-25 09:50:29.365686888 +0100
37989 @@ -3,7 +3,8 @@
37990  
37991  /* { dg-do assemble } */
37992  /* { dg-require-effective-target arm_neon_ok } */
37993 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
37994 +/* { dg-options "-save-temps -O0" } */
37995 +/* { dg-add-options arm_neon } */
37996  
37997  #include "arm_neon.h"
37998  
37999 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c
38000 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c   2007-07-25 14:28:31.000000000 +0200
38001 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c   2010-01-25 09:50:29.365686888 +0100
38002 @@ -3,7 +3,8 @@
38003  
38004  /* { dg-do assemble } */
38005  /* { dg-require-effective-target arm_neon_ok } */
38006 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38007 +/* { dg-options "-save-temps -O0" } */
38008 +/* { dg-add-options arm_neon } */
38009  
38010  #include "arm_neon.h"
38011  
38012 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c
38013 --- a/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c  2007-07-25 14:28:31.000000000 +0200
38014 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c  2010-01-25 09:50:29.365686888 +0100
38015 @@ -3,7 +3,8 @@
38016  
38017  /* { dg-do assemble } */
38018  /* { dg-require-effective-target arm_neon_ok } */
38019 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38020 +/* { dg-options "-save-temps -O0" } */
38021 +/* { dg-add-options arm_neon } */
38022  
38023  #include "arm_neon.h"
38024  
38025 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c
38026 --- a/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c  2007-07-30 15:48:43.000000000 +0200
38027 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c  2010-01-25 09:50:29.365686888 +0100
38028 @@ -3,7 +3,8 @@
38029  
38030  /* { dg-do assemble } */
38031  /* { dg-require-effective-target arm_neon_ok } */
38032 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38033 +/* { dg-options "-save-temps -O0" } */
38034 +/* { dg-add-options arm_neon } */
38035  
38036  #include "arm_neon.h"
38037  
38038 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c
38039 --- a/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c  2007-07-25 14:28:31.000000000 +0200
38040 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c  2010-01-25 09:50:29.365686888 +0100
38041 @@ -3,7 +3,8 @@
38042  
38043  /* { dg-do assemble } */
38044  /* { dg-require-effective-target arm_neon_ok } */
38045 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38046 +/* { dg-options "-save-temps -O0" } */
38047 +/* { dg-add-options arm_neon } */
38048  
38049  #include "arm_neon.h"
38050  
38051 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c
38052 --- a/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c   2007-07-25 14:28:31.000000000 +0200
38053 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c   2010-01-25 09:50:29.365686888 +0100
38054 @@ -3,7 +3,8 @@
38055  
38056  /* { dg-do assemble } */
38057  /* { dg-require-effective-target arm_neon_ok } */
38058 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38059 +/* { dg-options "-save-temps -O0" } */
38060 +/* { dg-add-options arm_neon } */
38061  
38062  #include "arm_neon.h"
38063  
38064 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c
38065 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c   2007-07-25 14:28:31.000000000 +0200
38066 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c   2010-01-25 09:50:29.365686888 +0100
38067 @@ -3,7 +3,8 @@
38068  
38069  /* { dg-do assemble } */
38070  /* { dg-require-effective-target arm_neon_ok } */
38071 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38072 +/* { dg-options "-save-temps -O0" } */
38073 +/* { dg-add-options arm_neon } */
38074  
38075  #include "arm_neon.h"
38076  
38077 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c
38078 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c   2007-07-25 14:28:31.000000000 +0200
38079 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c   2010-01-25 09:50:29.365686888 +0100
38080 @@ -3,7 +3,8 @@
38081  
38082  /* { dg-do assemble } */
38083  /* { dg-require-effective-target arm_neon_ok } */
38084 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38085 +/* { dg-options "-save-temps -O0" } */
38086 +/* { dg-add-options arm_neon } */
38087  
38088  #include "arm_neon.h"
38089  
38090 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c
38091 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c    2007-07-25 14:28:31.000000000 +0200
38092 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c    2010-01-25 09:50:29.365686888 +0100
38093 @@ -3,7 +3,8 @@
38094  
38095  /* { dg-do assemble } */
38096  /* { dg-require-effective-target arm_neon_ok } */
38097 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38098 +/* { dg-options "-save-temps -O0" } */
38099 +/* { dg-add-options arm_neon } */
38100  
38101  #include "arm_neon.h"
38102  
38103 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c
38104 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c   2007-07-25 14:28:31.000000000 +0200
38105 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c   2010-01-25 09:50:29.365686888 +0100
38106 @@ -3,7 +3,8 @@
38107  
38108  /* { dg-do assemble } */
38109  /* { dg-require-effective-target arm_neon_ok } */
38110 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38111 +/* { dg-options "-save-temps -O0" } */
38112 +/* { dg-add-options arm_neon } */
38113  
38114  #include "arm_neon.h"
38115  
38116 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c
38117 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c   2007-07-25 14:28:31.000000000 +0200
38118 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c   2010-01-25 09:50:29.365686888 +0100
38119 @@ -3,7 +3,8 @@
38120  
38121  /* { dg-do assemble } */
38122  /* { dg-require-effective-target arm_neon_ok } */
38123 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38124 +/* { dg-options "-save-temps -O0" } */
38125 +/* { dg-add-options arm_neon } */
38126  
38127  #include "arm_neon.h"
38128  
38129 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c b/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c
38130 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c   2007-07-25 14:28:31.000000000 +0200
38131 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c   2010-01-25 09:50:29.365686888 +0100
38132 @@ -3,7 +3,8 @@
38133  
38134  /* { dg-do assemble } */
38135  /* { dg-require-effective-target arm_neon_ok } */
38136 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38137 +/* { dg-options "-save-temps -O0" } */
38138 +/* { dg-add-options arm_neon } */
38139  
38140  #include "arm_neon.h"
38141  
38142 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c
38143 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c    2007-07-25 14:28:31.000000000 +0200
38144 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c    2010-01-25 09:50:29.365686888 +0100
38145 @@ -3,7 +3,8 @@
38146  
38147  /* { dg-do assemble } */
38148  /* { dg-require-effective-target arm_neon_ok } */
38149 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38150 +/* { dg-options "-save-temps -O0" } */
38151 +/* { dg-add-options arm_neon } */
38152  
38153  #include "arm_neon.h"
38154  
38155 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c
38156 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c   2007-07-25 14:28:31.000000000 +0200
38157 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c   2010-01-25 09:50:29.365686888 +0100
38158 @@ -3,7 +3,8 @@
38159  
38160  /* { dg-do assemble } */
38161  /* { dg-require-effective-target arm_neon_ok } */
38162 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38163 +/* { dg-options "-save-temps -O0" } */
38164 +/* { dg-add-options arm_neon } */
38165  
38166  #include "arm_neon.h"
38167  
38168 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c
38169 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c   2007-07-25 14:28:31.000000000 +0200
38170 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c   2010-01-25 09:50:29.365686888 +0100
38171 @@ -3,7 +3,8 @@
38172  
38173  /* { dg-do assemble } */
38174  /* { dg-require-effective-target arm_neon_ok } */
38175 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38176 +/* { dg-options "-save-temps -O0" } */
38177 +/* { dg-add-options arm_neon } */
38178  
38179  #include "arm_neon.h"
38180  
38181 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c
38182 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c   2007-07-25 14:28:31.000000000 +0200
38183 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c   2010-01-25 09:50:29.365686888 +0100
38184 @@ -3,7 +3,8 @@
38185  
38186  /* { dg-do assemble } */
38187  /* { dg-require-effective-target arm_neon_ok } */
38188 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38189 +/* { dg-options "-save-temps -O0" } */
38190 +/* { dg-add-options arm_neon } */
38191  
38192  #include "arm_neon.h"
38193  
38194 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c
38195 --- a/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c    2007-07-25 14:28:31.000000000 +0200
38196 +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c    2010-01-25 09:50:29.365686888 +0100
38197 @@ -3,7 +3,8 @@
38198  
38199  /* { dg-do assemble } */
38200  /* { dg-require-effective-target arm_neon_ok } */
38201 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38202 +/* { dg-options "-save-temps -O0" } */
38203 +/* { dg-add-options arm_neon } */
38204  
38205  #include "arm_neon.h"
38206  
38207 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c
38208 --- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c 2007-07-30 15:48:43.000000000 +0200
38209 +++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c 2010-01-25 09:50:29.365686888 +0100
38210 @@ -3,7 +3,8 @@
38211  
38212  /* { dg-do assemble } */
38213  /* { dg-require-effective-target arm_neon_ok } */
38214 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38215 +/* { dg-options "-save-temps -O0" } */
38216 +/* { dg-add-options arm_neon } */
38217  
38218  #include "arm_neon.h"
38219  
38220 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c
38221 --- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c 2007-07-25 14:28:31.000000000 +0200
38222 +++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c 2010-01-25 09:50:29.365686888 +0100
38223 @@ -3,7 +3,8 @@
38224  
38225  /* { dg-do assemble } */
38226  /* { dg-require-effective-target arm_neon_ok } */
38227 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38228 +/* { dg-options "-save-temps -O0" } */
38229 +/* { dg-add-options arm_neon } */
38230  
38231  #include "arm_neon.h"
38232  
38233 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c
38234 --- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c  2007-07-25 14:28:31.000000000 +0200
38235 +++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c  2010-01-25 09:50:29.365686888 +0100
38236 @@ -3,7 +3,8 @@
38237  
38238  /* { dg-do assemble } */
38239  /* { dg-require-effective-target arm_neon_ok } */
38240 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38241 +/* { dg-options "-save-temps -O0" } */
38242 +/* { dg-add-options arm_neon } */
38243  
38244  #include "arm_neon.h"
38245  
38246 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c
38247 --- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c 2007-07-25 14:28:31.000000000 +0200
38248 +++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c 2010-01-25 09:50:29.365686888 +0100
38249 @@ -3,7 +3,8 @@
38250  
38251  /* { dg-do assemble } */
38252  /* { dg-require-effective-target arm_neon_ok } */
38253 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38254 +/* { dg-options "-save-temps -O0" } */
38255 +/* { dg-add-options arm_neon } */
38256  
38257  #include "arm_neon.h"
38258  
38259 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c
38260 --- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c 2007-07-30 15:48:43.000000000 +0200
38261 +++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c 2010-01-25 09:50:29.365686888 +0100
38262 @@ -3,7 +3,8 @@
38263  
38264  /* { dg-do assemble } */
38265  /* { dg-require-effective-target arm_neon_ok } */
38266 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38267 +/* { dg-options "-save-temps -O0" } */
38268 +/* { dg-add-options arm_neon } */
38269  
38270  #include "arm_neon.h"
38271  
38272 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c
38273 --- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c 2007-07-25 14:28:31.000000000 +0200
38274 +++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c 2010-01-25 09:50:29.365686888 +0100
38275 @@ -3,7 +3,8 @@
38276  
38277  /* { dg-do assemble } */
38278  /* { dg-require-effective-target arm_neon_ok } */
38279 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38280 +/* { dg-options "-save-temps -O0" } */
38281 +/* { dg-add-options arm_neon } */
38282  
38283  #include "arm_neon.h"
38284  
38285 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c
38286 --- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c  2007-07-25 14:28:31.000000000 +0200
38287 +++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c  2010-01-25 09:50:29.365686888 +0100
38288 @@ -3,7 +3,8 @@
38289  
38290  /* { dg-do assemble } */
38291  /* { dg-require-effective-target arm_neon_ok } */
38292 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38293 +/* { dg-options "-save-temps -O0" } */
38294 +/* { dg-add-options arm_neon } */
38295  
38296  #include "arm_neon.h"
38297  
38298 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c
38299 --- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c 2007-07-25 14:28:31.000000000 +0200
38300 +++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c 2010-01-25 09:50:29.365686888 +0100
38301 @@ -3,7 +3,8 @@
38302  
38303  /* { dg-do assemble } */
38304  /* { dg-require-effective-target arm_neon_ok } */
38305 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38306 +/* { dg-options "-save-temps -O0" } */
38307 +/* { dg-add-options arm_neon } */
38308  
38309  #include "arm_neon.h"
38310  
38311 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c
38312 --- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c 2007-07-30 15:48:43.000000000 +0200
38313 +++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c 2010-01-25 09:50:29.365686888 +0100
38314 @@ -3,7 +3,8 @@
38315  
38316  /* { dg-do assemble } */
38317  /* { dg-require-effective-target arm_neon_ok } */
38318 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38319 +/* { dg-options "-save-temps -O0" } */
38320 +/* { dg-add-options arm_neon } */
38321  
38322  #include "arm_neon.h"
38323  
38324 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c
38325 --- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c 2007-07-25 14:28:31.000000000 +0200
38326 +++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c 2010-01-25 09:50:29.365686888 +0100
38327 @@ -3,7 +3,8 @@
38328  
38329  /* { dg-do assemble } */
38330  /* { dg-require-effective-target arm_neon_ok } */
38331 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38332 +/* { dg-options "-save-temps -O0" } */
38333 +/* { dg-add-options arm_neon } */
38334  
38335  #include "arm_neon.h"
38336  
38337 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c
38338 --- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c  2007-07-25 14:28:31.000000000 +0200
38339 +++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c  2010-01-25 09:50:29.365686888 +0100
38340 @@ -3,7 +3,8 @@
38341  
38342  /* { dg-do assemble } */
38343  /* { dg-require-effective-target arm_neon_ok } */
38344 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38345 +/* { dg-options "-save-temps -O0" } */
38346 +/* { dg-add-options arm_neon } */
38347  
38348  #include "arm_neon.h"
38349  
38350 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c b/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c
38351 --- a/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c     2007-07-25 14:28:31.000000000 +0200
38352 +++ b/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c     2010-01-25 09:50:29.365686888 +0100
38353 @@ -3,7 +3,8 @@
38354  
38355  /* { dg-do assemble } */
38356  /* { dg-require-effective-target arm_neon_ok } */
38357 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38358 +/* { dg-options "-save-temps -O0" } */
38359 +/* { dg-add-options arm_neon } */
38360  
38361  #include "arm_neon.h"
38362  
38363 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c b/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c
38364 --- a/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c     2007-07-25 14:28:31.000000000 +0200
38365 +++ b/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c     2010-01-25 09:50:29.365686888 +0100
38366 @@ -3,7 +3,8 @@
38367  
38368  /* { dg-do assemble } */
38369  /* { dg-require-effective-target arm_neon_ok } */
38370 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38371 +/* { dg-options "-save-temps -O0" } */
38372 +/* { dg-add-options arm_neon } */
38373  
38374  #include "arm_neon.h"
38375  
38376 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c b/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c
38377 --- a/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c      2007-07-25 14:28:31.000000000 +0200
38378 +++ b/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c      2010-01-25 09:50:29.365686888 +0100
38379 @@ -3,7 +3,8 @@
38380  
38381  /* { dg-do assemble } */
38382  /* { dg-require-effective-target arm_neon_ok } */
38383 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38384 +/* { dg-options "-save-temps -O0" } */
38385 +/* { dg-add-options arm_neon } */
38386  
38387  #include "arm_neon.h"
38388  
38389 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c b/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c
38390 --- a/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c     2007-07-25 14:28:31.000000000 +0200
38391 +++ b/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c     2010-01-25 09:50:29.365686888 +0100
38392 @@ -3,7 +3,8 @@
38393  
38394  /* { dg-do assemble } */
38395  /* { dg-require-effective-target arm_neon_ok } */
38396 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38397 +/* { dg-options "-save-temps -O0" } */
38398 +/* { dg-add-options arm_neon } */
38399  
38400  #include "arm_neon.h"
38401  
38402 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c b/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c
38403 --- a/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c     2007-07-25 14:28:31.000000000 +0200
38404 +++ b/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c     2010-01-25 09:50:29.365686888 +0100
38405 @@ -3,7 +3,8 @@
38406  
38407  /* { dg-do assemble } */
38408  /* { dg-require-effective-target arm_neon_ok } */
38409 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38410 +/* { dg-options "-save-temps -O0" } */
38411 +/* { dg-add-options arm_neon } */
38412  
38413  #include "arm_neon.h"
38414  
38415 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c b/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c
38416 --- a/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c      2007-07-25 14:28:31.000000000 +0200
38417 +++ b/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c      2010-01-25 09:50:29.365686888 +0100
38418 @@ -3,7 +3,8 @@
38419  
38420  /* { dg-do assemble } */
38421  /* { dg-require-effective-target arm_neon_ok } */
38422 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38423 +/* { dg-options "-save-temps -O0" } */
38424 +/* { dg-add-options arm_neon } */
38425  
38426  #include "arm_neon.h"
38427  
38428 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhadds16.c b/gcc/testsuite/gcc.target/arm/neon/vhadds16.c
38429 --- a/gcc/testsuite/gcc.target/arm/neon/vhadds16.c      2007-07-25 14:28:31.000000000 +0200
38430 +++ b/gcc/testsuite/gcc.target/arm/neon/vhadds16.c      2010-01-25 09:50:29.365686888 +0100
38431 @@ -3,7 +3,8 @@
38432  
38433  /* { dg-do assemble } */
38434  /* { dg-require-effective-target arm_neon_ok } */
38435 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38436 +/* { dg-options "-save-temps -O0" } */
38437 +/* { dg-add-options arm_neon } */
38438  
38439  #include "arm_neon.h"
38440  
38441 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhadds32.c b/gcc/testsuite/gcc.target/arm/neon/vhadds32.c
38442 --- a/gcc/testsuite/gcc.target/arm/neon/vhadds32.c      2007-07-25 14:28:31.000000000 +0200
38443 +++ b/gcc/testsuite/gcc.target/arm/neon/vhadds32.c      2010-01-25 09:50:29.365686888 +0100
38444 @@ -3,7 +3,8 @@
38445  
38446  /* { dg-do assemble } */
38447  /* { dg-require-effective-target arm_neon_ok } */
38448 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38449 +/* { dg-options "-save-temps -O0" } */
38450 +/* { dg-add-options arm_neon } */
38451  
38452  #include "arm_neon.h"
38453  
38454 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhadds8.c b/gcc/testsuite/gcc.target/arm/neon/vhadds8.c
38455 --- a/gcc/testsuite/gcc.target/arm/neon/vhadds8.c       2007-07-25 14:28:31.000000000 +0200
38456 +++ b/gcc/testsuite/gcc.target/arm/neon/vhadds8.c       2010-01-25 09:50:29.365686888 +0100
38457 @@ -3,7 +3,8 @@
38458  
38459  /* { dg-do assemble } */
38460  /* { dg-require-effective-target arm_neon_ok } */
38461 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38462 +/* { dg-options "-save-temps -O0" } */
38463 +/* { dg-add-options arm_neon } */
38464  
38465  #include "arm_neon.h"
38466  
38467 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c b/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c
38468 --- a/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c      2007-07-25 14:28:31.000000000 +0200
38469 +++ b/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c      2010-01-25 09:50:29.365686888 +0100
38470 @@ -3,7 +3,8 @@
38471  
38472  /* { dg-do assemble } */
38473  /* { dg-require-effective-target arm_neon_ok } */
38474 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38475 +/* { dg-options "-save-temps -O0" } */
38476 +/* { dg-add-options arm_neon } */
38477  
38478  #include "arm_neon.h"
38479  
38480 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c b/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c
38481 --- a/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c      2007-07-25 14:28:31.000000000 +0200
38482 +++ b/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c      2010-01-25 09:50:29.365686888 +0100
38483 @@ -3,7 +3,8 @@
38484  
38485  /* { dg-do assemble } */
38486  /* { dg-require-effective-target arm_neon_ok } */
38487 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38488 +/* { dg-options "-save-temps -O0" } */
38489 +/* { dg-add-options arm_neon } */
38490  
38491  #include "arm_neon.h"
38492  
38493 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c b/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c
38494 --- a/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c       2007-07-25 14:28:31.000000000 +0200
38495 +++ b/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c       2010-01-25 09:50:29.365686888 +0100
38496 @@ -3,7 +3,8 @@
38497  
38498  /* { dg-do assemble } */
38499  /* { dg-require-effective-target arm_neon_ok } */
38500 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38501 +/* { dg-options "-save-temps -O0" } */
38502 +/* { dg-add-options arm_neon } */
38503  
38504  #include "arm_neon.h"
38505  
38506 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c b/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c
38507 --- a/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c     2007-07-25 14:28:31.000000000 +0200
38508 +++ b/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c     2010-01-25 09:50:29.365686888 +0100
38509 @@ -3,7 +3,8 @@
38510  
38511  /* { dg-do assemble } */
38512  /* { dg-require-effective-target arm_neon_ok } */
38513 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38514 +/* { dg-options "-save-temps -O0" } */
38515 +/* { dg-add-options arm_neon } */
38516  
38517  #include "arm_neon.h"
38518  
38519 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c b/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c
38520 --- a/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c     2007-07-25 14:28:31.000000000 +0200
38521 +++ b/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c     2010-01-25 09:50:29.365686888 +0100
38522 @@ -3,7 +3,8 @@
38523  
38524  /* { dg-do assemble } */
38525  /* { dg-require-effective-target arm_neon_ok } */
38526 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38527 +/* { dg-options "-save-temps -O0" } */
38528 +/* { dg-add-options arm_neon } */
38529  
38530  #include "arm_neon.h"
38531  
38532 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c b/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c
38533 --- a/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c      2007-07-25 14:28:31.000000000 +0200
38534 +++ b/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c      2010-01-25 09:50:29.365686888 +0100
38535 @@ -3,7 +3,8 @@
38536  
38537  /* { dg-do assemble } */
38538  /* { dg-require-effective-target arm_neon_ok } */
38539 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38540 +/* { dg-options "-save-temps -O0" } */
38541 +/* { dg-add-options arm_neon } */
38542  
38543  #include "arm_neon.h"
38544  
38545 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c b/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c
38546 --- a/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c     2007-07-25 14:28:31.000000000 +0200
38547 +++ b/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c     2010-01-25 09:50:29.365686888 +0100
38548 @@ -3,7 +3,8 @@
38549  
38550  /* { dg-do assemble } */
38551  /* { dg-require-effective-target arm_neon_ok } */
38552 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38553 +/* { dg-options "-save-temps -O0" } */
38554 +/* { dg-add-options arm_neon } */
38555  
38556  #include "arm_neon.h"
38557  
38558 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c b/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c
38559 --- a/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c     2007-07-25 14:28:31.000000000 +0200
38560 +++ b/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c     2010-01-25 09:50:29.365686888 +0100
38561 @@ -3,7 +3,8 @@
38562  
38563  /* { dg-do assemble } */
38564  /* { dg-require-effective-target arm_neon_ok } */
38565 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38566 +/* { dg-options "-save-temps -O0" } */
38567 +/* { dg-add-options arm_neon } */
38568  
38569  #include "arm_neon.h"
38570  
38571 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c b/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c
38572 --- a/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c      2007-07-25 14:28:31.000000000 +0200
38573 +++ b/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c      2010-01-25 09:50:29.365686888 +0100
38574 @@ -3,7 +3,8 @@
38575  
38576  /* { dg-do assemble } */
38577  /* { dg-require-effective-target arm_neon_ok } */
38578 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38579 +/* { dg-options "-save-temps -O0" } */
38580 +/* { dg-add-options arm_neon } */
38581  
38582  #include "arm_neon.h"
38583  
38584 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c b/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c
38585 --- a/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c      2007-07-25 14:28:31.000000000 +0200
38586 +++ b/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c      2010-01-25 09:50:29.365686888 +0100
38587 @@ -3,7 +3,8 @@
38588  
38589  /* { dg-do assemble } */
38590  /* { dg-require-effective-target arm_neon_ok } */
38591 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38592 +/* { dg-options "-save-temps -O0" } */
38593 +/* { dg-add-options arm_neon } */
38594  
38595  #include "arm_neon.h"
38596  
38597 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c b/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c
38598 --- a/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c      2007-07-25 14:28:31.000000000 +0200
38599 +++ b/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c      2010-01-25 09:50:29.365686888 +0100
38600 @@ -3,7 +3,8 @@
38601  
38602  /* { dg-do assemble } */
38603  /* { dg-require-effective-target arm_neon_ok } */
38604 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38605 +/* { dg-options "-save-temps -O0" } */
38606 +/* { dg-add-options arm_neon } */
38607  
38608  #include "arm_neon.h"
38609  
38610 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c b/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c
38611 --- a/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c       2007-07-25 14:28:31.000000000 +0200
38612 +++ b/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c       2010-01-25 09:50:29.365686888 +0100
38613 @@ -3,7 +3,8 @@
38614  
38615  /* { dg-do assemble } */
38616  /* { dg-require-effective-target arm_neon_ok } */
38617 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38618 +/* { dg-options "-save-temps -O0" } */
38619 +/* { dg-add-options arm_neon } */
38620  
38621  #include "arm_neon.h"
38622  
38623 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c b/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c
38624 --- a/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c      2007-07-25 14:28:31.000000000 +0200
38625 +++ b/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c      2010-01-25 09:50:29.365686888 +0100
38626 @@ -3,7 +3,8 @@
38627  
38628  /* { dg-do assemble } */
38629  /* { dg-require-effective-target arm_neon_ok } */
38630 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38631 +/* { dg-options "-save-temps -O0" } */
38632 +/* { dg-add-options arm_neon } */
38633  
38634  #include "arm_neon.h"
38635  
38636 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c b/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c
38637 --- a/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c      2007-07-25 14:28:31.000000000 +0200
38638 +++ b/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c      2010-01-25 09:50:29.365686888 +0100
38639 @@ -3,7 +3,8 @@
38640  
38641  /* { dg-do assemble } */
38642  /* { dg-require-effective-target arm_neon_ok } */
38643 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38644 +/* { dg-options "-save-temps -O0" } */
38645 +/* { dg-add-options arm_neon } */
38646  
38647  #include "arm_neon.h"
38648  
38649 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c b/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c
38650 --- a/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c       2007-07-25 14:28:31.000000000 +0200
38651 +++ b/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c       2010-01-25 09:50:29.365686888 +0100
38652 @@ -3,7 +3,8 @@
38653  
38654  /* { dg-do assemble } */
38655  /* { dg-require-effective-target arm_neon_ok } */
38656 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38657 +/* { dg-options "-save-temps -O0" } */
38658 +/* { dg-add-options arm_neon } */
38659  
38660  #include "arm_neon.h"
38661  
38662 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c
38663 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c   2007-07-25 14:28:31.000000000 +0200
38664 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c   2010-01-25 09:50:29.365686888 +0100
38665 @@ -3,7 +3,8 @@
38666  
38667  /* { dg-do assemble } */
38668  /* { dg-require-effective-target arm_neon_ok } */
38669 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38670 +/* { dg-options "-save-temps -O0" } */
38671 +/* { dg-add-options arm_neon } */
38672  
38673  #include "arm_neon.h"
38674  
38675 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c
38676 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c   2007-07-25 14:28:31.000000000 +0200
38677 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c   2010-01-25 09:50:29.365686888 +0100
38678 @@ -3,7 +3,8 @@
38679  
38680  /* { dg-do assemble } */
38681  /* { dg-require-effective-target arm_neon_ok } */
38682 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38683 +/* { dg-options "-save-temps -O0" } */
38684 +/* { dg-add-options arm_neon } */
38685  
38686  #include "arm_neon.h"
38687  
38688 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c
38689 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c    2007-07-25 14:28:31.000000000 +0200
38690 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c    2010-01-25 09:50:29.365686888 +0100
38691 @@ -3,7 +3,8 @@
38692  
38693  /* { dg-do assemble } */
38694  /* { dg-require-effective-target arm_neon_ok } */
38695 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38696 +/* { dg-options "-save-temps -O0" } */
38697 +/* { dg-add-options arm_neon } */
38698  
38699  #include "arm_neon.h"
38700  
38701 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c
38702 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c   2007-07-25 14:28:31.000000000 +0200
38703 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c   2010-01-25 09:50:29.365686888 +0100
38704 @@ -3,7 +3,8 @@
38705  
38706  /* { dg-do assemble } */
38707  /* { dg-require-effective-target arm_neon_ok } */
38708 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38709 +/* { dg-options "-save-temps -O0" } */
38710 +/* { dg-add-options arm_neon } */
38711  
38712  #include "arm_neon.h"
38713  
38714 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c
38715 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c   2007-07-25 14:28:31.000000000 +0200
38716 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c   2010-01-25 09:50:29.365686888 +0100
38717 @@ -3,7 +3,8 @@
38718  
38719  /* { dg-do assemble } */
38720  /* { dg-require-effective-target arm_neon_ok } */
38721 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38722 +/* { dg-options "-save-temps -O0" } */
38723 +/* { dg-add-options arm_neon } */
38724  
38725  #include "arm_neon.h"
38726  
38727 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c
38728 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c   2007-07-25 14:28:31.000000000 +0200
38729 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c   2010-01-25 09:50:29.375686623 +0100
38730 @@ -3,7 +3,8 @@
38731  
38732  /* { dg-do assemble } */
38733  /* { dg-require-effective-target arm_neon_ok } */
38734 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38735 +/* { dg-options "-save-temps -O0" } */
38736 +/* { dg-add-options arm_neon } */
38737  
38738  #include "arm_neon.h"
38739  
38740 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c
38741 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c    2007-07-25 14:28:31.000000000 +0200
38742 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c    2010-01-25 09:50:29.375686623 +0100
38743 @@ -3,7 +3,8 @@
38744  
38745  /* { dg-do assemble } */
38746  /* { dg-require-effective-target arm_neon_ok } */
38747 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38748 +/* { dg-options "-save-temps -O0" } */
38749 +/* { dg-add-options arm_neon } */
38750  
38751  #include "arm_neon.h"
38752  
38753 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c
38754 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c   2007-07-25 14:28:31.000000000 +0200
38755 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c   2010-01-25 09:50:29.375686623 +0100
38756 @@ -3,7 +3,8 @@
38757  
38758  /* { dg-do assemble } */
38759  /* { dg-require-effective-target arm_neon_ok } */
38760 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38761 +/* { dg-options "-save-temps -O0" } */
38762 +/* { dg-add-options arm_neon } */
38763  
38764  #include "arm_neon.h"
38765  
38766 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c
38767 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c   2007-07-25 14:28:31.000000000 +0200
38768 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c   2010-01-25 09:50:29.375686623 +0100
38769 @@ -3,7 +3,8 @@
38770  
38771  /* { dg-do assemble } */
38772  /* { dg-require-effective-target arm_neon_ok } */
38773 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38774 +/* { dg-options "-save-temps -O0" } */
38775 +/* { dg-add-options arm_neon } */
38776  
38777  #include "arm_neon.h"
38778  
38779 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c
38780 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c   2007-07-25 14:28:31.000000000 +0200
38781 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c   2010-01-25 09:50:29.375686623 +0100
38782 @@ -3,7 +3,8 @@
38783  
38784  /* { dg-do assemble } */
38785  /* { dg-require-effective-target arm_neon_ok } */
38786 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38787 +/* { dg-options "-save-temps -O0" } */
38788 +/* { dg-add-options arm_neon } */
38789  
38790  #include "arm_neon.h"
38791  
38792 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c
38793 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c    2007-07-25 14:28:31.000000000 +0200
38794 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c    2010-01-25 09:50:29.375686623 +0100
38795 @@ -3,7 +3,8 @@
38796  
38797  /* { dg-do assemble } */
38798  /* { dg-require-effective-target arm_neon_ok } */
38799 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38800 +/* { dg-options "-save-temps -O0" } */
38801 +/* { dg-add-options arm_neon } */
38802  
38803  #include "arm_neon.h"
38804  
38805 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1f32.c b/gcc/testsuite/gcc.target/arm/neon/vld1f32.c
38806 --- a/gcc/testsuite/gcc.target/arm/neon/vld1f32.c       2007-07-25 14:28:31.000000000 +0200
38807 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1f32.c       2010-01-25 09:50:29.375686623 +0100
38808 @@ -3,7 +3,8 @@
38809  
38810  /* { dg-do assemble } */
38811  /* { dg-require-effective-target arm_neon_ok } */
38812 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38813 +/* { dg-options "-save-temps -O0" } */
38814 +/* { dg-add-options arm_neon } */
38815  
38816  #include "arm_neon.h"
38817  
38818 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c
38819 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c  2007-07-25 14:28:31.000000000 +0200
38820 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c  2010-01-25 09:50:29.375686623 +0100
38821 @@ -3,7 +3,8 @@
38822  
38823  /* { dg-do assemble } */
38824  /* { dg-require-effective-target arm_neon_ok } */
38825 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38826 +/* { dg-options "-save-temps -O0" } */
38827 +/* { dg-add-options arm_neon } */
38828  
38829  #include "arm_neon.h"
38830  
38831 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c
38832 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c  2007-07-25 14:28:31.000000000 +0200
38833 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c  2010-01-25 09:50:29.375686623 +0100
38834 @@ -3,7 +3,8 @@
38835  
38836  /* { dg-do assemble } */
38837  /* { dg-require-effective-target arm_neon_ok } */
38838 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38839 +/* { dg-options "-save-temps -O0" } */
38840 +/* { dg-add-options arm_neon } */
38841  
38842  #include "arm_neon.h"
38843  
38844 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c
38845 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c   2007-07-25 14:28:31.000000000 +0200
38846 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c   2010-01-25 09:50:29.375686623 +0100
38847 @@ -3,7 +3,8 @@
38848  
38849  /* { dg-do assemble } */
38850  /* { dg-require-effective-target arm_neon_ok } */
38851 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38852 +/* { dg-options "-save-temps -O0" } */
38853 +/* { dg-add-options arm_neon } */
38854  
38855  #include "arm_neon.h"
38856  
38857 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c
38858 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c  2007-07-25 14:28:31.000000000 +0200
38859 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c  2010-01-25 09:50:29.375686623 +0100
38860 @@ -3,7 +3,8 @@
38861  
38862  /* { dg-do assemble } */
38863  /* { dg-require-effective-target arm_neon_ok } */
38864 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38865 +/* { dg-options "-save-temps -O0" } */
38866 +/* { dg-add-options arm_neon } */
38867  
38868  #include "arm_neon.h"
38869  
38870 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c
38871 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c  2007-07-25 14:28:31.000000000 +0200
38872 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c  2010-01-25 09:50:29.375686623 +0100
38873 @@ -3,7 +3,8 @@
38874  
38875  /* { dg-do assemble } */
38876  /* { dg-require-effective-target arm_neon_ok } */
38877 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38878 +/* { dg-options "-save-temps -O0" } */
38879 +/* { dg-add-options arm_neon } */
38880  
38881  #include "arm_neon.h"
38882  
38883 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c
38884 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c  2007-07-25 14:28:31.000000000 +0200
38885 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c  2010-01-25 09:50:29.375686623 +0100
38886 @@ -3,7 +3,8 @@
38887  
38888  /* { dg-do assemble } */
38889  /* { dg-require-effective-target arm_neon_ok } */
38890 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38891 +/* { dg-options "-save-temps -O0" } */
38892 +/* { dg-add-options arm_neon } */
38893  
38894  #include "arm_neon.h"
38895  
38896 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c
38897 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c   2007-07-25 14:28:31.000000000 +0200
38898 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c   2010-01-25 09:50:29.375686623 +0100
38899 @@ -3,7 +3,8 @@
38900  
38901  /* { dg-do assemble } */
38902  /* { dg-require-effective-target arm_neon_ok } */
38903 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38904 +/* { dg-options "-save-temps -O0" } */
38905 +/* { dg-add-options arm_neon } */
38906  
38907  #include "arm_neon.h"
38908  
38909 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c
38910 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c  2007-07-25 14:28:31.000000000 +0200
38911 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c  2010-01-25 09:50:29.375686623 +0100
38912 @@ -3,7 +3,8 @@
38913  
38914  /* { dg-do assemble } */
38915  /* { dg-require-effective-target arm_neon_ok } */
38916 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38917 +/* { dg-options "-save-temps -O0" } */
38918 +/* { dg-add-options arm_neon } */
38919  
38920  #include "arm_neon.h"
38921  
38922 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c
38923 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c  2007-07-25 14:28:31.000000000 +0200
38924 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c  2010-01-25 09:50:29.375686623 +0100
38925 @@ -3,7 +3,8 @@
38926  
38927  /* { dg-do assemble } */
38928  /* { dg-require-effective-target arm_neon_ok } */
38929 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38930 +/* { dg-options "-save-temps -O0" } */
38931 +/* { dg-add-options arm_neon } */
38932  
38933  #include "arm_neon.h"
38934  
38935 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c
38936 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c  2007-07-25 14:28:31.000000000 +0200
38937 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c  2010-01-25 09:50:29.375686623 +0100
38938 @@ -3,7 +3,8 @@
38939  
38940  /* { dg-do assemble } */
38941  /* { dg-require-effective-target arm_neon_ok } */
38942 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38943 +/* { dg-options "-save-temps -O0" } */
38944 +/* { dg-add-options arm_neon } */
38945  
38946  #include "arm_neon.h"
38947  
38948 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c
38949 --- a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c   2007-07-25 14:28:31.000000000 +0200
38950 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c   2010-01-25 09:50:29.375686623 +0100
38951 @@ -3,7 +3,8 @@
38952  
38953  /* { dg-do assemble } */
38954  /* { dg-require-effective-target arm_neon_ok } */
38955 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38956 +/* { dg-options "-save-temps -O0" } */
38957 +/* { dg-add-options arm_neon } */
38958  
38959  #include "arm_neon.h"
38960  
38961 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1p16.c b/gcc/testsuite/gcc.target/arm/neon/vld1p16.c
38962 --- a/gcc/testsuite/gcc.target/arm/neon/vld1p16.c       2007-07-25 14:28:31.000000000 +0200
38963 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1p16.c       2010-01-25 09:50:29.375686623 +0100
38964 @@ -3,7 +3,8 @@
38965  
38966  /* { dg-do assemble } */
38967  /* { dg-require-effective-target arm_neon_ok } */
38968 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38969 +/* { dg-options "-save-temps -O0" } */
38970 +/* { dg-add-options arm_neon } */
38971  
38972  #include "arm_neon.h"
38973  
38974 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1p8.c b/gcc/testsuite/gcc.target/arm/neon/vld1p8.c
38975 --- a/gcc/testsuite/gcc.target/arm/neon/vld1p8.c        2007-07-25 14:28:31.000000000 +0200
38976 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1p8.c        2010-01-25 09:50:29.375686623 +0100
38977 @@ -3,7 +3,8 @@
38978  
38979  /* { dg-do assemble } */
38980  /* { dg-require-effective-target arm_neon_ok } */
38981 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38982 +/* { dg-options "-save-temps -O0" } */
38983 +/* { dg-add-options arm_neon } */
38984  
38985  #include "arm_neon.h"
38986  
38987 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c
38988 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c  2007-07-25 14:28:31.000000000 +0200
38989 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c  2010-01-25 09:50:29.375686623 +0100
38990 @@ -3,7 +3,8 @@
38991  
38992  /* { dg-do assemble } */
38993  /* { dg-require-effective-target arm_neon_ok } */
38994 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
38995 +/* { dg-options "-save-temps -O0" } */
38996 +/* { dg-add-options arm_neon } */
38997  
38998  #include "arm_neon.h"
38999  
39000 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c
39001 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c  2007-07-25 14:28:31.000000000 +0200
39002 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c  2010-01-25 09:50:29.375686623 +0100
39003 @@ -3,7 +3,8 @@
39004  
39005  /* { dg-do assemble } */
39006  /* { dg-require-effective-target arm_neon_ok } */
39007 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39008 +/* { dg-options "-save-temps -O0" } */
39009 +/* { dg-add-options arm_neon } */
39010  
39011  #include "arm_neon.h"
39012  
39013 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c
39014 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c   2007-07-25 14:28:31.000000000 +0200
39015 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c   2010-01-25 09:50:29.375686623 +0100
39016 @@ -3,7 +3,8 @@
39017  
39018  /* { dg-do assemble } */
39019  /* { dg-require-effective-target arm_neon_ok } */
39020 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39021 +/* { dg-options "-save-temps -O0" } */
39022 +/* { dg-add-options arm_neon } */
39023  
39024  #include "arm_neon.h"
39025  
39026 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c
39027 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c  2007-07-25 14:28:31.000000000 +0200
39028 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c  2010-01-25 09:50:29.375686623 +0100
39029 @@ -3,7 +3,8 @@
39030  
39031  /* { dg-do assemble } */
39032  /* { dg-require-effective-target arm_neon_ok } */
39033 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39034 +/* { dg-options "-save-temps -O0" } */
39035 +/* { dg-add-options arm_neon } */
39036  
39037  #include "arm_neon.h"
39038  
39039 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c
39040 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c  2007-07-25 14:28:31.000000000 +0200
39041 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c  2010-01-25 09:50:29.375686623 +0100
39042 @@ -3,7 +3,8 @@
39043  
39044  /* { dg-do assemble } */
39045  /* { dg-require-effective-target arm_neon_ok } */
39046 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39047 +/* { dg-options "-save-temps -O0" } */
39048 +/* { dg-add-options arm_neon } */
39049  
39050  #include "arm_neon.h"
39051  
39052 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
39053 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c  2007-07-25 14:28:31.000000000 +0200
39054 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c  2010-01-25 09:50:29.375686623 +0100
39055 @@ -3,7 +3,8 @@
39056  
39057  /* { dg-do assemble } */
39058  /* { dg-require-effective-target arm_neon_ok } */
39059 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39060 +/* { dg-options "-save-temps -O0" } */
39061 +/* { dg-add-options arm_neon } */
39062  
39063  #include "arm_neon.h"
39064  
39065 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c
39066 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c   2007-07-25 14:28:31.000000000 +0200
39067 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c   2010-01-25 09:50:29.375686623 +0100
39068 @@ -3,7 +3,8 @@
39069  
39070  /* { dg-do assemble } */
39071  /* { dg-require-effective-target arm_neon_ok } */
39072 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39073 +/* { dg-options "-save-temps -O0" } */
39074 +/* { dg-add-options arm_neon } */
39075  
39076  #include "arm_neon.h"
39077  
39078 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c
39079 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c  2007-07-25 14:28:31.000000000 +0200
39080 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c  2010-01-25 09:50:29.375686623 +0100
39081 @@ -3,7 +3,8 @@
39082  
39083  /* { dg-do assemble } */
39084  /* { dg-require-effective-target arm_neon_ok } */
39085 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39086 +/* { dg-options "-save-temps -O0" } */
39087 +/* { dg-add-options arm_neon } */
39088  
39089  #include "arm_neon.h"
39090  
39091 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c
39092 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c  2007-07-25 14:28:31.000000000 +0200
39093 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c  2010-01-25 09:50:29.375686623 +0100
39094 @@ -3,7 +3,8 @@
39095  
39096  /* { dg-do assemble } */
39097  /* { dg-require-effective-target arm_neon_ok } */
39098 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39099 +/* { dg-options "-save-temps -O0" } */
39100 +/* { dg-add-options arm_neon } */
39101  
39102  #include "arm_neon.h"
39103  
39104 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
39105 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c  2007-07-25 14:28:31.000000000 +0200
39106 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c  2010-01-25 09:50:29.375686623 +0100
39107 @@ -3,7 +3,8 @@
39108  
39109  /* { dg-do assemble } */
39110  /* { dg-require-effective-target arm_neon_ok } */
39111 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39112 +/* { dg-options "-save-temps -O0" } */
39113 +/* { dg-add-options arm_neon } */
39114  
39115  #include "arm_neon.h"
39116  
39117 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c
39118 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c   2007-07-25 14:28:31.000000000 +0200
39119 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c   2010-01-25 09:50:29.375686623 +0100
39120 @@ -3,7 +3,8 @@
39121  
39122  /* { dg-do assemble } */
39123  /* { dg-require-effective-target arm_neon_ok } */
39124 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39125 +/* { dg-options "-save-temps -O0" } */
39126 +/* { dg-add-options arm_neon } */
39127  
39128  #include "arm_neon.h"
39129  
39130 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c
39131 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c      2007-07-25 14:28:31.000000000 +0200
39132 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c      2010-01-25 09:50:29.375686623 +0100
39133 @@ -3,7 +3,8 @@
39134  
39135  /* { dg-do assemble } */
39136  /* { dg-require-effective-target arm_neon_ok } */
39137 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39138 +/* { dg-options "-save-temps -O0" } */
39139 +/* { dg-add-options arm_neon } */
39140  
39141  #include "arm_neon.h"
39142  
39143 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c
39144 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c 2007-07-25 14:28:31.000000000 +0200
39145 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c 2010-01-25 09:50:29.375686623 +0100
39146 @@ -3,7 +3,8 @@
39147  
39148  /* { dg-do assemble } */
39149  /* { dg-require-effective-target arm_neon_ok } */
39150 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39151 +/* { dg-options "-save-temps -O0" } */
39152 +/* { dg-add-options arm_neon } */
39153  
39154  #include "arm_neon.h"
39155  
39156 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c
39157 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c 2007-07-25 14:28:31.000000000 +0200
39158 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c 2010-01-25 09:50:29.375686623 +0100
39159 @@ -3,7 +3,8 @@
39160  
39161  /* { dg-do assemble } */
39162  /* { dg-require-effective-target arm_neon_ok } */
39163 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39164 +/* { dg-options "-save-temps -O0" } */
39165 +/* { dg-add-options arm_neon } */
39166  
39167  #include "arm_neon.h"
39168  
39169 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c
39170 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c  2007-07-25 14:28:31.000000000 +0200
39171 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c  2010-01-25 09:50:29.375686623 +0100
39172 @@ -3,7 +3,8 @@
39173  
39174  /* { dg-do assemble } */
39175  /* { dg-require-effective-target arm_neon_ok } */
39176 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39177 +/* { dg-options "-save-temps -O0" } */
39178 +/* { dg-add-options arm_neon } */
39179  
39180  #include "arm_neon.h"
39181  
39182 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c
39183 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c 2007-07-25 14:28:31.000000000 +0200
39184 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c 2010-01-25 09:50:29.375686623 +0100
39185 @@ -3,7 +3,8 @@
39186  
39187  /* { dg-do assemble } */
39188  /* { dg-require-effective-target arm_neon_ok } */
39189 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39190 +/* { dg-options "-save-temps -O0" } */
39191 +/* { dg-add-options arm_neon } */
39192  
39193  #include "arm_neon.h"
39194  
39195 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c
39196 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c 2007-07-25 14:28:31.000000000 +0200
39197 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c 2010-01-25 09:50:29.375686623 +0100
39198 @@ -3,7 +3,8 @@
39199  
39200  /* { dg-do assemble } */
39201  /* { dg-require-effective-target arm_neon_ok } */
39202 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39203 +/* { dg-options "-save-temps -O0" } */
39204 +/* { dg-add-options arm_neon } */
39205  
39206  #include "arm_neon.h"
39207  
39208 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c
39209 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c 2007-07-25 14:28:31.000000000 +0200
39210 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c 2010-01-25 09:50:29.375686623 +0100
39211 @@ -3,7 +3,8 @@
39212  
39213  /* { dg-do assemble } */
39214  /* { dg-require-effective-target arm_neon_ok } */
39215 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39216 +/* { dg-options "-save-temps -O0" } */
39217 +/* { dg-add-options arm_neon } */
39218  
39219  #include "arm_neon.h"
39220  
39221 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c
39222 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c  2007-07-25 14:28:31.000000000 +0200
39223 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c  2010-01-25 09:50:29.375686623 +0100
39224 @@ -3,7 +3,8 @@
39225  
39226  /* { dg-do assemble } */
39227  /* { dg-require-effective-target arm_neon_ok } */
39228 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39229 +/* { dg-options "-save-temps -O0" } */
39230 +/* { dg-add-options arm_neon } */
39231  
39232  #include "arm_neon.h"
39233  
39234 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c
39235 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c 2007-07-25 14:28:31.000000000 +0200
39236 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c 2010-01-25 09:50:29.375686623 +0100
39237 @@ -3,7 +3,8 @@
39238  
39239  /* { dg-do assemble } */
39240  /* { dg-require-effective-target arm_neon_ok } */
39241 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39242 +/* { dg-options "-save-temps -O0" } */
39243 +/* { dg-add-options arm_neon } */
39244  
39245  #include "arm_neon.h"
39246  
39247 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c
39248 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c 2007-07-25 14:28:31.000000000 +0200
39249 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c 2010-01-25 09:50:29.375686623 +0100
39250 @@ -3,7 +3,8 @@
39251  
39252  /* { dg-do assemble } */
39253  /* { dg-require-effective-target arm_neon_ok } */
39254 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39255 +/* { dg-options "-save-temps -O0" } */
39256 +/* { dg-add-options arm_neon } */
39257  
39258  #include "arm_neon.h"
39259  
39260 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c
39261 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c 2007-07-25 14:28:31.000000000 +0200
39262 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c 2010-01-25 09:50:29.375686623 +0100
39263 @@ -3,7 +3,8 @@
39264  
39265  /* { dg-do assemble } */
39266  /* { dg-require-effective-target arm_neon_ok } */
39267 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39268 +/* { dg-options "-save-temps -O0" } */
39269 +/* { dg-add-options arm_neon } */
39270  
39271  #include "arm_neon.h"
39272  
39273 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c
39274 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c  2007-07-25 14:28:31.000000000 +0200
39275 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c  2010-01-25 09:50:29.375686623 +0100
39276 @@ -3,7 +3,8 @@
39277  
39278  /* { dg-do assemble } */
39279  /* { dg-require-effective-target arm_neon_ok } */
39280 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39281 +/* { dg-options "-save-temps -O0" } */
39282 +/* { dg-add-options arm_neon } */
39283  
39284  #include "arm_neon.h"
39285  
39286 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c
39287 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c      2007-07-25 14:28:31.000000000 +0200
39288 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c      2010-01-25 09:50:29.375686623 +0100
39289 @@ -3,7 +3,8 @@
39290  
39291  /* { dg-do assemble } */
39292  /* { dg-require-effective-target arm_neon_ok } */
39293 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39294 +/* { dg-options "-save-temps -O0" } */
39295 +/* { dg-add-options arm_neon } */
39296  
39297  #include "arm_neon.h"
39298  
39299 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c
39300 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c       2007-07-25 14:28:31.000000000 +0200
39301 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c       2010-01-25 09:50:29.375686623 +0100
39302 @@ -3,7 +3,8 @@
39303  
39304  /* { dg-do assemble } */
39305  /* { dg-require-effective-target arm_neon_ok } */
39306 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39307 +/* { dg-options "-save-temps -O0" } */
39308 +/* { dg-add-options arm_neon } */
39309  
39310  #include "arm_neon.h"
39311  
39312 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c
39313 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c      2007-07-25 14:28:31.000000000 +0200
39314 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c      2010-01-25 09:50:29.375686623 +0100
39315 @@ -3,7 +3,8 @@
39316  
39317  /* { dg-do assemble } */
39318  /* { dg-require-effective-target arm_neon_ok } */
39319 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39320 +/* { dg-options "-save-temps -O0" } */
39321 +/* { dg-add-options arm_neon } */
39322  
39323  #include "arm_neon.h"
39324  
39325 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c
39326 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c      2007-07-25 14:28:31.000000000 +0200
39327 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c      2010-01-25 09:50:29.375686623 +0100
39328 @@ -3,7 +3,8 @@
39329  
39330  /* { dg-do assemble } */
39331  /* { dg-require-effective-target arm_neon_ok } */
39332 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39333 +/* { dg-options "-save-temps -O0" } */
39334 +/* { dg-add-options arm_neon } */
39335  
39336  #include "arm_neon.h"
39337  
39338 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c
39339 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c      2007-07-25 14:28:31.000000000 +0200
39340 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c      2010-01-25 09:50:29.375686623 +0100
39341 @@ -3,7 +3,8 @@
39342  
39343  /* { dg-do assemble } */
39344  /* { dg-require-effective-target arm_neon_ok } */
39345 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39346 +/* { dg-options "-save-temps -O0" } */
39347 +/* { dg-add-options arm_neon } */
39348  
39349  #include "arm_neon.h"
39350  
39351 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c
39352 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c       2007-07-25 14:28:31.000000000 +0200
39353 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c       2010-01-25 09:50:29.375686623 +0100
39354 @@ -3,7 +3,8 @@
39355  
39356  /* { dg-do assemble } */
39357  /* { dg-require-effective-target arm_neon_ok } */
39358 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39359 +/* { dg-options "-save-temps -O0" } */
39360 +/* { dg-add-options arm_neon } */
39361  
39362  #include "arm_neon.h"
39363  
39364 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c
39365 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c      2007-07-25 14:28:31.000000000 +0200
39366 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c      2010-01-25 09:50:29.375686623 +0100
39367 @@ -3,7 +3,8 @@
39368  
39369  /* { dg-do assemble } */
39370  /* { dg-require-effective-target arm_neon_ok } */
39371 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39372 +/* { dg-options "-save-temps -O0" } */
39373 +/* { dg-add-options arm_neon } */
39374  
39375  #include "arm_neon.h"
39376  
39377 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c
39378 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c      2007-07-25 14:28:31.000000000 +0200
39379 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c      2010-01-25 09:50:29.375686623 +0100
39380 @@ -3,7 +3,8 @@
39381  
39382  /* { dg-do assemble } */
39383  /* { dg-require-effective-target arm_neon_ok } */
39384 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39385 +/* { dg-options "-save-temps -O0" } */
39386 +/* { dg-add-options arm_neon } */
39387  
39388  #include "arm_neon.h"
39389  
39390 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c
39391 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c      2007-07-25 14:28:31.000000000 +0200
39392 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c      2010-01-25 09:50:29.375686623 +0100
39393 @@ -3,7 +3,8 @@
39394  
39395  /* { dg-do assemble } */
39396  /* { dg-require-effective-target arm_neon_ok } */
39397 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39398 +/* { dg-options "-save-temps -O0" } */
39399 +/* { dg-add-options arm_neon } */
39400  
39401  #include "arm_neon.h"
39402  
39403 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c
39404 --- a/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c       2007-07-25 14:28:31.000000000 +0200
39405 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c       2010-01-25 09:50:29.375686623 +0100
39406 @@ -3,7 +3,8 @@
39407  
39408  /* { dg-do assemble } */
39409  /* { dg-require-effective-target arm_neon_ok } */
39410 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39411 +/* { dg-options "-save-temps -O0" } */
39412 +/* { dg-add-options arm_neon } */
39413  
39414  #include "arm_neon.h"
39415  
39416 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1s16.c b/gcc/testsuite/gcc.target/arm/neon/vld1s16.c
39417 --- a/gcc/testsuite/gcc.target/arm/neon/vld1s16.c       2007-07-25 14:28:31.000000000 +0200
39418 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1s16.c       2010-01-25 09:50:29.375686623 +0100
39419 @@ -3,7 +3,8 @@
39420  
39421  /* { dg-do assemble } */
39422  /* { dg-require-effective-target arm_neon_ok } */
39423 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39424 +/* { dg-options "-save-temps -O0" } */
39425 +/* { dg-add-options arm_neon } */
39426  
39427  #include "arm_neon.h"
39428  
39429 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1s32.c b/gcc/testsuite/gcc.target/arm/neon/vld1s32.c
39430 --- a/gcc/testsuite/gcc.target/arm/neon/vld1s32.c       2007-07-25 14:28:31.000000000 +0200
39431 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1s32.c       2010-01-25 09:50:29.375686623 +0100
39432 @@ -3,7 +3,8 @@
39433  
39434  /* { dg-do assemble } */
39435  /* { dg-require-effective-target arm_neon_ok } */
39436 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39437 +/* { dg-options "-save-temps -O0" } */
39438 +/* { dg-add-options arm_neon } */
39439  
39440  #include "arm_neon.h"
39441  
39442 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1s64.c b/gcc/testsuite/gcc.target/arm/neon/vld1s64.c
39443 --- a/gcc/testsuite/gcc.target/arm/neon/vld1s64.c       2007-07-25 14:28:31.000000000 +0200
39444 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1s64.c       2010-01-25 09:50:29.375686623 +0100
39445 @@ -3,7 +3,8 @@
39446  
39447  /* { dg-do assemble } */
39448  /* { dg-require-effective-target arm_neon_ok } */
39449 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39450 +/* { dg-options "-save-temps -O0" } */
39451 +/* { dg-add-options arm_neon } */
39452  
39453  #include "arm_neon.h"
39454  
39455 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1s8.c b/gcc/testsuite/gcc.target/arm/neon/vld1s8.c
39456 --- a/gcc/testsuite/gcc.target/arm/neon/vld1s8.c        2007-07-25 14:28:31.000000000 +0200
39457 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1s8.c        2010-01-25 09:50:29.375686623 +0100
39458 @@ -3,7 +3,8 @@
39459  
39460  /* { dg-do assemble } */
39461  /* { dg-require-effective-target arm_neon_ok } */
39462 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39463 +/* { dg-options "-save-temps -O0" } */
39464 +/* { dg-add-options arm_neon } */
39465  
39466  #include "arm_neon.h"
39467  
39468 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1u16.c b/gcc/testsuite/gcc.target/arm/neon/vld1u16.c
39469 --- a/gcc/testsuite/gcc.target/arm/neon/vld1u16.c       2007-07-25 14:28:31.000000000 +0200
39470 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1u16.c       2010-01-25 09:50:29.375686623 +0100
39471 @@ -3,7 +3,8 @@
39472  
39473  /* { dg-do assemble } */
39474  /* { dg-require-effective-target arm_neon_ok } */
39475 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39476 +/* { dg-options "-save-temps -O0" } */
39477 +/* { dg-add-options arm_neon } */
39478  
39479  #include "arm_neon.h"
39480  
39481 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1u32.c b/gcc/testsuite/gcc.target/arm/neon/vld1u32.c
39482 --- a/gcc/testsuite/gcc.target/arm/neon/vld1u32.c       2007-07-25 14:28:31.000000000 +0200
39483 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1u32.c       2010-01-25 09:50:29.375686623 +0100
39484 @@ -3,7 +3,8 @@
39485  
39486  /* { dg-do assemble } */
39487  /* { dg-require-effective-target arm_neon_ok } */
39488 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39489 +/* { dg-options "-save-temps -O0" } */
39490 +/* { dg-add-options arm_neon } */
39491  
39492  #include "arm_neon.h"
39493  
39494 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1u64.c b/gcc/testsuite/gcc.target/arm/neon/vld1u64.c
39495 --- a/gcc/testsuite/gcc.target/arm/neon/vld1u64.c       2007-07-25 14:28:31.000000000 +0200
39496 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1u64.c       2010-01-25 09:50:29.375686623 +0100
39497 @@ -3,7 +3,8 @@
39498  
39499  /* { dg-do assemble } */
39500  /* { dg-require-effective-target arm_neon_ok } */
39501 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39502 +/* { dg-options "-save-temps -O0" } */
39503 +/* { dg-add-options arm_neon } */
39504  
39505  #include "arm_neon.h"
39506  
39507 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1u8.c b/gcc/testsuite/gcc.target/arm/neon/vld1u8.c
39508 --- a/gcc/testsuite/gcc.target/arm/neon/vld1u8.c        2007-07-25 14:28:31.000000000 +0200
39509 +++ b/gcc/testsuite/gcc.target/arm/neon/vld1u8.c        2010-01-25 09:50:29.375686623 +0100
39510 @@ -3,7 +3,8 @@
39511  
39512  /* { dg-do assemble } */
39513  /* { dg-require-effective-target arm_neon_ok } */
39514 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39515 +/* { dg-options "-save-temps -O0" } */
39516 +/* { dg-add-options arm_neon } */
39517  
39518  #include "arm_neon.h"
39519  
39520 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c
39521 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c   2007-07-25 14:28:31.000000000 +0200
39522 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c   2010-01-25 09:50:29.375686623 +0100
39523 @@ -3,7 +3,8 @@
39524  
39525  /* { dg-do assemble } */
39526  /* { dg-require-effective-target arm_neon_ok } */
39527 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39528 +/* { dg-options "-save-temps -O0" } */
39529 +/* { dg-add-options arm_neon } */
39530  
39531  #include "arm_neon.h"
39532  
39533 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c
39534 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c   2007-07-25 14:28:31.000000000 +0200
39535 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c   2010-01-25 09:50:29.375686623 +0100
39536 @@ -3,7 +3,8 @@
39537  
39538  /* { dg-do assemble } */
39539  /* { dg-require-effective-target arm_neon_ok } */
39540 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39541 +/* { dg-options "-save-temps -O0" } */
39542 +/* { dg-add-options arm_neon } */
39543  
39544  #include "arm_neon.h"
39545  
39546 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c
39547 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c    2007-07-25 14:28:31.000000000 +0200
39548 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c    2010-01-25 09:50:29.375686623 +0100
39549 @@ -3,7 +3,8 @@
39550  
39551  /* { dg-do assemble } */
39552  /* { dg-require-effective-target arm_neon_ok } */
39553 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39554 +/* { dg-options "-save-temps -O0" } */
39555 +/* { dg-add-options arm_neon } */
39556  
39557  #include "arm_neon.h"
39558  
39559 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c
39560 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c   2007-07-25 14:28:31.000000000 +0200
39561 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c   2010-01-25 09:50:29.375686623 +0100
39562 @@ -3,7 +3,8 @@
39563  
39564  /* { dg-do assemble } */
39565  /* { dg-require-effective-target arm_neon_ok } */
39566 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39567 +/* { dg-options "-save-temps -O0" } */
39568 +/* { dg-add-options arm_neon } */
39569  
39570  #include "arm_neon.h"
39571  
39572 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c
39573 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c   2007-07-25 14:28:31.000000000 +0200
39574 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c   2010-01-25 09:50:29.375686623 +0100
39575 @@ -3,7 +3,8 @@
39576  
39577  /* { dg-do assemble } */
39578  /* { dg-require-effective-target arm_neon_ok } */
39579 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39580 +/* { dg-options "-save-temps -O0" } */
39581 +/* { dg-add-options arm_neon } */
39582  
39583  #include "arm_neon.h"
39584  
39585 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c
39586 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c   2007-07-25 14:28:31.000000000 +0200
39587 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c   2010-01-25 09:50:29.375686623 +0100
39588 @@ -3,7 +3,8 @@
39589  
39590  /* { dg-do assemble } */
39591  /* { dg-require-effective-target arm_neon_ok } */
39592 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39593 +/* { dg-options "-save-temps -O0" } */
39594 +/* { dg-add-options arm_neon } */
39595  
39596  #include "arm_neon.h"
39597  
39598 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c
39599 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c    2007-07-25 14:28:31.000000000 +0200
39600 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c    2010-01-25 09:50:29.375686623 +0100
39601 @@ -3,7 +3,8 @@
39602  
39603  /* { dg-do assemble } */
39604  /* { dg-require-effective-target arm_neon_ok } */
39605 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39606 +/* { dg-options "-save-temps -O0" } */
39607 +/* { dg-add-options arm_neon } */
39608  
39609  #include "arm_neon.h"
39610  
39611 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c
39612 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c   2007-07-25 14:28:31.000000000 +0200
39613 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c   2010-01-25 09:50:29.375686623 +0100
39614 @@ -3,7 +3,8 @@
39615  
39616  /* { dg-do assemble } */
39617  /* { dg-require-effective-target arm_neon_ok } */
39618 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39619 +/* { dg-options "-save-temps -O0" } */
39620 +/* { dg-add-options arm_neon } */
39621  
39622  #include "arm_neon.h"
39623  
39624 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c
39625 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c   2007-07-25 14:28:31.000000000 +0200
39626 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c   2010-01-25 09:50:29.375686623 +0100
39627 @@ -3,7 +3,8 @@
39628  
39629  /* { dg-do assemble } */
39630  /* { dg-require-effective-target arm_neon_ok } */
39631 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39632 +/* { dg-options "-save-temps -O0" } */
39633 +/* { dg-add-options arm_neon } */
39634  
39635  #include "arm_neon.h"
39636  
39637 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c
39638 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c   2007-07-25 14:28:31.000000000 +0200
39639 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c   2010-01-25 09:50:29.375686623 +0100
39640 @@ -3,7 +3,8 @@
39641  
39642  /* { dg-do assemble } */
39643  /* { dg-require-effective-target arm_neon_ok } */
39644 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39645 +/* { dg-options "-save-temps -O0" } */
39646 +/* { dg-add-options arm_neon } */
39647  
39648  #include "arm_neon.h"
39649  
39650 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c
39651 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c    2007-07-25 14:28:31.000000000 +0200
39652 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c    2010-01-25 09:50:29.375686623 +0100
39653 @@ -3,7 +3,8 @@
39654  
39655  /* { dg-do assemble } */
39656  /* { dg-require-effective-target arm_neon_ok } */
39657 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39658 +/* { dg-options "-save-temps -O0" } */
39659 +/* { dg-add-options arm_neon } */
39660  
39661  #include "arm_neon.h"
39662  
39663 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2f32.c b/gcc/testsuite/gcc.target/arm/neon/vld2f32.c
39664 --- a/gcc/testsuite/gcc.target/arm/neon/vld2f32.c       2007-07-25 14:28:31.000000000 +0200
39665 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2f32.c       2010-01-25 09:50:29.375686623 +0100
39666 @@ -3,7 +3,8 @@
39667  
39668  /* { dg-do assemble } */
39669  /* { dg-require-effective-target arm_neon_ok } */
39670 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39671 +/* { dg-options "-save-temps -O0" } */
39672 +/* { dg-add-options arm_neon } */
39673  
39674  #include "arm_neon.h"
39675  
39676 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c
39677 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c  2007-07-25 14:28:31.000000000 +0200
39678 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c  2010-01-25 09:50:29.375686623 +0100
39679 @@ -3,7 +3,8 @@
39680  
39681  /* { dg-do assemble } */
39682  /* { dg-require-effective-target arm_neon_ok } */
39683 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39684 +/* { dg-options "-save-temps -O0" } */
39685 +/* { dg-add-options arm_neon } */
39686  
39687  #include "arm_neon.h"
39688  
39689 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c
39690 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c  2007-07-25 14:28:31.000000000 +0200
39691 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c  2010-01-25 09:50:29.385686707 +0100
39692 @@ -3,7 +3,8 @@
39693  
39694  /* { dg-do assemble } */
39695  /* { dg-require-effective-target arm_neon_ok } */
39696 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39697 +/* { dg-options "-save-temps -O0" } */
39698 +/* { dg-add-options arm_neon } */
39699  
39700  #include "arm_neon.h"
39701  
39702 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c
39703 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c   2007-07-25 14:28:31.000000000 +0200
39704 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c   2010-01-25 09:50:29.385686707 +0100
39705 @@ -3,7 +3,8 @@
39706  
39707  /* { dg-do assemble } */
39708  /* { dg-require-effective-target arm_neon_ok } */
39709 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39710 +/* { dg-options "-save-temps -O0" } */
39711 +/* { dg-add-options arm_neon } */
39712  
39713  #include "arm_neon.h"
39714  
39715 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c
39716 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c  2007-07-25 14:28:31.000000000 +0200
39717 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c  2010-01-25 09:50:29.385686707 +0100
39718 @@ -3,7 +3,8 @@
39719  
39720  /* { dg-do assemble } */
39721  /* { dg-require-effective-target arm_neon_ok } */
39722 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39723 +/* { dg-options "-save-temps -O0" } */
39724 +/* { dg-add-options arm_neon } */
39725  
39726  #include "arm_neon.h"
39727  
39728 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c
39729 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c  2007-07-25 14:28:31.000000000 +0200
39730 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c  2010-01-25 09:50:29.385686707 +0100
39731 @@ -3,7 +3,8 @@
39732  
39733  /* { dg-do assemble } */
39734  /* { dg-require-effective-target arm_neon_ok } */
39735 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39736 +/* { dg-options "-save-temps -O0" } */
39737 +/* { dg-add-options arm_neon } */
39738  
39739  #include "arm_neon.h"
39740  
39741 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c
39742 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c   2007-07-25 14:28:31.000000000 +0200
39743 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c   2010-01-25 09:50:29.385686707 +0100
39744 @@ -3,7 +3,8 @@
39745  
39746  /* { dg-do assemble } */
39747  /* { dg-require-effective-target arm_neon_ok } */
39748 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39749 +/* { dg-options "-save-temps -O0" } */
39750 +/* { dg-add-options arm_neon } */
39751  
39752  #include "arm_neon.h"
39753  
39754 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c
39755 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c  2007-07-25 14:28:31.000000000 +0200
39756 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c  2010-01-25 09:50:29.385686707 +0100
39757 @@ -3,7 +3,8 @@
39758  
39759  /* { dg-do assemble } */
39760  /* { dg-require-effective-target arm_neon_ok } */
39761 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39762 +/* { dg-options "-save-temps -O0" } */
39763 +/* { dg-add-options arm_neon } */
39764  
39765  #include "arm_neon.h"
39766  
39767 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c
39768 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c  2007-07-25 14:28:31.000000000 +0200
39769 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c  2010-01-25 09:50:29.385686707 +0100
39770 @@ -3,7 +3,8 @@
39771  
39772  /* { dg-do assemble } */
39773  /* { dg-require-effective-target arm_neon_ok } */
39774 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39775 +/* { dg-options "-save-temps -O0" } */
39776 +/* { dg-add-options arm_neon } */
39777  
39778  #include "arm_neon.h"
39779  
39780 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c
39781 --- a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c   2007-07-25 14:28:31.000000000 +0200
39782 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c   2010-01-25 09:50:29.385686707 +0100
39783 @@ -3,7 +3,8 @@
39784  
39785  /* { dg-do assemble } */
39786  /* { dg-require-effective-target arm_neon_ok } */
39787 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39788 +/* { dg-options "-save-temps -O0" } */
39789 +/* { dg-add-options arm_neon } */
39790  
39791  #include "arm_neon.h"
39792  
39793 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2p16.c b/gcc/testsuite/gcc.target/arm/neon/vld2p16.c
39794 --- a/gcc/testsuite/gcc.target/arm/neon/vld2p16.c       2007-07-25 14:28:31.000000000 +0200
39795 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2p16.c       2010-01-25 09:50:29.385686707 +0100
39796 @@ -3,7 +3,8 @@
39797  
39798  /* { dg-do assemble } */
39799  /* { dg-require-effective-target arm_neon_ok } */
39800 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39801 +/* { dg-options "-save-temps -O0" } */
39802 +/* { dg-add-options arm_neon } */
39803  
39804  #include "arm_neon.h"
39805  
39806 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2p8.c b/gcc/testsuite/gcc.target/arm/neon/vld2p8.c
39807 --- a/gcc/testsuite/gcc.target/arm/neon/vld2p8.c        2007-07-25 14:28:31.000000000 +0200
39808 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2p8.c        2010-01-25 09:50:29.385686707 +0100
39809 @@ -3,7 +3,8 @@
39810  
39811  /* { dg-do assemble } */
39812  /* { dg-require-effective-target arm_neon_ok } */
39813 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39814 +/* { dg-options "-save-temps -O0" } */
39815 +/* { dg-add-options arm_neon } */
39816  
39817  #include "arm_neon.h"
39818  
39819 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c
39820 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c      2007-07-25 14:28:31.000000000 +0200
39821 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c      2010-01-25 09:50:29.385686707 +0100
39822 @@ -3,7 +3,8 @@
39823  
39824  /* { dg-do assemble } */
39825  /* { dg-require-effective-target arm_neon_ok } */
39826 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39827 +/* { dg-options "-save-temps -O0" } */
39828 +/* { dg-add-options arm_neon } */
39829  
39830  #include "arm_neon.h"
39831  
39832 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c
39833 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c 2007-07-25 14:28:31.000000000 +0200
39834 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c 2010-01-25 09:50:29.385686707 +0100
39835 @@ -3,7 +3,8 @@
39836  
39837  /* { dg-do assemble } */
39838  /* { dg-require-effective-target arm_neon_ok } */
39839 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39840 +/* { dg-options "-save-temps -O0" } */
39841 +/* { dg-add-options arm_neon } */
39842  
39843  #include "arm_neon.h"
39844  
39845 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c
39846 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c 2007-07-25 14:28:31.000000000 +0200
39847 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c 2010-01-25 09:50:29.385686707 +0100
39848 @@ -3,7 +3,8 @@
39849  
39850  /* { dg-do assemble } */
39851  /* { dg-require-effective-target arm_neon_ok } */
39852 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39853 +/* { dg-options "-save-temps -O0" } */
39854 +/* { dg-add-options arm_neon } */
39855  
39856  #include "arm_neon.h"
39857  
39858 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c
39859 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c 2007-07-25 14:28:31.000000000 +0200
39860 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c 2010-01-25 09:50:29.385686707 +0100
39861 @@ -3,7 +3,8 @@
39862  
39863  /* { dg-do assemble } */
39864  /* { dg-require-effective-target arm_neon_ok } */
39865 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39866 +/* { dg-options "-save-temps -O0" } */
39867 +/* { dg-add-options arm_neon } */
39868  
39869  #include "arm_neon.h"
39870  
39871 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c
39872 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c 2007-07-25 14:28:31.000000000 +0200
39873 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c 2010-01-25 09:50:29.385686707 +0100
39874 @@ -3,7 +3,8 @@
39875  
39876  /* { dg-do assemble } */
39877  /* { dg-require-effective-target arm_neon_ok } */
39878 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39879 +/* { dg-options "-save-temps -O0" } */
39880 +/* { dg-add-options arm_neon } */
39881  
39882  #include "arm_neon.h"
39883  
39884 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c
39885 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c 2007-07-25 14:28:31.000000000 +0200
39886 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c 2010-01-25 09:50:29.385686707 +0100
39887 @@ -3,7 +3,8 @@
39888  
39889  /* { dg-do assemble } */
39890  /* { dg-require-effective-target arm_neon_ok } */
39891 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39892 +/* { dg-options "-save-temps -O0" } */
39893 +/* { dg-add-options arm_neon } */
39894  
39895  #include "arm_neon.h"
39896  
39897 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c
39898 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c 2007-07-25 14:28:31.000000000 +0200
39899 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c 2010-01-25 09:50:29.385686707 +0100
39900 @@ -3,7 +3,8 @@
39901  
39902  /* { dg-do assemble } */
39903  /* { dg-require-effective-target arm_neon_ok } */
39904 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39905 +/* { dg-options "-save-temps -O0" } */
39906 +/* { dg-add-options arm_neon } */
39907  
39908  #include "arm_neon.h"
39909  
39910 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c
39911 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c      2007-07-25 14:28:31.000000000 +0200
39912 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c      2010-01-25 09:50:29.385686707 +0100
39913 @@ -3,7 +3,8 @@
39914  
39915  /* { dg-do assemble } */
39916  /* { dg-require-effective-target arm_neon_ok } */
39917 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39918 +/* { dg-options "-save-temps -O0" } */
39919 +/* { dg-add-options arm_neon } */
39920  
39921  #include "arm_neon.h"
39922  
39923 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c
39924 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c       2007-07-25 14:28:31.000000000 +0200
39925 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c       2010-01-25 09:50:29.385686707 +0100
39926 @@ -3,7 +3,8 @@
39927  
39928  /* { dg-do assemble } */
39929  /* { dg-require-effective-target arm_neon_ok } */
39930 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39931 +/* { dg-options "-save-temps -O0" } */
39932 +/* { dg-add-options arm_neon } */
39933  
39934  #include "arm_neon.h"
39935  
39936 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c
39937 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c      2007-07-25 14:28:31.000000000 +0200
39938 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c      2010-01-25 09:50:29.385686707 +0100
39939 @@ -3,7 +3,8 @@
39940  
39941  /* { dg-do assemble } */
39942  /* { dg-require-effective-target arm_neon_ok } */
39943 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39944 +/* { dg-options "-save-temps -O0" } */
39945 +/* { dg-add-options arm_neon } */
39946  
39947  #include "arm_neon.h"
39948  
39949 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c
39950 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c      2007-07-25 14:28:31.000000000 +0200
39951 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c      2010-01-25 09:50:29.385686707 +0100
39952 @@ -3,7 +3,8 @@
39953  
39954  /* { dg-do assemble } */
39955  /* { dg-require-effective-target arm_neon_ok } */
39956 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39957 +/* { dg-options "-save-temps -O0" } */
39958 +/* { dg-add-options arm_neon } */
39959  
39960  #include "arm_neon.h"
39961  
39962 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c
39963 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c       2007-07-25 14:28:31.000000000 +0200
39964 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c       2010-01-25 09:50:29.385686707 +0100
39965 @@ -3,7 +3,8 @@
39966  
39967  /* { dg-do assemble } */
39968  /* { dg-require-effective-target arm_neon_ok } */
39969 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39970 +/* { dg-options "-save-temps -O0" } */
39971 +/* { dg-add-options arm_neon } */
39972  
39973  #include "arm_neon.h"
39974  
39975 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c
39976 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c      2007-07-25 14:28:31.000000000 +0200
39977 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c      2010-01-25 09:50:29.385686707 +0100
39978 @@ -3,7 +3,8 @@
39979  
39980  /* { dg-do assemble } */
39981  /* { dg-require-effective-target arm_neon_ok } */
39982 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39983 +/* { dg-options "-save-temps -O0" } */
39984 +/* { dg-add-options arm_neon } */
39985  
39986  #include "arm_neon.h"
39987  
39988 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c
39989 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c      2007-07-25 14:28:31.000000000 +0200
39990 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c      2010-01-25 09:50:29.385686707 +0100
39991 @@ -3,7 +3,8 @@
39992  
39993  /* { dg-do assemble } */
39994  /* { dg-require-effective-target arm_neon_ok } */
39995 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
39996 +/* { dg-options "-save-temps -O0" } */
39997 +/* { dg-add-options arm_neon } */
39998  
39999  #include "arm_neon.h"
40000  
40001 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c
40002 --- a/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c       2007-07-25 14:28:31.000000000 +0200
40003 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c       2010-01-25 09:50:29.385686707 +0100
40004 @@ -3,7 +3,8 @@
40005  
40006  /* { dg-do assemble } */
40007  /* { dg-require-effective-target arm_neon_ok } */
40008 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40009 +/* { dg-options "-save-temps -O0" } */
40010 +/* { dg-add-options arm_neon } */
40011  
40012  #include "arm_neon.h"
40013  
40014 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2s16.c b/gcc/testsuite/gcc.target/arm/neon/vld2s16.c
40015 --- a/gcc/testsuite/gcc.target/arm/neon/vld2s16.c       2007-07-25 14:28:31.000000000 +0200
40016 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2s16.c       2010-01-25 09:50:29.385686707 +0100
40017 @@ -3,7 +3,8 @@
40018  
40019  /* { dg-do assemble } */
40020  /* { dg-require-effective-target arm_neon_ok } */
40021 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40022 +/* { dg-options "-save-temps -O0" } */
40023 +/* { dg-add-options arm_neon } */
40024  
40025  #include "arm_neon.h"
40026  
40027 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2s32.c b/gcc/testsuite/gcc.target/arm/neon/vld2s32.c
40028 --- a/gcc/testsuite/gcc.target/arm/neon/vld2s32.c       2007-07-25 14:28:31.000000000 +0200
40029 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2s32.c       2010-01-25 09:50:29.385686707 +0100
40030 @@ -3,7 +3,8 @@
40031  
40032  /* { dg-do assemble } */
40033  /* { dg-require-effective-target arm_neon_ok } */
40034 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40035 +/* { dg-options "-save-temps -O0" } */
40036 +/* { dg-add-options arm_neon } */
40037  
40038  #include "arm_neon.h"
40039  
40040 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2s64.c b/gcc/testsuite/gcc.target/arm/neon/vld2s64.c
40041 --- a/gcc/testsuite/gcc.target/arm/neon/vld2s64.c       2007-07-25 14:28:31.000000000 +0200
40042 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2s64.c       2010-01-25 09:50:29.385686707 +0100
40043 @@ -3,7 +3,8 @@
40044  
40045  /* { dg-do assemble } */
40046  /* { dg-require-effective-target arm_neon_ok } */
40047 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40048 +/* { dg-options "-save-temps -O0" } */
40049 +/* { dg-add-options arm_neon } */
40050  
40051  #include "arm_neon.h"
40052  
40053 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2s8.c b/gcc/testsuite/gcc.target/arm/neon/vld2s8.c
40054 --- a/gcc/testsuite/gcc.target/arm/neon/vld2s8.c        2007-07-25 14:28:31.000000000 +0200
40055 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2s8.c        2010-01-25 09:50:29.385686707 +0100
40056 @@ -3,7 +3,8 @@
40057  
40058  /* { dg-do assemble } */
40059  /* { dg-require-effective-target arm_neon_ok } */
40060 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40061 +/* { dg-options "-save-temps -O0" } */
40062 +/* { dg-add-options arm_neon } */
40063  
40064  #include "arm_neon.h"
40065  
40066 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2u16.c b/gcc/testsuite/gcc.target/arm/neon/vld2u16.c
40067 --- a/gcc/testsuite/gcc.target/arm/neon/vld2u16.c       2007-07-25 14:28:31.000000000 +0200
40068 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2u16.c       2010-01-25 09:50:29.385686707 +0100
40069 @@ -3,7 +3,8 @@
40070  
40071  /* { dg-do assemble } */
40072  /* { dg-require-effective-target arm_neon_ok } */
40073 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40074 +/* { dg-options "-save-temps -O0" } */
40075 +/* { dg-add-options arm_neon } */
40076  
40077  #include "arm_neon.h"
40078  
40079 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2u32.c b/gcc/testsuite/gcc.target/arm/neon/vld2u32.c
40080 --- a/gcc/testsuite/gcc.target/arm/neon/vld2u32.c       2007-07-25 14:28:31.000000000 +0200
40081 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2u32.c       2010-01-25 09:50:29.385686707 +0100
40082 @@ -3,7 +3,8 @@
40083  
40084  /* { dg-do assemble } */
40085  /* { dg-require-effective-target arm_neon_ok } */
40086 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40087 +/* { dg-options "-save-temps -O0" } */
40088 +/* { dg-add-options arm_neon } */
40089  
40090  #include "arm_neon.h"
40091  
40092 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2u64.c b/gcc/testsuite/gcc.target/arm/neon/vld2u64.c
40093 --- a/gcc/testsuite/gcc.target/arm/neon/vld2u64.c       2007-07-25 14:28:31.000000000 +0200
40094 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2u64.c       2010-01-25 09:50:29.385686707 +0100
40095 @@ -3,7 +3,8 @@
40096  
40097  /* { dg-do assemble } */
40098  /* { dg-require-effective-target arm_neon_ok } */
40099 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40100 +/* { dg-options "-save-temps -O0" } */
40101 +/* { dg-add-options arm_neon } */
40102  
40103  #include "arm_neon.h"
40104  
40105 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2u8.c b/gcc/testsuite/gcc.target/arm/neon/vld2u8.c
40106 --- a/gcc/testsuite/gcc.target/arm/neon/vld2u8.c        2007-07-25 14:28:31.000000000 +0200
40107 +++ b/gcc/testsuite/gcc.target/arm/neon/vld2u8.c        2010-01-25 09:50:29.385686707 +0100
40108 @@ -3,7 +3,8 @@
40109  
40110  /* { dg-do assemble } */
40111  /* { dg-require-effective-target arm_neon_ok } */
40112 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40113 +/* { dg-options "-save-temps -O0" } */
40114 +/* { dg-add-options arm_neon } */
40115  
40116  #include "arm_neon.h"
40117  
40118 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c
40119 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c   2007-07-25 14:28:31.000000000 +0200
40120 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c   2010-01-25 09:50:29.385686707 +0100
40121 @@ -3,7 +3,8 @@
40122  
40123  /* { dg-do assemble } */
40124  /* { dg-require-effective-target arm_neon_ok } */
40125 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40126 +/* { dg-options "-save-temps -O0" } */
40127 +/* { dg-add-options arm_neon } */
40128  
40129  #include "arm_neon.h"
40130  
40131 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c
40132 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c   2007-07-25 14:28:31.000000000 +0200
40133 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c   2010-01-25 09:50:29.385686707 +0100
40134 @@ -3,7 +3,8 @@
40135  
40136  /* { dg-do assemble } */
40137  /* { dg-require-effective-target arm_neon_ok } */
40138 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40139 +/* { dg-options "-save-temps -O0" } */
40140 +/* { dg-add-options arm_neon } */
40141  
40142  #include "arm_neon.h"
40143  
40144 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c
40145 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c    2007-07-25 14:28:31.000000000 +0200
40146 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c    2010-01-25 09:50:29.385686707 +0100
40147 @@ -3,7 +3,8 @@
40148  
40149  /* { dg-do assemble } */
40150  /* { dg-require-effective-target arm_neon_ok } */
40151 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40152 +/* { dg-options "-save-temps -O0" } */
40153 +/* { dg-add-options arm_neon } */
40154  
40155  #include "arm_neon.h"
40156  
40157 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c
40158 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c   2007-07-25 14:28:31.000000000 +0200
40159 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c   2010-01-25 09:50:29.385686707 +0100
40160 @@ -3,7 +3,8 @@
40161  
40162  /* { dg-do assemble } */
40163  /* { dg-require-effective-target arm_neon_ok } */
40164 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40165 +/* { dg-options "-save-temps -O0" } */
40166 +/* { dg-add-options arm_neon } */
40167  
40168  #include "arm_neon.h"
40169  
40170 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c
40171 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c   2007-07-25 14:28:31.000000000 +0200
40172 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c   2010-01-25 09:50:29.385686707 +0100
40173 @@ -3,7 +3,8 @@
40174  
40175  /* { dg-do assemble } */
40176  /* { dg-require-effective-target arm_neon_ok } */
40177 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40178 +/* { dg-options "-save-temps -O0" } */
40179 +/* { dg-add-options arm_neon } */
40180  
40181  #include "arm_neon.h"
40182  
40183 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c
40184 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c   2007-07-25 14:28:31.000000000 +0200
40185 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c   2010-01-25 09:50:29.385686707 +0100
40186 @@ -3,7 +3,8 @@
40187  
40188  /* { dg-do assemble } */
40189  /* { dg-require-effective-target arm_neon_ok } */
40190 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40191 +/* { dg-options "-save-temps -O0" } */
40192 +/* { dg-add-options arm_neon } */
40193  
40194  #include "arm_neon.h"
40195  
40196 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c
40197 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c    2007-07-25 14:28:31.000000000 +0200
40198 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c    2010-01-25 09:50:29.385686707 +0100
40199 @@ -3,7 +3,8 @@
40200  
40201  /* { dg-do assemble } */
40202  /* { dg-require-effective-target arm_neon_ok } */
40203 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40204 +/* { dg-options "-save-temps -O0" } */
40205 +/* { dg-add-options arm_neon } */
40206  
40207  #include "arm_neon.h"
40208  
40209 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c
40210 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c   2007-07-25 14:28:31.000000000 +0200
40211 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c   2010-01-25 09:50:29.385686707 +0100
40212 @@ -3,7 +3,8 @@
40213  
40214  /* { dg-do assemble } */
40215  /* { dg-require-effective-target arm_neon_ok } */
40216 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40217 +/* { dg-options "-save-temps -O0" } */
40218 +/* { dg-add-options arm_neon } */
40219  
40220  #include "arm_neon.h"
40221  
40222 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c
40223 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c   2007-07-25 14:28:31.000000000 +0200
40224 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c   2010-01-25 09:50:29.385686707 +0100
40225 @@ -3,7 +3,8 @@
40226  
40227  /* { dg-do assemble } */
40228  /* { dg-require-effective-target arm_neon_ok } */
40229 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40230 +/* { dg-options "-save-temps -O0" } */
40231 +/* { dg-add-options arm_neon } */
40232  
40233  #include "arm_neon.h"
40234  
40235 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c
40236 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c   2007-07-25 14:28:31.000000000 +0200
40237 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c   2010-01-25 09:50:29.385686707 +0100
40238 @@ -3,7 +3,8 @@
40239  
40240  /* { dg-do assemble } */
40241  /* { dg-require-effective-target arm_neon_ok } */
40242 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40243 +/* { dg-options "-save-temps -O0" } */
40244 +/* { dg-add-options arm_neon } */
40245  
40246  #include "arm_neon.h"
40247  
40248 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c
40249 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c    2007-07-25 14:28:31.000000000 +0200
40250 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c    2010-01-25 09:50:29.385686707 +0100
40251 @@ -3,7 +3,8 @@
40252  
40253  /* { dg-do assemble } */
40254  /* { dg-require-effective-target arm_neon_ok } */
40255 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40256 +/* { dg-options "-save-temps -O0" } */
40257 +/* { dg-add-options arm_neon } */
40258  
40259  #include "arm_neon.h"
40260  
40261 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3f32.c b/gcc/testsuite/gcc.target/arm/neon/vld3f32.c
40262 --- a/gcc/testsuite/gcc.target/arm/neon/vld3f32.c       2007-07-25 14:28:31.000000000 +0200
40263 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3f32.c       2010-01-25 09:50:29.385686707 +0100
40264 @@ -3,7 +3,8 @@
40265  
40266  /* { dg-do assemble } */
40267  /* { dg-require-effective-target arm_neon_ok } */
40268 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40269 +/* { dg-options "-save-temps -O0" } */
40270 +/* { dg-add-options arm_neon } */
40271  
40272  #include "arm_neon.h"
40273  
40274 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c
40275 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c  2007-07-25 14:28:31.000000000 +0200
40276 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c  2010-01-25 09:50:29.385686707 +0100
40277 @@ -3,7 +3,8 @@
40278  
40279  /* { dg-do assemble } */
40280  /* { dg-require-effective-target arm_neon_ok } */
40281 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40282 +/* { dg-options "-save-temps -O0" } */
40283 +/* { dg-add-options arm_neon } */
40284  
40285  #include "arm_neon.h"
40286  
40287 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c
40288 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c  2007-07-25 14:28:31.000000000 +0200
40289 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c  2010-01-25 09:50:29.385686707 +0100
40290 @@ -3,7 +3,8 @@
40291  
40292  /* { dg-do assemble } */
40293  /* { dg-require-effective-target arm_neon_ok } */
40294 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40295 +/* { dg-options "-save-temps -O0" } */
40296 +/* { dg-add-options arm_neon } */
40297  
40298  #include "arm_neon.h"
40299  
40300 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c
40301 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c   2007-07-25 14:28:31.000000000 +0200
40302 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c   2010-01-25 09:50:29.385686707 +0100
40303 @@ -3,7 +3,8 @@
40304  
40305  /* { dg-do assemble } */
40306  /* { dg-require-effective-target arm_neon_ok } */
40307 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40308 +/* { dg-options "-save-temps -O0" } */
40309 +/* { dg-add-options arm_neon } */
40310  
40311  #include "arm_neon.h"
40312  
40313 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c
40314 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c  2007-07-25 14:28:31.000000000 +0200
40315 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c  2010-01-25 09:50:29.385686707 +0100
40316 @@ -3,7 +3,8 @@
40317  
40318  /* { dg-do assemble } */
40319  /* { dg-require-effective-target arm_neon_ok } */
40320 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40321 +/* { dg-options "-save-temps -O0" } */
40322 +/* { dg-add-options arm_neon } */
40323  
40324  #include "arm_neon.h"
40325  
40326 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c
40327 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c  2007-07-25 14:28:31.000000000 +0200
40328 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c  2010-01-25 09:50:29.385686707 +0100
40329 @@ -3,7 +3,8 @@
40330  
40331  /* { dg-do assemble } */
40332  /* { dg-require-effective-target arm_neon_ok } */
40333 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40334 +/* { dg-options "-save-temps -O0" } */
40335 +/* { dg-add-options arm_neon } */
40336  
40337  #include "arm_neon.h"
40338  
40339 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c
40340 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c   2007-07-25 14:28:31.000000000 +0200
40341 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c   2010-01-25 09:50:29.385686707 +0100
40342 @@ -3,7 +3,8 @@
40343  
40344  /* { dg-do assemble } */
40345  /* { dg-require-effective-target arm_neon_ok } */
40346 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40347 +/* { dg-options "-save-temps -O0" } */
40348 +/* { dg-add-options arm_neon } */
40349  
40350  #include "arm_neon.h"
40351  
40352 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c
40353 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c  2007-07-25 14:28:31.000000000 +0200
40354 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c  2010-01-25 09:50:29.385686707 +0100
40355 @@ -3,7 +3,8 @@
40356  
40357  /* { dg-do assemble } */
40358  /* { dg-require-effective-target arm_neon_ok } */
40359 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40360 +/* { dg-options "-save-temps -O0" } */
40361 +/* { dg-add-options arm_neon } */
40362  
40363  #include "arm_neon.h"
40364  
40365 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c
40366 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c  2007-07-25 14:28:31.000000000 +0200
40367 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c  2010-01-25 09:50:29.385686707 +0100
40368 @@ -3,7 +3,8 @@
40369  
40370  /* { dg-do assemble } */
40371  /* { dg-require-effective-target arm_neon_ok } */
40372 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40373 +/* { dg-options "-save-temps -O0" } */
40374 +/* { dg-add-options arm_neon } */
40375  
40376  #include "arm_neon.h"
40377  
40378 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c
40379 --- a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c   2007-07-25 14:28:31.000000000 +0200
40380 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c   2010-01-25 09:50:29.385686707 +0100
40381 @@ -3,7 +3,8 @@
40382  
40383  /* { dg-do assemble } */
40384  /* { dg-require-effective-target arm_neon_ok } */
40385 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40386 +/* { dg-options "-save-temps -O0" } */
40387 +/* { dg-add-options arm_neon } */
40388  
40389  #include "arm_neon.h"
40390  
40391 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3p16.c b/gcc/testsuite/gcc.target/arm/neon/vld3p16.c
40392 --- a/gcc/testsuite/gcc.target/arm/neon/vld3p16.c       2007-07-25 14:28:31.000000000 +0200
40393 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3p16.c       2010-01-25 09:50:29.385686707 +0100
40394 @@ -3,7 +3,8 @@
40395  
40396  /* { dg-do assemble } */
40397  /* { dg-require-effective-target arm_neon_ok } */
40398 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40399 +/* { dg-options "-save-temps -O0" } */
40400 +/* { dg-add-options arm_neon } */
40401  
40402  #include "arm_neon.h"
40403  
40404 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3p8.c b/gcc/testsuite/gcc.target/arm/neon/vld3p8.c
40405 --- a/gcc/testsuite/gcc.target/arm/neon/vld3p8.c        2007-07-25 14:28:31.000000000 +0200
40406 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3p8.c        2010-01-25 09:50:29.385686707 +0100
40407 @@ -3,7 +3,8 @@
40408  
40409  /* { dg-do assemble } */
40410  /* { dg-require-effective-target arm_neon_ok } */
40411 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40412 +/* { dg-options "-save-temps -O0" } */
40413 +/* { dg-add-options arm_neon } */
40414  
40415  #include "arm_neon.h"
40416  
40417 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c
40418 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c      2007-07-25 14:28:31.000000000 +0200
40419 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c      2010-01-25 09:50:29.385686707 +0100
40420 @@ -3,7 +3,8 @@
40421  
40422  /* { dg-do assemble } */
40423  /* { dg-require-effective-target arm_neon_ok } */
40424 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40425 +/* { dg-options "-save-temps -O0" } */
40426 +/* { dg-add-options arm_neon } */
40427  
40428  #include "arm_neon.h"
40429  
40430 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c
40431 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c 2007-07-25 14:28:31.000000000 +0200
40432 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c 2010-01-25 09:50:29.385686707 +0100
40433 @@ -3,7 +3,8 @@
40434  
40435  /* { dg-do assemble } */
40436  /* { dg-require-effective-target arm_neon_ok } */
40437 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40438 +/* { dg-options "-save-temps -O0" } */
40439 +/* { dg-add-options arm_neon } */
40440  
40441  #include "arm_neon.h"
40442  
40443 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c
40444 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c 2007-07-25 14:28:31.000000000 +0200
40445 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c 2010-01-25 09:50:29.385686707 +0100
40446 @@ -3,7 +3,8 @@
40447  
40448  /* { dg-do assemble } */
40449  /* { dg-require-effective-target arm_neon_ok } */
40450 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40451 +/* { dg-options "-save-temps -O0" } */
40452 +/* { dg-add-options arm_neon } */
40453  
40454  #include "arm_neon.h"
40455  
40456 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c
40457 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c 2007-07-25 14:28:31.000000000 +0200
40458 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c 2010-01-25 09:50:29.385686707 +0100
40459 @@ -3,7 +3,8 @@
40460  
40461  /* { dg-do assemble } */
40462  /* { dg-require-effective-target arm_neon_ok } */
40463 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40464 +/* { dg-options "-save-temps -O0" } */
40465 +/* { dg-add-options arm_neon } */
40466  
40467  #include "arm_neon.h"
40468  
40469 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c
40470 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c 2007-07-25 14:28:31.000000000 +0200
40471 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c 2010-01-25 09:50:29.385686707 +0100
40472 @@ -3,7 +3,8 @@
40473  
40474  /* { dg-do assemble } */
40475  /* { dg-require-effective-target arm_neon_ok } */
40476 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40477 +/* { dg-options "-save-temps -O0" } */
40478 +/* { dg-add-options arm_neon } */
40479  
40480  #include "arm_neon.h"
40481  
40482 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c
40483 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c 2007-07-25 14:28:31.000000000 +0200
40484 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c 2010-01-25 09:50:29.385686707 +0100
40485 @@ -3,7 +3,8 @@
40486  
40487  /* { dg-do assemble } */
40488  /* { dg-require-effective-target arm_neon_ok } */
40489 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40490 +/* { dg-options "-save-temps -O0" } */
40491 +/* { dg-add-options arm_neon } */
40492  
40493  #include "arm_neon.h"
40494  
40495 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c
40496 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c 2007-07-25 14:28:31.000000000 +0200
40497 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c 2010-01-25 09:50:29.385686707 +0100
40498 @@ -3,7 +3,8 @@
40499  
40500  /* { dg-do assemble } */
40501  /* { dg-require-effective-target arm_neon_ok } */
40502 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40503 +/* { dg-options "-save-temps -O0" } */
40504 +/* { dg-add-options arm_neon } */
40505  
40506  #include "arm_neon.h"
40507  
40508 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c
40509 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c      2007-07-25 14:28:31.000000000 +0200
40510 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c      2010-01-25 09:50:29.385686707 +0100
40511 @@ -3,7 +3,8 @@
40512  
40513  /* { dg-do assemble } */
40514  /* { dg-require-effective-target arm_neon_ok } */
40515 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40516 +/* { dg-options "-save-temps -O0" } */
40517 +/* { dg-add-options arm_neon } */
40518  
40519  #include "arm_neon.h"
40520  
40521 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c
40522 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c       2007-07-25 14:28:31.000000000 +0200
40523 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c       2010-01-25 09:50:29.385686707 +0100
40524 @@ -3,7 +3,8 @@
40525  
40526  /* { dg-do assemble } */
40527  /* { dg-require-effective-target arm_neon_ok } */
40528 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40529 +/* { dg-options "-save-temps -O0" } */
40530 +/* { dg-add-options arm_neon } */
40531  
40532  #include "arm_neon.h"
40533  
40534 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c
40535 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c      2007-07-25 14:28:31.000000000 +0200
40536 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c      2010-01-25 09:50:29.385686707 +0100
40537 @@ -3,7 +3,8 @@
40538  
40539  /* { dg-do assemble } */
40540  /* { dg-require-effective-target arm_neon_ok } */
40541 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40542 +/* { dg-options "-save-temps -O0" } */
40543 +/* { dg-add-options arm_neon } */
40544  
40545  #include "arm_neon.h"
40546  
40547 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c
40548 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c      2007-07-25 14:28:31.000000000 +0200
40549 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c      2010-01-25 09:50:29.385686707 +0100
40550 @@ -3,7 +3,8 @@
40551  
40552  /* { dg-do assemble } */
40553  /* { dg-require-effective-target arm_neon_ok } */
40554 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40555 +/* { dg-options "-save-temps -O0" } */
40556 +/* { dg-add-options arm_neon } */
40557  
40558  #include "arm_neon.h"
40559  
40560 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c
40561 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c       2007-07-25 14:28:31.000000000 +0200
40562 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c       2010-01-25 09:50:29.385686707 +0100
40563 @@ -3,7 +3,8 @@
40564  
40565  /* { dg-do assemble } */
40566  /* { dg-require-effective-target arm_neon_ok } */
40567 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40568 +/* { dg-options "-save-temps -O0" } */
40569 +/* { dg-add-options arm_neon } */
40570  
40571  #include "arm_neon.h"
40572  
40573 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c
40574 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c      2007-07-25 14:28:31.000000000 +0200
40575 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c      2010-01-25 09:50:29.385686707 +0100
40576 @@ -3,7 +3,8 @@
40577  
40578  /* { dg-do assemble } */
40579  /* { dg-require-effective-target arm_neon_ok } */
40580 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40581 +/* { dg-options "-save-temps -O0" } */
40582 +/* { dg-add-options arm_neon } */
40583  
40584  #include "arm_neon.h"
40585  
40586 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c
40587 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c      2007-07-25 14:28:31.000000000 +0200
40588 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c      2010-01-25 09:50:29.385686707 +0100
40589 @@ -3,7 +3,8 @@
40590  
40591  /* { dg-do assemble } */
40592  /* { dg-require-effective-target arm_neon_ok } */
40593 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40594 +/* { dg-options "-save-temps -O0" } */
40595 +/* { dg-add-options arm_neon } */
40596  
40597  #include "arm_neon.h"
40598  
40599 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c
40600 --- a/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c       2007-07-25 14:28:31.000000000 +0200
40601 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c       2010-01-25 09:50:29.385686707 +0100
40602 @@ -3,7 +3,8 @@
40603  
40604  /* { dg-do assemble } */
40605  /* { dg-require-effective-target arm_neon_ok } */
40606 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40607 +/* { dg-options "-save-temps -O0" } */
40608 +/* { dg-add-options arm_neon } */
40609  
40610  #include "arm_neon.h"
40611  
40612 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3s16.c b/gcc/testsuite/gcc.target/arm/neon/vld3s16.c
40613 --- a/gcc/testsuite/gcc.target/arm/neon/vld3s16.c       2007-07-25 14:28:31.000000000 +0200
40614 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3s16.c       2010-01-25 09:50:29.395687140 +0100
40615 @@ -3,7 +3,8 @@
40616  
40617  /* { dg-do assemble } */
40618  /* { dg-require-effective-target arm_neon_ok } */
40619 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40620 +/* { dg-options "-save-temps -O0" } */
40621 +/* { dg-add-options arm_neon } */
40622  
40623  #include "arm_neon.h"
40624  
40625 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3s32.c b/gcc/testsuite/gcc.target/arm/neon/vld3s32.c
40626 --- a/gcc/testsuite/gcc.target/arm/neon/vld3s32.c       2007-07-25 14:28:31.000000000 +0200
40627 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3s32.c       2010-01-25 09:50:29.395687140 +0100
40628 @@ -3,7 +3,8 @@
40629  
40630  /* { dg-do assemble } */
40631  /* { dg-require-effective-target arm_neon_ok } */
40632 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40633 +/* { dg-options "-save-temps -O0" } */
40634 +/* { dg-add-options arm_neon } */
40635  
40636  #include "arm_neon.h"
40637  
40638 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3s64.c b/gcc/testsuite/gcc.target/arm/neon/vld3s64.c
40639 --- a/gcc/testsuite/gcc.target/arm/neon/vld3s64.c       2007-07-25 14:28:31.000000000 +0200
40640 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3s64.c       2010-01-25 09:50:29.395687140 +0100
40641 @@ -3,7 +3,8 @@
40642  
40643  /* { dg-do assemble } */
40644  /* { dg-require-effective-target arm_neon_ok } */
40645 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40646 +/* { dg-options "-save-temps -O0" } */
40647 +/* { dg-add-options arm_neon } */
40648  
40649  #include "arm_neon.h"
40650  
40651 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3s8.c b/gcc/testsuite/gcc.target/arm/neon/vld3s8.c
40652 --- a/gcc/testsuite/gcc.target/arm/neon/vld3s8.c        2007-07-25 14:28:31.000000000 +0200
40653 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3s8.c        2010-01-25 09:50:29.395687140 +0100
40654 @@ -3,7 +3,8 @@
40655  
40656  /* { dg-do assemble } */
40657  /* { dg-require-effective-target arm_neon_ok } */
40658 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40659 +/* { dg-options "-save-temps -O0" } */
40660 +/* { dg-add-options arm_neon } */
40661  
40662  #include "arm_neon.h"
40663  
40664 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3u16.c b/gcc/testsuite/gcc.target/arm/neon/vld3u16.c
40665 --- a/gcc/testsuite/gcc.target/arm/neon/vld3u16.c       2007-07-25 14:28:31.000000000 +0200
40666 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3u16.c       2010-01-25 09:50:29.395687140 +0100
40667 @@ -3,7 +3,8 @@
40668  
40669  /* { dg-do assemble } */
40670  /* { dg-require-effective-target arm_neon_ok } */
40671 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40672 +/* { dg-options "-save-temps -O0" } */
40673 +/* { dg-add-options arm_neon } */
40674  
40675  #include "arm_neon.h"
40676  
40677 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3u32.c b/gcc/testsuite/gcc.target/arm/neon/vld3u32.c
40678 --- a/gcc/testsuite/gcc.target/arm/neon/vld3u32.c       2007-07-25 14:28:31.000000000 +0200
40679 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3u32.c       2010-01-25 09:50:29.395687140 +0100
40680 @@ -3,7 +3,8 @@
40681  
40682  /* { dg-do assemble } */
40683  /* { dg-require-effective-target arm_neon_ok } */
40684 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40685 +/* { dg-options "-save-temps -O0" } */
40686 +/* { dg-add-options arm_neon } */
40687  
40688  #include "arm_neon.h"
40689  
40690 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3u64.c b/gcc/testsuite/gcc.target/arm/neon/vld3u64.c
40691 --- a/gcc/testsuite/gcc.target/arm/neon/vld3u64.c       2007-07-25 14:28:31.000000000 +0200
40692 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3u64.c       2010-01-25 09:50:29.395687140 +0100
40693 @@ -3,7 +3,8 @@
40694  
40695  /* { dg-do assemble } */
40696  /* { dg-require-effective-target arm_neon_ok } */
40697 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40698 +/* { dg-options "-save-temps -O0" } */
40699 +/* { dg-add-options arm_neon } */
40700  
40701  #include "arm_neon.h"
40702  
40703 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3u8.c b/gcc/testsuite/gcc.target/arm/neon/vld3u8.c
40704 --- a/gcc/testsuite/gcc.target/arm/neon/vld3u8.c        2007-07-25 14:28:31.000000000 +0200
40705 +++ b/gcc/testsuite/gcc.target/arm/neon/vld3u8.c        2010-01-25 09:50:29.395687140 +0100
40706 @@ -3,7 +3,8 @@
40707  
40708  /* { dg-do assemble } */
40709  /* { dg-require-effective-target arm_neon_ok } */
40710 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40711 +/* { dg-options "-save-temps -O0" } */
40712 +/* { dg-add-options arm_neon } */
40713  
40714  #include "arm_neon.h"
40715  
40716 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c
40717 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c   2007-07-25 14:28:31.000000000 +0200
40718 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c   2010-01-25 09:50:29.395687140 +0100
40719 @@ -3,7 +3,8 @@
40720  
40721  /* { dg-do assemble } */
40722  /* { dg-require-effective-target arm_neon_ok } */
40723 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40724 +/* { dg-options "-save-temps -O0" } */
40725 +/* { dg-add-options arm_neon } */
40726  
40727  #include "arm_neon.h"
40728  
40729 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c
40730 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c   2007-07-25 14:28:31.000000000 +0200
40731 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c   2010-01-25 09:50:29.395687140 +0100
40732 @@ -3,7 +3,8 @@
40733  
40734  /* { dg-do assemble } */
40735  /* { dg-require-effective-target arm_neon_ok } */
40736 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40737 +/* { dg-options "-save-temps -O0" } */
40738 +/* { dg-add-options arm_neon } */
40739  
40740  #include "arm_neon.h"
40741  
40742 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c
40743 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c    2007-07-25 14:28:31.000000000 +0200
40744 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c    2010-01-25 09:50:29.395687140 +0100
40745 @@ -3,7 +3,8 @@
40746  
40747  /* { dg-do assemble } */
40748  /* { dg-require-effective-target arm_neon_ok } */
40749 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40750 +/* { dg-options "-save-temps -O0" } */
40751 +/* { dg-add-options arm_neon } */
40752  
40753  #include "arm_neon.h"
40754  
40755 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c
40756 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c   2007-07-25 14:28:31.000000000 +0200
40757 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c   2010-01-25 09:50:29.395687140 +0100
40758 @@ -3,7 +3,8 @@
40759  
40760  /* { dg-do assemble } */
40761  /* { dg-require-effective-target arm_neon_ok } */
40762 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40763 +/* { dg-options "-save-temps -O0" } */
40764 +/* { dg-add-options arm_neon } */
40765  
40766  #include "arm_neon.h"
40767  
40768 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c
40769 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c   2007-07-25 14:28:31.000000000 +0200
40770 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c   2010-01-25 09:50:29.395687140 +0100
40771 @@ -3,7 +3,8 @@
40772  
40773  /* { dg-do assemble } */
40774  /* { dg-require-effective-target arm_neon_ok } */
40775 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40776 +/* { dg-options "-save-temps -O0" } */
40777 +/* { dg-add-options arm_neon } */
40778  
40779  #include "arm_neon.h"
40780  
40781 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c
40782 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c   2007-07-25 14:28:31.000000000 +0200
40783 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c   2010-01-25 09:50:29.395687140 +0100
40784 @@ -3,7 +3,8 @@
40785  
40786  /* { dg-do assemble } */
40787  /* { dg-require-effective-target arm_neon_ok } */
40788 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40789 +/* { dg-options "-save-temps -O0" } */
40790 +/* { dg-add-options arm_neon } */
40791  
40792  #include "arm_neon.h"
40793  
40794 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c
40795 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c    2007-07-25 14:28:31.000000000 +0200
40796 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c    2010-01-25 09:50:29.395687140 +0100
40797 @@ -3,7 +3,8 @@
40798  
40799  /* { dg-do assemble } */
40800  /* { dg-require-effective-target arm_neon_ok } */
40801 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40802 +/* { dg-options "-save-temps -O0" } */
40803 +/* { dg-add-options arm_neon } */
40804  
40805  #include "arm_neon.h"
40806  
40807 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c
40808 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c   2007-07-25 14:28:31.000000000 +0200
40809 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c   2010-01-25 09:50:29.395687140 +0100
40810 @@ -3,7 +3,8 @@
40811  
40812  /* { dg-do assemble } */
40813  /* { dg-require-effective-target arm_neon_ok } */
40814 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40815 +/* { dg-options "-save-temps -O0" } */
40816 +/* { dg-add-options arm_neon } */
40817  
40818  #include "arm_neon.h"
40819  
40820 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c
40821 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c   2007-07-25 14:28:31.000000000 +0200
40822 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c   2010-01-25 09:50:29.395687140 +0100
40823 @@ -3,7 +3,8 @@
40824  
40825  /* { dg-do assemble } */
40826  /* { dg-require-effective-target arm_neon_ok } */
40827 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40828 +/* { dg-options "-save-temps -O0" } */
40829 +/* { dg-add-options arm_neon } */
40830  
40831  #include "arm_neon.h"
40832  
40833 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c
40834 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c   2007-07-25 14:28:31.000000000 +0200
40835 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c   2010-01-25 09:50:29.395687140 +0100
40836 @@ -3,7 +3,8 @@
40837  
40838  /* { dg-do assemble } */
40839  /* { dg-require-effective-target arm_neon_ok } */
40840 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40841 +/* { dg-options "-save-temps -O0" } */
40842 +/* { dg-add-options arm_neon } */
40843  
40844  #include "arm_neon.h"
40845  
40846 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c
40847 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c    2007-07-25 14:28:31.000000000 +0200
40848 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c    2010-01-25 09:50:29.395687140 +0100
40849 @@ -3,7 +3,8 @@
40850  
40851  /* { dg-do assemble } */
40852  /* { dg-require-effective-target arm_neon_ok } */
40853 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40854 +/* { dg-options "-save-temps -O0" } */
40855 +/* { dg-add-options arm_neon } */
40856  
40857  #include "arm_neon.h"
40858  
40859 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4f32.c b/gcc/testsuite/gcc.target/arm/neon/vld4f32.c
40860 --- a/gcc/testsuite/gcc.target/arm/neon/vld4f32.c       2007-07-25 14:28:31.000000000 +0200
40861 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4f32.c       2010-01-25 09:50:29.395687140 +0100
40862 @@ -3,7 +3,8 @@
40863  
40864  /* { dg-do assemble } */
40865  /* { dg-require-effective-target arm_neon_ok } */
40866 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40867 +/* { dg-options "-save-temps -O0" } */
40868 +/* { dg-add-options arm_neon } */
40869  
40870  #include "arm_neon.h"
40871  
40872 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c
40873 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c  2007-07-25 14:28:31.000000000 +0200
40874 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c  2010-01-25 09:50:29.395687140 +0100
40875 @@ -3,7 +3,8 @@
40876  
40877  /* { dg-do assemble } */
40878  /* { dg-require-effective-target arm_neon_ok } */
40879 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40880 +/* { dg-options "-save-temps -O0" } */
40881 +/* { dg-add-options arm_neon } */
40882  
40883  #include "arm_neon.h"
40884  
40885 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c
40886 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c  2007-07-25 14:28:31.000000000 +0200
40887 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c  2010-01-25 09:50:29.395687140 +0100
40888 @@ -3,7 +3,8 @@
40889  
40890  /* { dg-do assemble } */
40891  /* { dg-require-effective-target arm_neon_ok } */
40892 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40893 +/* { dg-options "-save-temps -O0" } */
40894 +/* { dg-add-options arm_neon } */
40895  
40896  #include "arm_neon.h"
40897  
40898 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c
40899 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c   2007-07-25 14:28:31.000000000 +0200
40900 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c   2010-01-25 09:50:29.395687140 +0100
40901 @@ -3,7 +3,8 @@
40902  
40903  /* { dg-do assemble } */
40904  /* { dg-require-effective-target arm_neon_ok } */
40905 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40906 +/* { dg-options "-save-temps -O0" } */
40907 +/* { dg-add-options arm_neon } */
40908  
40909  #include "arm_neon.h"
40910  
40911 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c
40912 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c  2007-07-25 14:28:31.000000000 +0200
40913 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c  2010-01-25 09:50:29.395687140 +0100
40914 @@ -3,7 +3,8 @@
40915  
40916  /* { dg-do assemble } */
40917  /* { dg-require-effective-target arm_neon_ok } */
40918 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40919 +/* { dg-options "-save-temps -O0" } */
40920 +/* { dg-add-options arm_neon } */
40921  
40922  #include "arm_neon.h"
40923  
40924 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c
40925 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c  2007-07-25 14:28:31.000000000 +0200
40926 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c  2010-01-25 09:50:29.395687140 +0100
40927 @@ -3,7 +3,8 @@
40928  
40929  /* { dg-do assemble } */
40930  /* { dg-require-effective-target arm_neon_ok } */
40931 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40932 +/* { dg-options "-save-temps -O0" } */
40933 +/* { dg-add-options arm_neon } */
40934  
40935  #include "arm_neon.h"
40936  
40937 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c
40938 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c   2007-07-25 14:28:31.000000000 +0200
40939 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c   2010-01-25 09:50:29.395687140 +0100
40940 @@ -3,7 +3,8 @@
40941  
40942  /* { dg-do assemble } */
40943  /* { dg-require-effective-target arm_neon_ok } */
40944 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40945 +/* { dg-options "-save-temps -O0" } */
40946 +/* { dg-add-options arm_neon } */
40947  
40948  #include "arm_neon.h"
40949  
40950 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c
40951 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c  2007-07-25 14:28:31.000000000 +0200
40952 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c  2010-01-25 09:50:29.395687140 +0100
40953 @@ -3,7 +3,8 @@
40954  
40955  /* { dg-do assemble } */
40956  /* { dg-require-effective-target arm_neon_ok } */
40957 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40958 +/* { dg-options "-save-temps -O0" } */
40959 +/* { dg-add-options arm_neon } */
40960  
40961  #include "arm_neon.h"
40962  
40963 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c
40964 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c  2007-07-25 14:28:31.000000000 +0200
40965 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c  2010-01-25 09:50:29.395687140 +0100
40966 @@ -3,7 +3,8 @@
40967  
40968  /* { dg-do assemble } */
40969  /* { dg-require-effective-target arm_neon_ok } */
40970 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40971 +/* { dg-options "-save-temps -O0" } */
40972 +/* { dg-add-options arm_neon } */
40973  
40974  #include "arm_neon.h"
40975  
40976 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c
40977 --- a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c   2007-07-25 14:28:31.000000000 +0200
40978 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c   2010-01-25 09:50:29.395687140 +0100
40979 @@ -3,7 +3,8 @@
40980  
40981  /* { dg-do assemble } */
40982  /* { dg-require-effective-target arm_neon_ok } */
40983 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40984 +/* { dg-options "-save-temps -O0" } */
40985 +/* { dg-add-options arm_neon } */
40986  
40987  #include "arm_neon.h"
40988  
40989 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4p16.c b/gcc/testsuite/gcc.target/arm/neon/vld4p16.c
40990 --- a/gcc/testsuite/gcc.target/arm/neon/vld4p16.c       2007-07-25 14:28:31.000000000 +0200
40991 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4p16.c       2010-01-25 09:50:29.395687140 +0100
40992 @@ -3,7 +3,8 @@
40993  
40994  /* { dg-do assemble } */
40995  /* { dg-require-effective-target arm_neon_ok } */
40996 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
40997 +/* { dg-options "-save-temps -O0" } */
40998 +/* { dg-add-options arm_neon } */
40999  
41000  #include "arm_neon.h"
41001  
41002 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4p8.c b/gcc/testsuite/gcc.target/arm/neon/vld4p8.c
41003 --- a/gcc/testsuite/gcc.target/arm/neon/vld4p8.c        2007-07-25 14:28:31.000000000 +0200
41004 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4p8.c        2010-01-25 09:50:29.395687140 +0100
41005 @@ -3,7 +3,8 @@
41006  
41007  /* { dg-do assemble } */
41008  /* { dg-require-effective-target arm_neon_ok } */
41009 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41010 +/* { dg-options "-save-temps -O0" } */
41011 +/* { dg-add-options arm_neon } */
41012  
41013  #include "arm_neon.h"
41014  
41015 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c
41016 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c      2007-07-25 14:28:31.000000000 +0200
41017 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c      2010-01-25 09:50:29.395687140 +0100
41018 @@ -3,7 +3,8 @@
41019  
41020  /* { dg-do assemble } */
41021  /* { dg-require-effective-target arm_neon_ok } */
41022 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41023 +/* { dg-options "-save-temps -O0" } */
41024 +/* { dg-add-options arm_neon } */
41025  
41026  #include "arm_neon.h"
41027  
41028 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c
41029 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c 2007-07-25 14:28:31.000000000 +0200
41030 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c 2010-01-25 09:50:29.395687140 +0100
41031 @@ -3,7 +3,8 @@
41032  
41033  /* { dg-do assemble } */
41034  /* { dg-require-effective-target arm_neon_ok } */
41035 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41036 +/* { dg-options "-save-temps -O0" } */
41037 +/* { dg-add-options arm_neon } */
41038  
41039  #include "arm_neon.h"
41040  
41041 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c
41042 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c 2007-07-25 14:28:31.000000000 +0200
41043 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c 2010-01-25 09:50:29.395687140 +0100
41044 @@ -3,7 +3,8 @@
41045  
41046  /* { dg-do assemble } */
41047  /* { dg-require-effective-target arm_neon_ok } */
41048 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41049 +/* { dg-options "-save-temps -O0" } */
41050 +/* { dg-add-options arm_neon } */
41051  
41052  #include "arm_neon.h"
41053  
41054 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c
41055 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c 2007-07-25 14:28:31.000000000 +0200
41056 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c 2010-01-25 09:50:29.395687140 +0100
41057 @@ -3,7 +3,8 @@
41058  
41059  /* { dg-do assemble } */
41060  /* { dg-require-effective-target arm_neon_ok } */
41061 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41062 +/* { dg-options "-save-temps -O0" } */
41063 +/* { dg-add-options arm_neon } */
41064  
41065  #include "arm_neon.h"
41066  
41067 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c
41068 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c 2007-07-25 14:28:31.000000000 +0200
41069 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c 2010-01-25 09:50:29.395687140 +0100
41070 @@ -3,7 +3,8 @@
41071  
41072  /* { dg-do assemble } */
41073  /* { dg-require-effective-target arm_neon_ok } */
41074 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41075 +/* { dg-options "-save-temps -O0" } */
41076 +/* { dg-add-options arm_neon } */
41077  
41078  #include "arm_neon.h"
41079  
41080 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c
41081 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c 2007-07-25 14:28:31.000000000 +0200
41082 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c 2010-01-25 09:50:29.395687140 +0100
41083 @@ -3,7 +3,8 @@
41084  
41085  /* { dg-do assemble } */
41086  /* { dg-require-effective-target arm_neon_ok } */
41087 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41088 +/* { dg-options "-save-temps -O0" } */
41089 +/* { dg-add-options arm_neon } */
41090  
41091  #include "arm_neon.h"
41092  
41093 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c
41094 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c 2007-07-25 14:28:31.000000000 +0200
41095 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c 2010-01-25 09:50:29.395687140 +0100
41096 @@ -3,7 +3,8 @@
41097  
41098  /* { dg-do assemble } */
41099  /* { dg-require-effective-target arm_neon_ok } */
41100 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41101 +/* { dg-options "-save-temps -O0" } */
41102 +/* { dg-add-options arm_neon } */
41103  
41104  #include "arm_neon.h"
41105  
41106 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c
41107 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c      2007-07-25 14:28:31.000000000 +0200
41108 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c      2010-01-25 09:50:29.395687140 +0100
41109 @@ -3,7 +3,8 @@
41110  
41111  /* { dg-do assemble } */
41112  /* { dg-require-effective-target arm_neon_ok } */
41113 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41114 +/* { dg-options "-save-temps -O0" } */
41115 +/* { dg-add-options arm_neon } */
41116  
41117  #include "arm_neon.h"
41118  
41119 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c
41120 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c       2007-07-25 14:28:31.000000000 +0200
41121 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c       2010-01-25 09:50:29.395687140 +0100
41122 @@ -3,7 +3,8 @@
41123  
41124  /* { dg-do assemble } */
41125  /* { dg-require-effective-target arm_neon_ok } */
41126 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41127 +/* { dg-options "-save-temps -O0" } */
41128 +/* { dg-add-options arm_neon } */
41129  
41130  #include "arm_neon.h"
41131  
41132 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c
41133 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c      2007-07-25 14:28:31.000000000 +0200
41134 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c      2010-01-25 09:50:29.395687140 +0100
41135 @@ -3,7 +3,8 @@
41136  
41137  /* { dg-do assemble } */
41138  /* { dg-require-effective-target arm_neon_ok } */
41139 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41140 +/* { dg-options "-save-temps -O0" } */
41141 +/* { dg-add-options arm_neon } */
41142  
41143  #include "arm_neon.h"
41144  
41145 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c
41146 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c      2007-07-25 14:28:31.000000000 +0200
41147 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c      2010-01-25 09:50:29.395687140 +0100
41148 @@ -3,7 +3,8 @@
41149  
41150  /* { dg-do assemble } */
41151  /* { dg-require-effective-target arm_neon_ok } */
41152 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41153 +/* { dg-options "-save-temps -O0" } */
41154 +/* { dg-add-options arm_neon } */
41155  
41156  #include "arm_neon.h"
41157  
41158 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c
41159 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c       2007-07-25 14:28:31.000000000 +0200
41160 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c       2010-01-25 09:50:29.395687140 +0100
41161 @@ -3,7 +3,8 @@
41162  
41163  /* { dg-do assemble } */
41164  /* { dg-require-effective-target arm_neon_ok } */
41165 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41166 +/* { dg-options "-save-temps -O0" } */
41167 +/* { dg-add-options arm_neon } */
41168  
41169  #include "arm_neon.h"
41170  
41171 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c
41172 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c      2007-07-25 14:28:31.000000000 +0200
41173 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c      2010-01-25 09:50:29.395687140 +0100
41174 @@ -3,7 +3,8 @@
41175  
41176  /* { dg-do assemble } */
41177  /* { dg-require-effective-target arm_neon_ok } */
41178 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41179 +/* { dg-options "-save-temps -O0" } */
41180 +/* { dg-add-options arm_neon } */
41181  
41182  #include "arm_neon.h"
41183  
41184 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c
41185 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c      2007-07-25 14:28:31.000000000 +0200
41186 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c      2010-01-25 09:50:29.395687140 +0100
41187 @@ -3,7 +3,8 @@
41188  
41189  /* { dg-do assemble } */
41190  /* { dg-require-effective-target arm_neon_ok } */
41191 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41192 +/* { dg-options "-save-temps -O0" } */
41193 +/* { dg-add-options arm_neon } */
41194  
41195  #include "arm_neon.h"
41196  
41197 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c
41198 --- a/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c       2007-07-25 14:28:31.000000000 +0200
41199 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c       2010-01-25 09:50:29.395687140 +0100
41200 @@ -3,7 +3,8 @@
41201  
41202  /* { dg-do assemble } */
41203  /* { dg-require-effective-target arm_neon_ok } */
41204 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41205 +/* { dg-options "-save-temps -O0" } */
41206 +/* { dg-add-options arm_neon } */
41207  
41208  #include "arm_neon.h"
41209  
41210 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4s16.c b/gcc/testsuite/gcc.target/arm/neon/vld4s16.c
41211 --- a/gcc/testsuite/gcc.target/arm/neon/vld4s16.c       2007-07-25 14:28:31.000000000 +0200
41212 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4s16.c       2010-01-25 09:50:29.395687140 +0100
41213 @@ -3,7 +3,8 @@
41214  
41215  /* { dg-do assemble } */
41216  /* { dg-require-effective-target arm_neon_ok } */
41217 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41218 +/* { dg-options "-save-temps -O0" } */
41219 +/* { dg-add-options arm_neon } */
41220  
41221  #include "arm_neon.h"
41222  
41223 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4s32.c b/gcc/testsuite/gcc.target/arm/neon/vld4s32.c
41224 --- a/gcc/testsuite/gcc.target/arm/neon/vld4s32.c       2007-07-25 14:28:31.000000000 +0200
41225 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4s32.c       2010-01-25 09:50:29.395687140 +0100
41226 @@ -3,7 +3,8 @@
41227  
41228  /* { dg-do assemble } */
41229  /* { dg-require-effective-target arm_neon_ok } */
41230 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41231 +/* { dg-options "-save-temps -O0" } */
41232 +/* { dg-add-options arm_neon } */
41233  
41234  #include "arm_neon.h"
41235  
41236 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4s64.c b/gcc/testsuite/gcc.target/arm/neon/vld4s64.c
41237 --- a/gcc/testsuite/gcc.target/arm/neon/vld4s64.c       2007-07-25 14:28:31.000000000 +0200
41238 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4s64.c       2010-01-25 09:50:29.395687140 +0100
41239 @@ -3,7 +3,8 @@
41240  
41241  /* { dg-do assemble } */
41242  /* { dg-require-effective-target arm_neon_ok } */
41243 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41244 +/* { dg-options "-save-temps -O0" } */
41245 +/* { dg-add-options arm_neon } */
41246  
41247  #include "arm_neon.h"
41248  
41249 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4s8.c b/gcc/testsuite/gcc.target/arm/neon/vld4s8.c
41250 --- a/gcc/testsuite/gcc.target/arm/neon/vld4s8.c        2007-07-25 14:28:31.000000000 +0200
41251 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4s8.c        2010-01-25 09:50:29.395687140 +0100
41252 @@ -3,7 +3,8 @@
41253  
41254  /* { dg-do assemble } */
41255  /* { dg-require-effective-target arm_neon_ok } */
41256 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41257 +/* { dg-options "-save-temps -O0" } */
41258 +/* { dg-add-options arm_neon } */
41259  
41260  #include "arm_neon.h"
41261  
41262 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4u16.c b/gcc/testsuite/gcc.target/arm/neon/vld4u16.c
41263 --- a/gcc/testsuite/gcc.target/arm/neon/vld4u16.c       2007-07-25 14:28:31.000000000 +0200
41264 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4u16.c       2010-01-25 09:50:29.395687140 +0100
41265 @@ -3,7 +3,8 @@
41266  
41267  /* { dg-do assemble } */
41268  /* { dg-require-effective-target arm_neon_ok } */
41269 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41270 +/* { dg-options "-save-temps -O0" } */
41271 +/* { dg-add-options arm_neon } */
41272  
41273  #include "arm_neon.h"
41274  
41275 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4u32.c b/gcc/testsuite/gcc.target/arm/neon/vld4u32.c
41276 --- a/gcc/testsuite/gcc.target/arm/neon/vld4u32.c       2007-07-25 14:28:31.000000000 +0200
41277 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4u32.c       2010-01-25 09:50:29.395687140 +0100
41278 @@ -3,7 +3,8 @@
41279  
41280  /* { dg-do assemble } */
41281  /* { dg-require-effective-target arm_neon_ok } */
41282 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41283 +/* { dg-options "-save-temps -O0" } */
41284 +/* { dg-add-options arm_neon } */
41285  
41286  #include "arm_neon.h"
41287  
41288 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4u64.c b/gcc/testsuite/gcc.target/arm/neon/vld4u64.c
41289 --- a/gcc/testsuite/gcc.target/arm/neon/vld4u64.c       2007-07-25 14:28:31.000000000 +0200
41290 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4u64.c       2010-01-25 09:50:29.395687140 +0100
41291 @@ -3,7 +3,8 @@
41292  
41293  /* { dg-do assemble } */
41294  /* { dg-require-effective-target arm_neon_ok } */
41295 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41296 +/* { dg-options "-save-temps -O0" } */
41297 +/* { dg-add-options arm_neon } */
41298  
41299  #include "arm_neon.h"
41300  
41301 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4u8.c b/gcc/testsuite/gcc.target/arm/neon/vld4u8.c
41302 --- a/gcc/testsuite/gcc.target/arm/neon/vld4u8.c        2007-07-25 14:28:31.000000000 +0200
41303 +++ b/gcc/testsuite/gcc.target/arm/neon/vld4u8.c        2010-01-25 09:50:29.395687140 +0100
41304 @@ -3,7 +3,8 @@
41305  
41306  /* { dg-do assemble } */
41307  /* { dg-require-effective-target arm_neon_ok } */
41308 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41309 +/* { dg-options "-save-temps -O0" } */
41310 +/* { dg-add-options arm_neon } */
41311  
41312  #include "arm_neon.h"
41313  
41314 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c b/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c
41315 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c       2007-07-25 14:28:31.000000000 +0200
41316 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c       2010-01-25 09:50:29.395687140 +0100
41317 @@ -3,7 +3,8 @@
41318  
41319  /* { dg-do assemble } */
41320  /* { dg-require-effective-target arm_neon_ok } */
41321 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41322 +/* { dg-options "-save-temps -O0" } */
41323 +/* { dg-add-options arm_neon } */
41324  
41325  #include "arm_neon.h"
41326  
41327 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c
41328 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c      2007-07-25 14:28:31.000000000 +0200
41329 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c      2010-01-25 09:50:29.395687140 +0100
41330 @@ -3,7 +3,8 @@
41331  
41332  /* { dg-do assemble } */
41333  /* { dg-require-effective-target arm_neon_ok } */
41334 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41335 +/* { dg-options "-save-temps -O0" } */
41336 +/* { dg-add-options arm_neon } */
41337  
41338  #include "arm_neon.h"
41339  
41340 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c
41341 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c      2007-07-25 14:28:31.000000000 +0200
41342 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c      2010-01-25 09:50:29.395687140 +0100
41343 @@ -3,7 +3,8 @@
41344  
41345  /* { dg-do assemble } */
41346  /* { dg-require-effective-target arm_neon_ok } */
41347 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41348 +/* { dg-options "-save-temps -O0" } */
41349 +/* { dg-add-options arm_neon } */
41350  
41351  #include "arm_neon.h"
41352  
41353 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c
41354 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c      2007-07-25 14:28:31.000000000 +0200
41355 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c      2010-01-25 09:50:29.395687140 +0100
41356 @@ -3,7 +3,8 @@
41357  
41358  /* { dg-do assemble } */
41359  /* { dg-require-effective-target arm_neon_ok } */
41360 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41361 +/* { dg-options "-save-temps -O0" } */
41362 +/* { dg-add-options arm_neon } */
41363  
41364  #include "arm_neon.h"
41365  
41366 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c
41367 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c       2007-07-25 14:28:31.000000000 +0200
41368 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c       2010-01-25 09:50:29.395687140 +0100
41369 @@ -3,7 +3,8 @@
41370  
41371  /* { dg-do assemble } */
41372  /* { dg-require-effective-target arm_neon_ok } */
41373 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41374 +/* { dg-options "-save-temps -O0" } */
41375 +/* { dg-add-options arm_neon } */
41376  
41377  #include "arm_neon.h"
41378  
41379 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c
41380 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c      2007-07-25 14:28:31.000000000 +0200
41381 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c      2010-01-25 09:50:29.395687140 +0100
41382 @@ -3,7 +3,8 @@
41383  
41384  /* { dg-do assemble } */
41385  /* { dg-require-effective-target arm_neon_ok } */
41386 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41387 +/* { dg-options "-save-temps -O0" } */
41388 +/* { dg-add-options arm_neon } */
41389  
41390  #include "arm_neon.h"
41391  
41392 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c
41393 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c      2007-07-25 14:28:31.000000000 +0200
41394 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c      2010-01-25 09:50:29.395687140 +0100
41395 @@ -3,7 +3,8 @@
41396  
41397  /* { dg-do assemble } */
41398  /* { dg-require-effective-target arm_neon_ok } */
41399 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41400 +/* { dg-options "-save-temps -O0" } */
41401 +/* { dg-add-options arm_neon } */
41402  
41403  #include "arm_neon.h"
41404  
41405 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c
41406 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c       2007-07-25 14:28:31.000000000 +0200
41407 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c       2010-01-25 09:50:29.395687140 +0100
41408 @@ -3,7 +3,8 @@
41409  
41410  /* { dg-do assemble } */
41411  /* { dg-require-effective-target arm_neon_ok } */
41412 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41413 +/* { dg-options "-save-temps -O0" } */
41414 +/* { dg-add-options arm_neon } */
41415  
41416  #include "arm_neon.h"
41417  
41418 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c b/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c
41419 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c       2007-07-25 14:28:31.000000000 +0200
41420 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c       2010-01-25 09:50:29.395687140 +0100
41421 @@ -3,7 +3,8 @@
41422  
41423  /* { dg-do assemble } */
41424  /* { dg-require-effective-target arm_neon_ok } */
41425 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41426 +/* { dg-options "-save-temps -O0" } */
41427 +/* { dg-add-options arm_neon } */
41428  
41429  #include "arm_neon.h"
41430  
41431 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c b/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c
41432 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c       2007-07-25 14:28:31.000000000 +0200
41433 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c       2010-01-25 09:50:29.395687140 +0100
41434 @@ -3,7 +3,8 @@
41435  
41436  /* { dg-do assemble } */
41437  /* { dg-require-effective-target arm_neon_ok } */
41438 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41439 +/* { dg-options "-save-temps -O0" } */
41440 +/* { dg-add-options arm_neon } */
41441  
41442  #include "arm_neon.h"
41443  
41444 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c b/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c
41445 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c        2007-07-25 14:28:31.000000000 +0200
41446 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c        2010-01-25 09:50:29.395687140 +0100
41447 @@ -3,7 +3,8 @@
41448  
41449  /* { dg-do assemble } */
41450  /* { dg-require-effective-target arm_neon_ok } */
41451 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41452 +/* { dg-options "-save-temps -O0" } */
41453 +/* { dg-add-options arm_neon } */
41454  
41455  #include "arm_neon.h"
41456  
41457 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c b/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c
41458 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c       2007-07-25 14:28:31.000000000 +0200
41459 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c       2010-01-25 09:50:29.395687140 +0100
41460 @@ -3,7 +3,8 @@
41461  
41462  /* { dg-do assemble } */
41463  /* { dg-require-effective-target arm_neon_ok } */
41464 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41465 +/* { dg-options "-save-temps -O0" } */
41466 +/* { dg-add-options arm_neon } */
41467  
41468  #include "arm_neon.h"
41469  
41470 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c b/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c
41471 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c       2007-07-25 14:28:31.000000000 +0200
41472 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c       2010-01-25 09:50:29.395687140 +0100
41473 @@ -3,7 +3,8 @@
41474  
41475  /* { dg-do assemble } */
41476  /* { dg-require-effective-target arm_neon_ok } */
41477 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41478 +/* { dg-options "-save-temps -O0" } */
41479 +/* { dg-add-options arm_neon } */
41480  
41481  #include "arm_neon.h"
41482  
41483 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c b/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c
41484 --- a/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c        2007-07-25 14:28:31.000000000 +0200
41485 +++ b/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c        2010-01-25 09:50:29.395687140 +0100
41486 @@ -3,7 +3,8 @@
41487  
41488  /* { dg-do assemble } */
41489  /* { dg-require-effective-target arm_neon_ok } */
41490 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41491 +/* { dg-options "-save-temps -O0" } */
41492 +/* { dg-add-options arm_neon } */
41493  
41494  #include "arm_neon.h"
41495  
41496 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminf32.c b/gcc/testsuite/gcc.target/arm/neon/vminf32.c
41497 --- a/gcc/testsuite/gcc.target/arm/neon/vminf32.c       2007-07-25 14:28:31.000000000 +0200
41498 +++ b/gcc/testsuite/gcc.target/arm/neon/vminf32.c       2010-01-25 09:50:29.395687140 +0100
41499 @@ -3,7 +3,8 @@
41500  
41501  /* { dg-do assemble } */
41502  /* { dg-require-effective-target arm_neon_ok } */
41503 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41504 +/* { dg-options "-save-temps -O0" } */
41505 +/* { dg-add-options arm_neon } */
41506  
41507  #include "arm_neon.h"
41508  
41509 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQf32.c b/gcc/testsuite/gcc.target/arm/neon/vminQf32.c
41510 --- a/gcc/testsuite/gcc.target/arm/neon/vminQf32.c      2007-07-25 14:28:31.000000000 +0200
41511 +++ b/gcc/testsuite/gcc.target/arm/neon/vminQf32.c      2010-01-25 09:50:29.395687140 +0100
41512 @@ -3,7 +3,8 @@
41513  
41514  /* { dg-do assemble } */
41515  /* { dg-require-effective-target arm_neon_ok } */
41516 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41517 +/* { dg-options "-save-temps -O0" } */
41518 +/* { dg-add-options arm_neon } */
41519  
41520  #include "arm_neon.h"
41521  
41522 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQs16.c b/gcc/testsuite/gcc.target/arm/neon/vminQs16.c
41523 --- a/gcc/testsuite/gcc.target/arm/neon/vminQs16.c      2007-07-25 14:28:31.000000000 +0200
41524 +++ b/gcc/testsuite/gcc.target/arm/neon/vminQs16.c      2010-01-25 09:50:29.395687140 +0100
41525 @@ -3,7 +3,8 @@
41526  
41527  /* { dg-do assemble } */
41528  /* { dg-require-effective-target arm_neon_ok } */
41529 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41530 +/* { dg-options "-save-temps -O0" } */
41531 +/* { dg-add-options arm_neon } */
41532  
41533  #include "arm_neon.h"
41534  
41535 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQs32.c b/gcc/testsuite/gcc.target/arm/neon/vminQs32.c
41536 --- a/gcc/testsuite/gcc.target/arm/neon/vminQs32.c      2007-07-25 14:28:31.000000000 +0200
41537 +++ b/gcc/testsuite/gcc.target/arm/neon/vminQs32.c      2010-01-25 09:50:29.395687140 +0100
41538 @@ -3,7 +3,8 @@
41539  
41540  /* { dg-do assemble } */
41541  /* { dg-require-effective-target arm_neon_ok } */
41542 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41543 +/* { dg-options "-save-temps -O0" } */
41544 +/* { dg-add-options arm_neon } */
41545  
41546  #include "arm_neon.h"
41547  
41548 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQs8.c b/gcc/testsuite/gcc.target/arm/neon/vminQs8.c
41549 --- a/gcc/testsuite/gcc.target/arm/neon/vminQs8.c       2007-07-25 14:28:31.000000000 +0200
41550 +++ b/gcc/testsuite/gcc.target/arm/neon/vminQs8.c       2010-01-25 09:50:29.395687140 +0100
41551 @@ -3,7 +3,8 @@
41552  
41553  /* { dg-do assemble } */
41554  /* { dg-require-effective-target arm_neon_ok } */
41555 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41556 +/* { dg-options "-save-temps -O0" } */
41557 +/* { dg-add-options arm_neon } */
41558  
41559  #include "arm_neon.h"
41560  
41561 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQu16.c b/gcc/testsuite/gcc.target/arm/neon/vminQu16.c
41562 --- a/gcc/testsuite/gcc.target/arm/neon/vminQu16.c      2007-07-25 14:28:31.000000000 +0200
41563 +++ b/gcc/testsuite/gcc.target/arm/neon/vminQu16.c      2010-01-25 09:50:29.405687154 +0100
41564 @@ -3,7 +3,8 @@
41565  
41566  /* { dg-do assemble } */
41567  /* { dg-require-effective-target arm_neon_ok } */
41568 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41569 +/* { dg-options "-save-temps -O0" } */
41570 +/* { dg-add-options arm_neon } */
41571  
41572  #include "arm_neon.h"
41573  
41574 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQu32.c b/gcc/testsuite/gcc.target/arm/neon/vminQu32.c
41575 --- a/gcc/testsuite/gcc.target/arm/neon/vminQu32.c      2007-07-25 14:28:31.000000000 +0200
41576 +++ b/gcc/testsuite/gcc.target/arm/neon/vminQu32.c      2010-01-25 09:50:29.405687154 +0100
41577 @@ -3,7 +3,8 @@
41578  
41579  /* { dg-do assemble } */
41580  /* { dg-require-effective-target arm_neon_ok } */
41581 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41582 +/* { dg-options "-save-temps -O0" } */
41583 +/* { dg-add-options arm_neon } */
41584  
41585  #include "arm_neon.h"
41586  
41587 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQu8.c b/gcc/testsuite/gcc.target/arm/neon/vminQu8.c
41588 --- a/gcc/testsuite/gcc.target/arm/neon/vminQu8.c       2007-07-25 14:28:31.000000000 +0200
41589 +++ b/gcc/testsuite/gcc.target/arm/neon/vminQu8.c       2010-01-25 09:50:29.405687154 +0100
41590 @@ -3,7 +3,8 @@
41591  
41592  /* { dg-do assemble } */
41593  /* { dg-require-effective-target arm_neon_ok } */
41594 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41595 +/* { dg-options "-save-temps -O0" } */
41596 +/* { dg-add-options arm_neon } */
41597  
41598  #include "arm_neon.h"
41599  
41600 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmins16.c b/gcc/testsuite/gcc.target/arm/neon/vmins16.c
41601 --- a/gcc/testsuite/gcc.target/arm/neon/vmins16.c       2007-07-25 14:28:31.000000000 +0200
41602 +++ b/gcc/testsuite/gcc.target/arm/neon/vmins16.c       2010-01-25 09:50:29.405687154 +0100
41603 @@ -3,7 +3,8 @@
41604  
41605  /* { dg-do assemble } */
41606  /* { dg-require-effective-target arm_neon_ok } */
41607 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41608 +/* { dg-options "-save-temps -O0" } */
41609 +/* { dg-add-options arm_neon } */
41610  
41611  #include "arm_neon.h"
41612  
41613 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmins32.c b/gcc/testsuite/gcc.target/arm/neon/vmins32.c
41614 --- a/gcc/testsuite/gcc.target/arm/neon/vmins32.c       2007-07-25 14:28:31.000000000 +0200
41615 +++ b/gcc/testsuite/gcc.target/arm/neon/vmins32.c       2010-01-25 09:50:29.405687154 +0100
41616 @@ -3,7 +3,8 @@
41617  
41618  /* { dg-do assemble } */
41619  /* { dg-require-effective-target arm_neon_ok } */
41620 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41621 +/* { dg-options "-save-temps -O0" } */
41622 +/* { dg-add-options arm_neon } */
41623  
41624  #include "arm_neon.h"
41625  
41626 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmins8.c b/gcc/testsuite/gcc.target/arm/neon/vmins8.c
41627 --- a/gcc/testsuite/gcc.target/arm/neon/vmins8.c        2007-07-25 14:28:31.000000000 +0200
41628 +++ b/gcc/testsuite/gcc.target/arm/neon/vmins8.c        2010-01-25 09:50:29.405687154 +0100
41629 @@ -3,7 +3,8 @@
41630  
41631  /* { dg-do assemble } */
41632  /* { dg-require-effective-target arm_neon_ok } */
41633 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41634 +/* { dg-options "-save-temps -O0" } */
41635 +/* { dg-add-options arm_neon } */
41636  
41637  #include "arm_neon.h"
41638  
41639 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminu16.c b/gcc/testsuite/gcc.target/arm/neon/vminu16.c
41640 --- a/gcc/testsuite/gcc.target/arm/neon/vminu16.c       2007-07-25 14:28:31.000000000 +0200
41641 +++ b/gcc/testsuite/gcc.target/arm/neon/vminu16.c       2010-01-25 09:50:29.405687154 +0100
41642 @@ -3,7 +3,8 @@
41643  
41644  /* { dg-do assemble } */
41645  /* { dg-require-effective-target arm_neon_ok } */
41646 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41647 +/* { dg-options "-save-temps -O0" } */
41648 +/* { dg-add-options arm_neon } */
41649  
41650  #include "arm_neon.h"
41651  
41652 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminu32.c b/gcc/testsuite/gcc.target/arm/neon/vminu32.c
41653 --- a/gcc/testsuite/gcc.target/arm/neon/vminu32.c       2007-07-25 14:28:31.000000000 +0200
41654 +++ b/gcc/testsuite/gcc.target/arm/neon/vminu32.c       2010-01-25 09:50:29.405687154 +0100
41655 @@ -3,7 +3,8 @@
41656  
41657  /* { dg-do assemble } */
41658  /* { dg-require-effective-target arm_neon_ok } */
41659 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41660 +/* { dg-options "-save-temps -O0" } */
41661 +/* { dg-add-options arm_neon } */
41662  
41663  #include "arm_neon.h"
41664  
41665 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminu8.c b/gcc/testsuite/gcc.target/arm/neon/vminu8.c
41666 --- a/gcc/testsuite/gcc.target/arm/neon/vminu8.c        2007-07-25 14:28:31.000000000 +0200
41667 +++ b/gcc/testsuite/gcc.target/arm/neon/vminu8.c        2010-01-25 09:50:29.405687154 +0100
41668 @@ -3,7 +3,8 @@
41669  
41670  /* { dg-do assemble } */
41671  /* { dg-require-effective-target arm_neon_ok } */
41672 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41673 +/* { dg-options "-save-temps -O0" } */
41674 +/* { dg-add-options arm_neon } */
41675  
41676  #include "arm_neon.h"
41677  
41678 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c
41679 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c       2007-07-25 14:28:31.000000000 +0200
41680 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c       2010-01-25 09:50:29.405687154 +0100
41681 @@ -3,7 +3,8 @@
41682  
41683  /* { dg-do assemble } */
41684  /* { dg-require-effective-target arm_neon_ok } */
41685 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41686 +/* { dg-options "-save-temps -O0" } */
41687 +/* { dg-add-options arm_neon } */
41688  
41689  #include "arm_neon.h"
41690  
41691 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c
41692 --- a/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c  2007-07-25 14:28:31.000000000 +0200
41693 +++ b/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c  2010-01-25 09:50:29.405687154 +0100
41694 @@ -3,7 +3,8 @@
41695  
41696  /* { dg-do assemble } */
41697  /* { dg-require-effective-target arm_neon_ok } */
41698 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41699 +/* { dg-options "-save-temps -O0" } */
41700 +/* { dg-add-options arm_neon } */
41701  
41702  #include "arm_neon.h"
41703  
41704 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c
41705 --- a/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c  2007-07-25 14:28:31.000000000 +0200
41706 +++ b/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c  2010-01-25 09:50:29.405687154 +0100
41707 @@ -3,7 +3,8 @@
41708  
41709  /* { dg-do assemble } */
41710  /* { dg-require-effective-target arm_neon_ok } */
41711 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41712 +/* { dg-options "-save-temps -O0" } */
41713 +/* { dg-add-options arm_neon } */
41714  
41715  #include "arm_neon.h"
41716  
41717 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c
41718 --- a/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c  2007-07-25 14:28:31.000000000 +0200
41719 +++ b/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c  2010-01-25 09:50:29.405687154 +0100
41720 @@ -3,7 +3,8 @@
41721  
41722  /* { dg-do assemble } */
41723  /* { dg-require-effective-target arm_neon_ok } */
41724 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41725 +/* { dg-options "-save-temps -O0" } */
41726 +/* { dg-add-options arm_neon } */
41727  
41728  #include "arm_neon.h"
41729  
41730 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c
41731 --- a/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c  2007-07-25 14:28:31.000000000 +0200
41732 +++ b/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c  2010-01-25 09:50:29.405687154 +0100
41733 @@ -3,7 +3,8 @@
41734  
41735  /* { dg-do assemble } */
41736  /* { dg-require-effective-target arm_neon_ok } */
41737 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41738 +/* { dg-options "-save-temps -O0" } */
41739 +/* { dg-add-options arm_neon } */
41740  
41741  #include "arm_neon.h"
41742  
41743 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c
41744 --- a/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c  2007-07-25 14:28:31.000000000 +0200
41745 +++ b/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c  2010-01-25 09:50:29.405687154 +0100
41746 @@ -3,7 +3,8 @@
41747  
41748  /* { dg-do assemble } */
41749  /* { dg-require-effective-target arm_neon_ok } */
41750 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41751 +/* { dg-options "-save-temps -O0" } */
41752 +/* { dg-add-options arm_neon } */
41753  
41754  #include "arm_neon.h"
41755  
41756 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c
41757 --- a/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c 2007-07-25 14:28:31.000000000 +0200
41758 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c 2010-01-25 09:50:29.405687154 +0100
41759 @@ -3,7 +3,8 @@
41760  
41761  /* { dg-do assemble } */
41762  /* { dg-require-effective-target arm_neon_ok } */
41763 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41764 +/* { dg-options "-save-temps -O0" } */
41765 +/* { dg-add-options arm_neon } */
41766  
41767  #include "arm_neon.h"
41768  
41769 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c
41770 --- a/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c 2007-07-25 14:28:31.000000000 +0200
41771 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c 2010-01-25 09:50:29.405687154 +0100
41772 @@ -3,7 +3,8 @@
41773  
41774  /* { dg-do assemble } */
41775  /* { dg-require-effective-target arm_neon_ok } */
41776 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41777 +/* { dg-options "-save-temps -O0" } */
41778 +/* { dg-add-options arm_neon } */
41779  
41780  #include "arm_neon.h"
41781  
41782 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c
41783 --- a/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c 2007-07-25 14:28:31.000000000 +0200
41784 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c 2010-01-25 09:50:29.405687154 +0100
41785 @@ -3,7 +3,8 @@
41786  
41787  /* { dg-do assemble } */
41788  /* { dg-require-effective-target arm_neon_ok } */
41789 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41790 +/* { dg-options "-save-temps -O0" } */
41791 +/* { dg-add-options arm_neon } */
41792  
41793  #include "arm_neon.h"
41794  
41795 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c
41796 --- a/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c 2007-07-25 14:28:31.000000000 +0200
41797 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c 2010-01-25 09:50:29.405687154 +0100
41798 @@ -3,7 +3,8 @@
41799  
41800  /* { dg-do assemble } */
41801  /* { dg-require-effective-target arm_neon_ok } */
41802 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41803 +/* { dg-options "-save-temps -O0" } */
41804 +/* { dg-add-options arm_neon } */
41805  
41806  #include "arm_neon.h"
41807  
41808 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c
41809 --- a/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c    2007-07-25 14:28:31.000000000 +0200
41810 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c    2010-01-25 09:50:29.405687154 +0100
41811 @@ -3,7 +3,8 @@
41812  
41813  /* { dg-do assemble } */
41814  /* { dg-require-effective-target arm_neon_ok } */
41815 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41816 +/* { dg-options "-save-temps -O0" } */
41817 +/* { dg-add-options arm_neon } */
41818  
41819  #include "arm_neon.h"
41820  
41821 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c
41822 --- a/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c    2007-07-25 14:28:31.000000000 +0200
41823 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c    2010-01-25 09:50:29.405687154 +0100
41824 @@ -3,7 +3,8 @@
41825  
41826  /* { dg-do assemble } */
41827  /* { dg-require-effective-target arm_neon_ok } */
41828 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41829 +/* { dg-options "-save-temps -O0" } */
41830 +/* { dg-add-options arm_neon } */
41831  
41832  #include "arm_neon.h"
41833  
41834 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c
41835 --- a/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c    2007-07-25 14:28:31.000000000 +0200
41836 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c    2010-01-25 09:50:29.405687154 +0100
41837 @@ -3,7 +3,8 @@
41838  
41839  /* { dg-do assemble } */
41840  /* { dg-require-effective-target arm_neon_ok } */
41841 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41842 +/* { dg-options "-save-temps -O0" } */
41843 +/* { dg-add-options arm_neon } */
41844  
41845  #include "arm_neon.h"
41846  
41847 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c
41848 --- a/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c    2007-07-25 14:28:31.000000000 +0200
41849 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c    2010-01-25 09:50:29.405687154 +0100
41850 @@ -3,7 +3,8 @@
41851  
41852  /* { dg-do assemble } */
41853  /* { dg-require-effective-target arm_neon_ok } */
41854 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41855 +/* { dg-options "-save-temps -O0" } */
41856 +/* { dg-add-options arm_neon } */
41857  
41858  #include "arm_neon.h"
41859  
41860 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlals16.c b/gcc/testsuite/gcc.target/arm/neon/vmlals16.c
41861 --- a/gcc/testsuite/gcc.target/arm/neon/vmlals16.c      2007-07-25 14:28:31.000000000 +0200
41862 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlals16.c      2010-01-25 09:50:29.405687154 +0100
41863 @@ -3,7 +3,8 @@
41864  
41865  /* { dg-do assemble } */
41866  /* { dg-require-effective-target arm_neon_ok } */
41867 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41868 +/* { dg-options "-save-temps -O0" } */
41869 +/* { dg-add-options arm_neon } */
41870  
41871  #include "arm_neon.h"
41872  
41873 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlals32.c b/gcc/testsuite/gcc.target/arm/neon/vmlals32.c
41874 --- a/gcc/testsuite/gcc.target/arm/neon/vmlals32.c      2007-07-25 14:28:31.000000000 +0200
41875 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlals32.c      2010-01-25 09:50:29.405687154 +0100
41876 @@ -3,7 +3,8 @@
41877  
41878  /* { dg-do assemble } */
41879  /* { dg-require-effective-target arm_neon_ok } */
41880 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41881 +/* { dg-options "-save-temps -O0" } */
41882 +/* { dg-add-options arm_neon } */
41883  
41884  #include "arm_neon.h"
41885  
41886 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlals8.c b/gcc/testsuite/gcc.target/arm/neon/vmlals8.c
41887 --- a/gcc/testsuite/gcc.target/arm/neon/vmlals8.c       2007-07-25 14:28:31.000000000 +0200
41888 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlals8.c       2010-01-25 09:50:29.405687154 +0100
41889 @@ -3,7 +3,8 @@
41890  
41891  /* { dg-do assemble } */
41892  /* { dg-require-effective-target arm_neon_ok } */
41893 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41894 +/* { dg-options "-save-temps -O0" } */
41895 +/* { dg-add-options arm_neon } */
41896  
41897  #include "arm_neon.h"
41898  
41899 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c
41900 --- a/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c      2007-07-25 14:28:31.000000000 +0200
41901 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c      2010-01-25 09:50:29.405687154 +0100
41902 @@ -3,7 +3,8 @@
41903  
41904  /* { dg-do assemble } */
41905  /* { dg-require-effective-target arm_neon_ok } */
41906 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41907 +/* { dg-options "-save-temps -O0" } */
41908 +/* { dg-add-options arm_neon } */
41909  
41910  #include "arm_neon.h"
41911  
41912 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c
41913 --- a/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c      2007-07-25 14:28:31.000000000 +0200
41914 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c      2010-01-25 09:50:29.405687154 +0100
41915 @@ -3,7 +3,8 @@
41916  
41917  /* { dg-do assemble } */
41918  /* { dg-require-effective-target arm_neon_ok } */
41919 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41920 +/* { dg-options "-save-temps -O0" } */
41921 +/* { dg-add-options arm_neon } */
41922  
41923  #include "arm_neon.h"
41924  
41925 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c b/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c
41926 --- a/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c       2007-07-25 14:28:31.000000000 +0200
41927 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c       2010-01-25 09:50:29.405687154 +0100
41928 @@ -3,7 +3,8 @@
41929  
41930  /* { dg-do assemble } */
41931  /* { dg-require-effective-target arm_neon_ok } */
41932 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41933 +/* { dg-options "-save-temps -O0" } */
41934 +/* { dg-add-options arm_neon } */
41935  
41936  #include "arm_neon.h"
41937  
41938 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c
41939 --- a/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c     2007-07-25 14:28:31.000000000 +0200
41940 +++ b/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c     2010-01-25 09:50:29.405687154 +0100
41941 @@ -3,7 +3,8 @@
41942  
41943  /* { dg-do assemble } */
41944  /* { dg-require-effective-target arm_neon_ok } */
41945 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41946 +/* { dg-options "-save-temps -O0" } */
41947 +/* { dg-add-options arm_neon } */
41948  
41949  #include "arm_neon.h"
41950  
41951 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c
41952 --- a/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c     2007-07-25 14:28:31.000000000 +0200
41953 +++ b/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c     2010-01-25 09:50:29.405687154 +0100
41954 @@ -3,7 +3,8 @@
41955  
41956  /* { dg-do assemble } */
41957  /* { dg-require-effective-target arm_neon_ok } */
41958 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41959 +/* { dg-options "-save-temps -O0" } */
41960 +/* { dg-add-options arm_neon } */
41961  
41962  #include "arm_neon.h"
41963  
41964 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c
41965 --- a/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c     2007-07-25 14:28:31.000000000 +0200
41966 +++ b/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c     2010-01-25 09:50:29.405687154 +0100
41967 @@ -3,7 +3,8 @@
41968  
41969  /* { dg-do assemble } */
41970  /* { dg-require-effective-target arm_neon_ok } */
41971 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41972 +/* { dg-options "-save-temps -O0" } */
41973 +/* { dg-add-options arm_neon } */
41974  
41975  #include "arm_neon.h"
41976  
41977 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c
41978 --- a/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c     2007-07-25 14:28:31.000000000 +0200
41979 +++ b/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c     2010-01-25 09:50:29.405687154 +0100
41980 @@ -3,7 +3,8 @@
41981  
41982  /* { dg-do assemble } */
41983  /* { dg-require-effective-target arm_neon_ok } */
41984 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41985 +/* { dg-options "-save-temps -O0" } */
41986 +/* { dg-add-options arm_neon } */
41987  
41988  #include "arm_neon.h"
41989  
41990 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c
41991 --- a/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c     2007-07-25 14:28:31.000000000 +0200
41992 +++ b/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c     2010-01-25 09:50:29.405687154 +0100
41993 @@ -3,7 +3,8 @@
41994  
41995  /* { dg-do assemble } */
41996  /* { dg-require-effective-target arm_neon_ok } */
41997 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
41998 +/* { dg-options "-save-temps -O0" } */
41999 +/* { dg-add-options arm_neon } */
42000  
42001  #include "arm_neon.h"
42002  
42003 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c
42004 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c      2007-07-25 14:28:31.000000000 +0200
42005 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c      2010-01-25 09:50:29.405687154 +0100
42006 @@ -3,7 +3,8 @@
42007  
42008  /* { dg-do assemble } */
42009  /* { dg-require-effective-target arm_neon_ok } */
42010 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42011 +/* { dg-options "-save-temps -O0" } */
42012 +/* { dg-add-options arm_neon } */
42013  
42014  #include "arm_neon.h"
42015  
42016 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c
42017 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c 2007-07-25 14:28:31.000000000 +0200
42018 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c 2010-01-25 09:50:29.405687154 +0100
42019 @@ -3,7 +3,8 @@
42020  
42021  /* { dg-do assemble } */
42022  /* { dg-require-effective-target arm_neon_ok } */
42023 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42024 +/* { dg-options "-save-temps -O0" } */
42025 +/* { dg-add-options arm_neon } */
42026  
42027  #include "arm_neon.h"
42028  
42029 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c
42030 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c 2007-07-25 14:28:31.000000000 +0200
42031 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c 2010-01-25 09:50:29.405687154 +0100
42032 @@ -3,7 +3,8 @@
42033  
42034  /* { dg-do assemble } */
42035  /* { dg-require-effective-target arm_neon_ok } */
42036 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42037 +/* { dg-options "-save-temps -O0" } */
42038 +/* { dg-add-options arm_neon } */
42039  
42040  #include "arm_neon.h"
42041  
42042 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c
42043 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c 2007-07-25 14:28:31.000000000 +0200
42044 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c 2010-01-25 09:50:29.405687154 +0100
42045 @@ -3,7 +3,8 @@
42046  
42047  /* { dg-do assemble } */
42048  /* { dg-require-effective-target arm_neon_ok } */
42049 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42050 +/* { dg-options "-save-temps -O0" } */
42051 +/* { dg-add-options arm_neon } */
42052  
42053  #include "arm_neon.h"
42054  
42055 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c
42056 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c 2007-07-25 14:28:31.000000000 +0200
42057 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c 2010-01-25 09:50:29.405687154 +0100
42058 @@ -3,7 +3,8 @@
42059  
42060  /* { dg-do assemble } */
42061  /* { dg-require-effective-target arm_neon_ok } */
42062 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42063 +/* { dg-options "-save-temps -O0" } */
42064 +/* { dg-add-options arm_neon } */
42065  
42066  #include "arm_neon.h"
42067  
42068 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c
42069 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c 2007-07-25 14:28:31.000000000 +0200
42070 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c 2010-01-25 09:50:29.405687154 +0100
42071 @@ -3,7 +3,8 @@
42072  
42073  /* { dg-do assemble } */
42074  /* { dg-require-effective-target arm_neon_ok } */
42075 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42076 +/* { dg-options "-save-temps -O0" } */
42077 +/* { dg-add-options arm_neon } */
42078  
42079  #include "arm_neon.h"
42080  
42081 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c
42082 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c    2007-07-25 14:28:31.000000000 +0200
42083 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c    2010-01-25 09:50:29.405687154 +0100
42084 @@ -3,7 +3,8 @@
42085  
42086  /* { dg-do assemble } */
42087  /* { dg-require-effective-target arm_neon_ok } */
42088 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42089 +/* { dg-options "-save-temps -O0" } */
42090 +/* { dg-add-options arm_neon } */
42091  
42092  #include "arm_neon.h"
42093  
42094 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c
42095 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c    2007-07-25 14:28:31.000000000 +0200
42096 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c    2010-01-25 09:50:29.405687154 +0100
42097 @@ -3,7 +3,8 @@
42098  
42099  /* { dg-do assemble } */
42100  /* { dg-require-effective-target arm_neon_ok } */
42101 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42102 +/* { dg-options "-save-temps -O0" } */
42103 +/* { dg-add-options arm_neon } */
42104  
42105  #include "arm_neon.h"
42106  
42107 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c
42108 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c    2007-07-25 14:28:31.000000000 +0200
42109 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c    2010-01-25 09:50:29.405687154 +0100
42110 @@ -3,7 +3,8 @@
42111  
42112  /* { dg-do assemble } */
42113  /* { dg-require-effective-target arm_neon_ok } */
42114 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42115 +/* { dg-options "-save-temps -O0" } */
42116 +/* { dg-add-options arm_neon } */
42117  
42118  #include "arm_neon.h"
42119  
42120 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c
42121 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c    2007-07-25 14:28:31.000000000 +0200
42122 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c    2010-01-25 09:50:29.405687154 +0100
42123 @@ -3,7 +3,8 @@
42124  
42125  /* { dg-do assemble } */
42126  /* { dg-require-effective-target arm_neon_ok } */
42127 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42128 +/* { dg-options "-save-temps -O0" } */
42129 +/* { dg-add-options arm_neon } */
42130  
42131  #include "arm_neon.h"
42132  
42133 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c
42134 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c    2007-07-25 14:28:31.000000000 +0200
42135 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c    2010-01-25 09:50:29.405687154 +0100
42136 @@ -3,7 +3,8 @@
42137  
42138  /* { dg-do assemble } */
42139  /* { dg-require-effective-target arm_neon_ok } */
42140 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42141 +/* { dg-options "-save-temps -O0" } */
42142 +/* { dg-add-options arm_neon } */
42143  
42144  #include "arm_neon.h"
42145  
42146 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c
42147 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c      2007-07-25 14:28:31.000000000 +0200
42148 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c      2010-01-25 09:50:29.405687154 +0100
42149 @@ -3,7 +3,8 @@
42150  
42151  /* { dg-do assemble } */
42152  /* { dg-require-effective-target arm_neon_ok } */
42153 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42154 +/* { dg-options "-save-temps -O0" } */
42155 +/* { dg-add-options arm_neon } */
42156  
42157  #include "arm_neon.h"
42158  
42159 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c
42160 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c      2007-07-25 14:28:31.000000000 +0200
42161 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c      2010-01-25 09:50:29.405687154 +0100
42162 @@ -3,7 +3,8 @@
42163  
42164  /* { dg-do assemble } */
42165  /* { dg-require-effective-target arm_neon_ok } */
42166 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42167 +/* { dg-options "-save-temps -O0" } */
42168 +/* { dg-add-options arm_neon } */
42169  
42170  #include "arm_neon.h"
42171  
42172 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c
42173 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c       2007-07-25 14:28:31.000000000 +0200
42174 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c       2010-01-25 09:50:29.405687154 +0100
42175 @@ -3,7 +3,8 @@
42176  
42177  /* { dg-do assemble } */
42178  /* { dg-require-effective-target arm_neon_ok } */
42179 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42180 +/* { dg-options "-save-temps -O0" } */
42181 +/* { dg-add-options arm_neon } */
42182  
42183  #include "arm_neon.h"
42184  
42185 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c
42186 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c      2007-07-25 14:28:31.000000000 +0200
42187 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c      2010-01-25 09:50:29.405687154 +0100
42188 @@ -3,7 +3,8 @@
42189  
42190  /* { dg-do assemble } */
42191  /* { dg-require-effective-target arm_neon_ok } */
42192 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42193 +/* { dg-options "-save-temps -O0" } */
42194 +/* { dg-add-options arm_neon } */
42195  
42196  #include "arm_neon.h"
42197  
42198 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c
42199 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c      2007-07-25 14:28:31.000000000 +0200
42200 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c      2010-01-25 09:50:29.405687154 +0100
42201 @@ -3,7 +3,8 @@
42202  
42203  /* { dg-do assemble } */
42204  /* { dg-require-effective-target arm_neon_ok } */
42205 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42206 +/* { dg-options "-save-temps -O0" } */
42207 +/* { dg-add-options arm_neon } */
42208  
42209  #include "arm_neon.h"
42210  
42211 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c
42212 --- a/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c       2007-07-25 14:28:31.000000000 +0200
42213 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c       2010-01-25 09:50:29.405687154 +0100
42214 @@ -3,7 +3,8 @@
42215  
42216  /* { dg-do assemble } */
42217  /* { dg-require-effective-target arm_neon_ok } */
42218 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42219 +/* { dg-options "-save-temps -O0" } */
42220 +/* { dg-add-options arm_neon } */
42221  
42222  #include "arm_neon.h"
42223  
42224 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlas16.c b/gcc/testsuite/gcc.target/arm/neon/vmlas16.c
42225 --- a/gcc/testsuite/gcc.target/arm/neon/vmlas16.c       2007-07-25 14:28:31.000000000 +0200
42226 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlas16.c       2010-01-25 09:50:29.405687154 +0100
42227 @@ -3,7 +3,8 @@
42228  
42229  /* { dg-do assemble } */
42230  /* { dg-require-effective-target arm_neon_ok } */
42231 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42232 +/* { dg-options "-save-temps -O0" } */
42233 +/* { dg-add-options arm_neon } */
42234  
42235  #include "arm_neon.h"
42236  
42237 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlas32.c b/gcc/testsuite/gcc.target/arm/neon/vmlas32.c
42238 --- a/gcc/testsuite/gcc.target/arm/neon/vmlas32.c       2007-07-25 14:28:31.000000000 +0200
42239 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlas32.c       2010-01-25 09:50:29.405687154 +0100
42240 @@ -3,7 +3,8 @@
42241  
42242  /* { dg-do assemble } */
42243  /* { dg-require-effective-target arm_neon_ok } */
42244 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42245 +/* { dg-options "-save-temps -O0" } */
42246 +/* { dg-add-options arm_neon } */
42247  
42248  #include "arm_neon.h"
42249  
42250 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlas8.c b/gcc/testsuite/gcc.target/arm/neon/vmlas8.c
42251 --- a/gcc/testsuite/gcc.target/arm/neon/vmlas8.c        2007-07-25 14:28:31.000000000 +0200
42252 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlas8.c        2010-01-25 09:50:29.405687154 +0100
42253 @@ -3,7 +3,8 @@
42254  
42255  /* { dg-do assemble } */
42256  /* { dg-require-effective-target arm_neon_ok } */
42257 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42258 +/* { dg-options "-save-temps -O0" } */
42259 +/* { dg-add-options arm_neon } */
42260  
42261  #include "arm_neon.h"
42262  
42263 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlau16.c b/gcc/testsuite/gcc.target/arm/neon/vmlau16.c
42264 --- a/gcc/testsuite/gcc.target/arm/neon/vmlau16.c       2007-07-25 14:28:31.000000000 +0200
42265 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlau16.c       2010-01-25 09:50:29.405687154 +0100
42266 @@ -3,7 +3,8 @@
42267  
42268  /* { dg-do assemble } */
42269  /* { dg-require-effective-target arm_neon_ok } */
42270 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42271 +/* { dg-options "-save-temps -O0" } */
42272 +/* { dg-add-options arm_neon } */
42273  
42274  #include "arm_neon.h"
42275  
42276 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlau32.c b/gcc/testsuite/gcc.target/arm/neon/vmlau32.c
42277 --- a/gcc/testsuite/gcc.target/arm/neon/vmlau32.c       2007-07-25 14:28:31.000000000 +0200
42278 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlau32.c       2010-01-25 09:50:29.405687154 +0100
42279 @@ -3,7 +3,8 @@
42280  
42281  /* { dg-do assemble } */
42282  /* { dg-require-effective-target arm_neon_ok } */
42283 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42284 +/* { dg-options "-save-temps -O0" } */
42285 +/* { dg-add-options arm_neon } */
42286  
42287  #include "arm_neon.h"
42288  
42289 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlau8.c b/gcc/testsuite/gcc.target/arm/neon/vmlau8.c
42290 --- a/gcc/testsuite/gcc.target/arm/neon/vmlau8.c        2007-07-25 14:28:31.000000000 +0200
42291 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlau8.c        2010-01-25 09:50:29.405687154 +0100
42292 @@ -3,7 +3,8 @@
42293  
42294  /* { dg-do assemble } */
42295  /* { dg-require-effective-target arm_neon_ok } */
42296 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42297 +/* { dg-options "-save-temps -O0" } */
42298 +/* { dg-add-options arm_neon } */
42299  
42300  #include "arm_neon.h"
42301  
42302 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c
42303 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c       2007-07-25 14:28:31.000000000 +0200
42304 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c       2010-01-25 09:50:29.405687154 +0100
42305 @@ -3,7 +3,8 @@
42306  
42307  /* { dg-do assemble } */
42308  /* { dg-require-effective-target arm_neon_ok } */
42309 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42310 +/* { dg-options "-save-temps -O0" } */
42311 +/* { dg-add-options arm_neon } */
42312  
42313  #include "arm_neon.h"
42314  
42315 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c
42316 --- a/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c  2007-07-25 14:28:31.000000000 +0200
42317 +++ b/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c  2010-01-25 09:50:29.405687154 +0100
42318 @@ -3,7 +3,8 @@
42319  
42320  /* { dg-do assemble } */
42321  /* { dg-require-effective-target arm_neon_ok } */
42322 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42323 +/* { dg-options "-save-temps -O0" } */
42324 +/* { dg-add-options arm_neon } */
42325  
42326  #include "arm_neon.h"
42327  
42328 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c
42329 --- a/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c  2007-07-25 14:28:31.000000000 +0200
42330 +++ b/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c  2010-01-25 09:50:29.405687154 +0100
42331 @@ -3,7 +3,8 @@
42332  
42333  /* { dg-do assemble } */
42334  /* { dg-require-effective-target arm_neon_ok } */
42335 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42336 +/* { dg-options "-save-temps -O0" } */
42337 +/* { dg-add-options arm_neon } */
42338  
42339  #include "arm_neon.h"
42340  
42341 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c
42342 --- a/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c  2007-07-25 14:28:31.000000000 +0200
42343 +++ b/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c  2010-01-25 09:50:29.405687154 +0100
42344 @@ -3,7 +3,8 @@
42345  
42346  /* { dg-do assemble } */
42347  /* { dg-require-effective-target arm_neon_ok } */
42348 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42349 +/* { dg-options "-save-temps -O0" } */
42350 +/* { dg-add-options arm_neon } */
42351  
42352  #include "arm_neon.h"
42353  
42354 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c
42355 --- a/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c  2007-07-25 14:28:31.000000000 +0200
42356 +++ b/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c  2010-01-25 09:50:29.405687154 +0100
42357 @@ -3,7 +3,8 @@
42358  
42359  /* { dg-do assemble } */
42360  /* { dg-require-effective-target arm_neon_ok } */
42361 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42362 +/* { dg-options "-save-temps -O0" } */
42363 +/* { dg-add-options arm_neon } */
42364  
42365  #include "arm_neon.h"
42366  
42367 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c
42368 --- a/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c  2007-07-25 14:28:31.000000000 +0200
42369 +++ b/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c  2010-01-25 09:50:29.405687154 +0100
42370 @@ -3,7 +3,8 @@
42371  
42372  /* { dg-do assemble } */
42373  /* { dg-require-effective-target arm_neon_ok } */
42374 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42375 +/* { dg-options "-save-temps -O0" } */
42376 +/* { dg-add-options arm_neon } */
42377  
42378  #include "arm_neon.h"
42379  
42380 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c
42381 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c 2007-07-25 14:28:31.000000000 +0200
42382 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c 2010-01-25 09:50:29.405687154 +0100
42383 @@ -3,7 +3,8 @@
42384  
42385  /* { dg-do assemble } */
42386  /* { dg-require-effective-target arm_neon_ok } */
42387 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42388 +/* { dg-options "-save-temps -O0" } */
42389 +/* { dg-add-options arm_neon } */
42390  
42391  #include "arm_neon.h"
42392  
42393 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c
42394 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c 2007-07-25 14:28:31.000000000 +0200
42395 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c 2010-01-25 09:50:29.405687154 +0100
42396 @@ -3,7 +3,8 @@
42397  
42398  /* { dg-do assemble } */
42399  /* { dg-require-effective-target arm_neon_ok } */
42400 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42401 +/* { dg-options "-save-temps -O0" } */
42402 +/* { dg-add-options arm_neon } */
42403  
42404  #include "arm_neon.h"
42405  
42406 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c
42407 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c 2007-07-25 14:28:31.000000000 +0200
42408 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c 2010-01-25 09:50:29.405687154 +0100
42409 @@ -3,7 +3,8 @@
42410  
42411  /* { dg-do assemble } */
42412  /* { dg-require-effective-target arm_neon_ok } */
42413 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42414 +/* { dg-options "-save-temps -O0" } */
42415 +/* { dg-add-options arm_neon } */
42416  
42417  #include "arm_neon.h"
42418  
42419 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c
42420 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c 2007-07-25 14:28:31.000000000 +0200
42421 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c 2010-01-25 09:50:29.405687154 +0100
42422 @@ -3,7 +3,8 @@
42423  
42424  /* { dg-do assemble } */
42425  /* { dg-require-effective-target arm_neon_ok } */
42426 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42427 +/* { dg-options "-save-temps -O0" } */
42428 +/* { dg-add-options arm_neon } */
42429  
42430  #include "arm_neon.h"
42431  
42432 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c
42433 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c    2007-07-25 14:28:31.000000000 +0200
42434 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c    2010-01-25 09:50:29.405687154 +0100
42435 @@ -3,7 +3,8 @@
42436  
42437  /* { dg-do assemble } */
42438  /* { dg-require-effective-target arm_neon_ok } */
42439 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42440 +/* { dg-options "-save-temps -O0" } */
42441 +/* { dg-add-options arm_neon } */
42442  
42443  #include "arm_neon.h"
42444  
42445 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c
42446 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c    2007-07-25 14:28:31.000000000 +0200
42447 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c    2010-01-25 09:50:29.405687154 +0100
42448 @@ -3,7 +3,8 @@
42449  
42450  /* { dg-do assemble } */
42451  /* { dg-require-effective-target arm_neon_ok } */
42452 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42453 +/* { dg-options "-save-temps -O0" } */
42454 +/* { dg-add-options arm_neon } */
42455  
42456  #include "arm_neon.h"
42457  
42458 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c
42459 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c    2007-07-25 14:28:31.000000000 +0200
42460 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c    2010-01-25 09:50:29.405687154 +0100
42461 @@ -3,7 +3,8 @@
42462  
42463  /* { dg-do assemble } */
42464  /* { dg-require-effective-target arm_neon_ok } */
42465 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42466 +/* { dg-options "-save-temps -O0" } */
42467 +/* { dg-add-options arm_neon } */
42468  
42469  #include "arm_neon.h"
42470  
42471 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c
42472 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c    2007-07-25 14:28:31.000000000 +0200
42473 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c    2010-01-25 09:50:29.405687154 +0100
42474 @@ -3,7 +3,8 @@
42475  
42476  /* { dg-do assemble } */
42477  /* { dg-require-effective-target arm_neon_ok } */
42478 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42479 +/* { dg-options "-save-temps -O0" } */
42480 +/* { dg-add-options arm_neon } */
42481  
42482  #include "arm_neon.h"
42483  
42484 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c
42485 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c      2007-07-25 14:28:31.000000000 +0200
42486 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c      2010-01-25 09:50:29.405687154 +0100
42487 @@ -3,7 +3,8 @@
42488  
42489  /* { dg-do assemble } */
42490  /* { dg-require-effective-target arm_neon_ok } */
42491 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42492 +/* { dg-options "-save-temps -O0" } */
42493 +/* { dg-add-options arm_neon } */
42494  
42495  #include "arm_neon.h"
42496  
42497 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c
42498 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c      2007-07-25 14:28:31.000000000 +0200
42499 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c      2010-01-25 09:50:29.405687154 +0100
42500 @@ -3,7 +3,8 @@
42501  
42502  /* { dg-do assemble } */
42503  /* { dg-require-effective-target arm_neon_ok } */
42504 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42505 +/* { dg-options "-save-temps -O0" } */
42506 +/* { dg-add-options arm_neon } */
42507  
42508  #include "arm_neon.h"
42509  
42510 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c b/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c
42511 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c       2007-07-25 14:28:31.000000000 +0200
42512 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c       2010-01-25 09:50:29.405687154 +0100
42513 @@ -3,7 +3,8 @@
42514  
42515  /* { dg-do assemble } */
42516  /* { dg-require-effective-target arm_neon_ok } */
42517 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42518 +/* { dg-options "-save-temps -O0" } */
42519 +/* { dg-add-options arm_neon } */
42520  
42521  #include "arm_neon.h"
42522  
42523 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c
42524 --- a/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c      2007-07-25 14:28:31.000000000 +0200
42525 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c      2010-01-25 09:50:29.415686609 +0100
42526 @@ -3,7 +3,8 @@
42527  
42528  /* { dg-do assemble } */
42529  /* { dg-require-effective-target arm_neon_ok } */
42530 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42531 +/* { dg-options "-save-temps -O0" } */
42532 +/* { dg-add-options arm_neon } */
42533  
42534  #include "arm_neon.h"
42535  
42536 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c
42537 --- a/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c      2007-07-25 14:28:31.000000000 +0200
42538 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c      2010-01-25 09:50:29.415686609 +0100
42539 @@ -3,7 +3,8 @@
42540  
42541  /* { dg-do assemble } */
42542  /* { dg-require-effective-target arm_neon_ok } */
42543 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42544 +/* { dg-options "-save-temps -O0" } */
42545 +/* { dg-add-options arm_neon } */
42546  
42547  #include "arm_neon.h"
42548  
42549 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c b/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c
42550 --- a/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c       2007-07-25 14:28:31.000000000 +0200
42551 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c       2010-01-25 09:50:29.415686609 +0100
42552 @@ -3,7 +3,8 @@
42553  
42554  /* { dg-do assemble } */
42555  /* { dg-require-effective-target arm_neon_ok } */
42556 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42557 +/* { dg-options "-save-temps -O0" } */
42558 +/* { dg-add-options arm_neon } */
42559  
42560  #include "arm_neon.h"
42561  
42562 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c
42563 --- a/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c     2007-07-25 14:28:31.000000000 +0200
42564 +++ b/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c     2010-01-25 09:50:29.415686609 +0100
42565 @@ -3,7 +3,8 @@
42566  
42567  /* { dg-do assemble } */
42568  /* { dg-require-effective-target arm_neon_ok } */
42569 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42570 +/* { dg-options "-save-temps -O0" } */
42571 +/* { dg-add-options arm_neon } */
42572  
42573  #include "arm_neon.h"
42574  
42575 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c
42576 --- a/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c     2007-07-25 14:28:31.000000000 +0200
42577 +++ b/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c     2010-01-25 09:50:29.415686609 +0100
42578 @@ -3,7 +3,8 @@
42579  
42580  /* { dg-do assemble } */
42581  /* { dg-require-effective-target arm_neon_ok } */
42582 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42583 +/* { dg-options "-save-temps -O0" } */
42584 +/* { dg-add-options arm_neon } */
42585  
42586  #include "arm_neon.h"
42587  
42588 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c
42589 --- a/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c     2007-07-25 14:28:31.000000000 +0200
42590 +++ b/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c     2010-01-25 09:50:29.415686609 +0100
42591 @@ -3,7 +3,8 @@
42592  
42593  /* { dg-do assemble } */
42594  /* { dg-require-effective-target arm_neon_ok } */
42595 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42596 +/* { dg-options "-save-temps -O0" } */
42597 +/* { dg-add-options arm_neon } */
42598  
42599  #include "arm_neon.h"
42600  
42601 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c
42602 --- a/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c     2007-07-25 14:28:31.000000000 +0200
42603 +++ b/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c     2010-01-25 09:50:29.415686609 +0100
42604 @@ -3,7 +3,8 @@
42605  
42606  /* { dg-do assemble } */
42607  /* { dg-require-effective-target arm_neon_ok } */
42608 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42609 +/* { dg-options "-save-temps -O0" } */
42610 +/* { dg-add-options arm_neon } */
42611  
42612  #include "arm_neon.h"
42613  
42614 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c
42615 --- a/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c     2007-07-25 14:28:31.000000000 +0200
42616 +++ b/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c     2010-01-25 09:50:29.415686609 +0100
42617 @@ -3,7 +3,8 @@
42618  
42619  /* { dg-do assemble } */
42620  /* { dg-require-effective-target arm_neon_ok } */
42621 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42622 +/* { dg-options "-save-temps -O0" } */
42623 +/* { dg-add-options arm_neon } */
42624  
42625  #include "arm_neon.h"
42626  
42627 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c
42628 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c      2007-07-25 14:28:31.000000000 +0200
42629 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c      2010-01-25 09:50:29.415686609 +0100
42630 @@ -3,7 +3,8 @@
42631  
42632  /* { dg-do assemble } */
42633  /* { dg-require-effective-target arm_neon_ok } */
42634 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42635 +/* { dg-options "-save-temps -O0" } */
42636 +/* { dg-add-options arm_neon } */
42637  
42638  #include "arm_neon.h"
42639  
42640 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c
42641 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c 2007-07-25 14:28:31.000000000 +0200
42642 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c 2010-01-25 09:50:29.415686609 +0100
42643 @@ -3,7 +3,8 @@
42644  
42645  /* { dg-do assemble } */
42646  /* { dg-require-effective-target arm_neon_ok } */
42647 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42648 +/* { dg-options "-save-temps -O0" } */
42649 +/* { dg-add-options arm_neon } */
42650  
42651  #include "arm_neon.h"
42652  
42653 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c
42654 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c 2007-07-25 14:28:31.000000000 +0200
42655 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c 2010-01-25 09:50:29.415686609 +0100
42656 @@ -3,7 +3,8 @@
42657  
42658  /* { dg-do assemble } */
42659  /* { dg-require-effective-target arm_neon_ok } */
42660 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42661 +/* { dg-options "-save-temps -O0" } */
42662 +/* { dg-add-options arm_neon } */
42663  
42664  #include "arm_neon.h"
42665  
42666 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c
42667 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c 2007-07-25 14:28:31.000000000 +0200
42668 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c 2010-01-25 09:50:29.415686609 +0100
42669 @@ -3,7 +3,8 @@
42670  
42671  /* { dg-do assemble } */
42672  /* { dg-require-effective-target arm_neon_ok } */
42673 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42674 +/* { dg-options "-save-temps -O0" } */
42675 +/* { dg-add-options arm_neon } */
42676  
42677  #include "arm_neon.h"
42678  
42679 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c
42680 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c 2007-07-25 14:28:31.000000000 +0200
42681 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c 2010-01-25 09:50:29.415686609 +0100
42682 @@ -3,7 +3,8 @@
42683  
42684  /* { dg-do assemble } */
42685  /* { dg-require-effective-target arm_neon_ok } */
42686 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42687 +/* { dg-options "-save-temps -O0" } */
42688 +/* { dg-add-options arm_neon } */
42689  
42690  #include "arm_neon.h"
42691  
42692 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c
42693 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c 2007-07-25 14:28:31.000000000 +0200
42694 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c 2010-01-25 09:50:29.415686609 +0100
42695 @@ -3,7 +3,8 @@
42696  
42697  /* { dg-do assemble } */
42698  /* { dg-require-effective-target arm_neon_ok } */
42699 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42700 +/* { dg-options "-save-temps -O0" } */
42701 +/* { dg-add-options arm_neon } */
42702  
42703  #include "arm_neon.h"
42704  
42705 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c
42706 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c    2007-07-25 14:28:31.000000000 +0200
42707 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c    2010-01-25 09:50:29.415686609 +0100
42708 @@ -3,7 +3,8 @@
42709  
42710  /* { dg-do assemble } */
42711  /* { dg-require-effective-target arm_neon_ok } */
42712 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42713 +/* { dg-options "-save-temps -O0" } */
42714 +/* { dg-add-options arm_neon } */
42715  
42716  #include "arm_neon.h"
42717  
42718 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c
42719 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c    2007-07-25 14:28:31.000000000 +0200
42720 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c    2010-01-25 09:50:29.415686609 +0100
42721 @@ -3,7 +3,8 @@
42722  
42723  /* { dg-do assemble } */
42724  /* { dg-require-effective-target arm_neon_ok } */
42725 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42726 +/* { dg-options "-save-temps -O0" } */
42727 +/* { dg-add-options arm_neon } */
42728  
42729  #include "arm_neon.h"
42730  
42731 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c
42732 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c    2007-07-25 14:28:31.000000000 +0200
42733 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c    2010-01-25 09:50:29.415686609 +0100
42734 @@ -3,7 +3,8 @@
42735  
42736  /* { dg-do assemble } */
42737  /* { dg-require-effective-target arm_neon_ok } */
42738 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42739 +/* { dg-options "-save-temps -O0" } */
42740 +/* { dg-add-options arm_neon } */
42741  
42742  #include "arm_neon.h"
42743  
42744 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c
42745 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c    2007-07-25 14:28:31.000000000 +0200
42746 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c    2010-01-25 09:50:29.415686609 +0100
42747 @@ -3,7 +3,8 @@
42748  
42749  /* { dg-do assemble } */
42750  /* { dg-require-effective-target arm_neon_ok } */
42751 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42752 +/* { dg-options "-save-temps -O0" } */
42753 +/* { dg-add-options arm_neon } */
42754  
42755  #include "arm_neon.h"
42756  
42757 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c
42758 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c    2007-07-25 14:28:31.000000000 +0200
42759 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c    2010-01-25 09:50:29.415686609 +0100
42760 @@ -3,7 +3,8 @@
42761  
42762  /* { dg-do assemble } */
42763  /* { dg-require-effective-target arm_neon_ok } */
42764 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42765 +/* { dg-options "-save-temps -O0" } */
42766 +/* { dg-add-options arm_neon } */
42767  
42768  #include "arm_neon.h"
42769  
42770 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c
42771 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c      2007-07-25 14:28:31.000000000 +0200
42772 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c      2010-01-25 09:50:29.415686609 +0100
42773 @@ -3,7 +3,8 @@
42774  
42775  /* { dg-do assemble } */
42776  /* { dg-require-effective-target arm_neon_ok } */
42777 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42778 +/* { dg-options "-save-temps -O0" } */
42779 +/* { dg-add-options arm_neon } */
42780  
42781  #include "arm_neon.h"
42782  
42783 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c
42784 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c      2007-07-25 14:28:31.000000000 +0200
42785 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c      2010-01-25 09:50:29.415686609 +0100
42786 @@ -3,7 +3,8 @@
42787  
42788  /* { dg-do assemble } */
42789  /* { dg-require-effective-target arm_neon_ok } */
42790 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42791 +/* { dg-options "-save-temps -O0" } */
42792 +/* { dg-add-options arm_neon } */
42793  
42794  #include "arm_neon.h"
42795  
42796 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c
42797 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c       2007-07-25 14:28:31.000000000 +0200
42798 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c       2010-01-25 09:50:29.415686609 +0100
42799 @@ -3,7 +3,8 @@
42800  
42801  /* { dg-do assemble } */
42802  /* { dg-require-effective-target arm_neon_ok } */
42803 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42804 +/* { dg-options "-save-temps -O0" } */
42805 +/* { dg-add-options arm_neon } */
42806  
42807  #include "arm_neon.h"
42808  
42809 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c
42810 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c      2007-07-25 14:28:31.000000000 +0200
42811 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c      2010-01-25 09:50:29.415686609 +0100
42812 @@ -3,7 +3,8 @@
42813  
42814  /* { dg-do assemble } */
42815  /* { dg-require-effective-target arm_neon_ok } */
42816 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42817 +/* { dg-options "-save-temps -O0" } */
42818 +/* { dg-add-options arm_neon } */
42819  
42820  #include "arm_neon.h"
42821  
42822 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c
42823 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c      2007-07-25 14:28:31.000000000 +0200
42824 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c      2010-01-25 09:50:29.415686609 +0100
42825 @@ -3,7 +3,8 @@
42826  
42827  /* { dg-do assemble } */
42828  /* { dg-require-effective-target arm_neon_ok } */
42829 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42830 +/* { dg-options "-save-temps -O0" } */
42831 +/* { dg-add-options arm_neon } */
42832  
42833  #include "arm_neon.h"
42834  
42835 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c
42836 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c       2007-07-25 14:28:31.000000000 +0200
42837 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c       2010-01-25 09:50:29.415686609 +0100
42838 @@ -3,7 +3,8 @@
42839  
42840  /* { dg-do assemble } */
42841  /* { dg-require-effective-target arm_neon_ok } */
42842 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42843 +/* { dg-options "-save-temps -O0" } */
42844 +/* { dg-add-options arm_neon } */
42845  
42846  #include "arm_neon.h"
42847  
42848 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlss16.c b/gcc/testsuite/gcc.target/arm/neon/vmlss16.c
42849 --- a/gcc/testsuite/gcc.target/arm/neon/vmlss16.c       2007-07-25 14:28:31.000000000 +0200
42850 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlss16.c       2010-01-25 09:50:29.415686609 +0100
42851 @@ -3,7 +3,8 @@
42852  
42853  /* { dg-do assemble } */
42854  /* { dg-require-effective-target arm_neon_ok } */
42855 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42856 +/* { dg-options "-save-temps -O0" } */
42857 +/* { dg-add-options arm_neon } */
42858  
42859  #include "arm_neon.h"
42860  
42861 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlss32.c b/gcc/testsuite/gcc.target/arm/neon/vmlss32.c
42862 --- a/gcc/testsuite/gcc.target/arm/neon/vmlss32.c       2007-07-25 14:28:31.000000000 +0200
42863 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlss32.c       2010-01-25 09:50:29.415686609 +0100
42864 @@ -3,7 +3,8 @@
42865  
42866  /* { dg-do assemble } */
42867  /* { dg-require-effective-target arm_neon_ok } */
42868 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42869 +/* { dg-options "-save-temps -O0" } */
42870 +/* { dg-add-options arm_neon } */
42871  
42872  #include "arm_neon.h"
42873  
42874 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlss8.c b/gcc/testsuite/gcc.target/arm/neon/vmlss8.c
42875 --- a/gcc/testsuite/gcc.target/arm/neon/vmlss8.c        2007-07-25 14:28:31.000000000 +0200
42876 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlss8.c        2010-01-25 09:50:29.415686609 +0100
42877 @@ -3,7 +3,8 @@
42878  
42879  /* { dg-do assemble } */
42880  /* { dg-require-effective-target arm_neon_ok } */
42881 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42882 +/* { dg-options "-save-temps -O0" } */
42883 +/* { dg-add-options arm_neon } */
42884  
42885  #include "arm_neon.h"
42886  
42887 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c
42888 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c       2007-07-25 14:28:31.000000000 +0200
42889 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c       2010-01-25 09:50:29.415686609 +0100
42890 @@ -3,7 +3,8 @@
42891  
42892  /* { dg-do assemble } */
42893  /* { dg-require-effective-target arm_neon_ok } */
42894 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42895 +/* { dg-options "-save-temps -O0" } */
42896 +/* { dg-add-options arm_neon } */
42897  
42898  #include "arm_neon.h"
42899  
42900 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c
42901 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c       2007-07-25 14:28:31.000000000 +0200
42902 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c       2010-01-25 09:50:29.415686609 +0100
42903 @@ -3,7 +3,8 @@
42904  
42905  /* { dg-do assemble } */
42906  /* { dg-require-effective-target arm_neon_ok } */
42907 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42908 +/* { dg-options "-save-temps -O0" } */
42909 +/* { dg-add-options arm_neon } */
42910  
42911  #include "arm_neon.h"
42912  
42913 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c b/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c
42914 --- a/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c        2007-07-25 14:28:31.000000000 +0200
42915 +++ b/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c        2010-01-25 09:50:29.415686609 +0100
42916 @@ -3,7 +3,8 @@
42917  
42918  /* { dg-do assemble } */
42919  /* { dg-require-effective-target arm_neon_ok } */
42920 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42921 +/* { dg-options "-save-temps -O0" } */
42922 +/* { dg-add-options arm_neon } */
42923  
42924  #include "arm_neon.h"
42925  
42926 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovls16.c b/gcc/testsuite/gcc.target/arm/neon/vmovls16.c
42927 --- a/gcc/testsuite/gcc.target/arm/neon/vmovls16.c      2007-07-25 14:28:31.000000000 +0200
42928 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovls16.c      2010-01-25 09:50:29.415686609 +0100
42929 @@ -3,7 +3,8 @@
42930  
42931  /* { dg-do assemble } */
42932  /* { dg-require-effective-target arm_neon_ok } */
42933 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42934 +/* { dg-options "-save-temps -O0" } */
42935 +/* { dg-add-options arm_neon } */
42936  
42937  #include "arm_neon.h"
42938  
42939 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovls32.c b/gcc/testsuite/gcc.target/arm/neon/vmovls32.c
42940 --- a/gcc/testsuite/gcc.target/arm/neon/vmovls32.c      2007-07-25 14:28:31.000000000 +0200
42941 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovls32.c      2010-01-25 09:50:29.415686609 +0100
42942 @@ -3,7 +3,8 @@
42943  
42944  /* { dg-do assemble } */
42945  /* { dg-require-effective-target arm_neon_ok } */
42946 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42947 +/* { dg-options "-save-temps -O0" } */
42948 +/* { dg-add-options arm_neon } */
42949  
42950  #include "arm_neon.h"
42951  
42952 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovls8.c b/gcc/testsuite/gcc.target/arm/neon/vmovls8.c
42953 --- a/gcc/testsuite/gcc.target/arm/neon/vmovls8.c       2007-07-25 14:28:31.000000000 +0200
42954 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovls8.c       2010-01-25 09:50:29.415686609 +0100
42955 @@ -3,7 +3,8 @@
42956  
42957  /* { dg-do assemble } */
42958  /* { dg-require-effective-target arm_neon_ok } */
42959 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42960 +/* { dg-options "-save-temps -O0" } */
42961 +/* { dg-add-options arm_neon } */
42962  
42963  #include "arm_neon.h"
42964  
42965 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c b/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c
42966 --- a/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c      2007-07-25 14:28:31.000000000 +0200
42967 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c      2010-01-25 09:50:29.415686609 +0100
42968 @@ -3,7 +3,8 @@
42969  
42970  /* { dg-do assemble } */
42971  /* { dg-require-effective-target arm_neon_ok } */
42972 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42973 +/* { dg-options "-save-temps -O0" } */
42974 +/* { dg-add-options arm_neon } */
42975  
42976  #include "arm_neon.h"
42977  
42978 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c b/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c
42979 --- a/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c      2007-07-25 14:28:31.000000000 +0200
42980 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c      2010-01-25 09:50:29.415686609 +0100
42981 @@ -3,7 +3,8 @@
42982  
42983  /* { dg-do assemble } */
42984  /* { dg-require-effective-target arm_neon_ok } */
42985 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42986 +/* { dg-options "-save-temps -O0" } */
42987 +/* { dg-add-options arm_neon } */
42988  
42989  #include "arm_neon.h"
42990  
42991 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c b/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c
42992 --- a/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c       2007-07-25 14:28:31.000000000 +0200
42993 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c       2010-01-25 09:50:29.415686609 +0100
42994 @@ -3,7 +3,8 @@
42995  
42996  /* { dg-do assemble } */
42997  /* { dg-require-effective-target arm_neon_ok } */
42998 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
42999 +/* { dg-options "-save-temps -O0" } */
43000 +/* { dg-add-options arm_neon } */
43001  
43002  #include "arm_neon.h"
43003  
43004 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c
43005 --- a/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c     2007-07-25 14:28:31.000000000 +0200
43006 +++ b/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c     2010-01-25 09:50:29.415686609 +0100
43007 @@ -3,7 +3,8 @@
43008  
43009  /* { dg-do assemble } */
43010  /* { dg-require-effective-target arm_neon_ok } */
43011 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43012 +/* { dg-options "-save-temps -O0" } */
43013 +/* { dg-add-options arm_neon } */
43014  
43015  #include "arm_neon.h"
43016  
43017 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c b/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c
43018 --- a/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c     2007-07-25 14:28:31.000000000 +0200
43019 +++ b/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c     2010-01-25 09:50:29.415686609 +0100
43020 @@ -3,7 +3,8 @@
43021  
43022  /* { dg-do assemble } */
43023  /* { dg-require-effective-target arm_neon_ok } */
43024 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43025 +/* { dg-options "-save-temps -O0" } */
43026 +/* { dg-add-options arm_neon } */
43027  
43028  #include "arm_neon.h"
43029  
43030 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c b/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c
43031 --- a/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c      2007-07-25 14:28:31.000000000 +0200
43032 +++ b/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c      2010-01-25 09:50:29.415686609 +0100
43033 @@ -3,7 +3,8 @@
43034  
43035  /* { dg-do assemble } */
43036  /* { dg-require-effective-target arm_neon_ok } */
43037 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43038 +/* { dg-options "-save-temps -O0" } */
43039 +/* { dg-add-options arm_neon } */
43040  
43041  #include "arm_neon.h"
43042  
43043 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c
43044 --- a/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c     2007-07-25 14:28:31.000000000 +0200
43045 +++ b/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c     2010-01-25 09:50:29.415686609 +0100
43046 @@ -3,7 +3,8 @@
43047  
43048  /* { dg-do assemble } */
43049  /* { dg-require-effective-target arm_neon_ok } */
43050 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43051 +/* { dg-options "-save-temps -O0" } */
43052 +/* { dg-add-options arm_neon } */
43053  
43054  #include "arm_neon.h"
43055  
43056 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovns16.c b/gcc/testsuite/gcc.target/arm/neon/vmovns16.c
43057 --- a/gcc/testsuite/gcc.target/arm/neon/vmovns16.c      2007-07-25 14:28:31.000000000 +0200
43058 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovns16.c      2010-01-25 09:50:29.415686609 +0100
43059 @@ -3,7 +3,8 @@
43060  
43061  /* { dg-do assemble } */
43062  /* { dg-require-effective-target arm_neon_ok } */
43063 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43064 +/* { dg-options "-save-temps -O0" } */
43065 +/* { dg-add-options arm_neon } */
43066  
43067  #include "arm_neon.h"
43068  
43069 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c
43070 --- a/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c     2007-07-25 14:28:31.000000000 +0200
43071 +++ b/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c     2010-01-25 09:50:29.415686609 +0100
43072 @@ -3,7 +3,8 @@
43073  
43074  /* { dg-do assemble } */
43075  /* { dg-require-effective-target arm_neon_ok } */
43076 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43077 +/* { dg-options "-save-temps -O0" } */
43078 +/* { dg-add-options arm_neon } */
43079  
43080  #include "arm_neon.h"
43081  
43082 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovns32.c b/gcc/testsuite/gcc.target/arm/neon/vmovns32.c
43083 --- a/gcc/testsuite/gcc.target/arm/neon/vmovns32.c      2007-07-25 14:28:31.000000000 +0200
43084 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovns32.c      2010-01-25 09:50:29.415686609 +0100
43085 @@ -3,7 +3,8 @@
43086  
43087  /* { dg-do assemble } */
43088  /* { dg-require-effective-target arm_neon_ok } */
43089 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43090 +/* { dg-options "-save-temps -O0" } */
43091 +/* { dg-add-options arm_neon } */
43092  
43093  #include "arm_neon.h"
43094  
43095 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c
43096 --- a/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c     2007-07-25 14:28:31.000000000 +0200
43097 +++ b/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c     2010-01-25 09:50:29.415686609 +0100
43098 @@ -3,7 +3,8 @@
43099  
43100  /* { dg-do assemble } */
43101  /* { dg-require-effective-target arm_neon_ok } */
43102 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43103 +/* { dg-options "-save-temps -O0" } */
43104 +/* { dg-add-options arm_neon } */
43105  
43106  #include "arm_neon.h"
43107  
43108 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovns64.c b/gcc/testsuite/gcc.target/arm/neon/vmovns64.c
43109 --- a/gcc/testsuite/gcc.target/arm/neon/vmovns64.c      2007-07-25 14:28:31.000000000 +0200
43110 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovns64.c      2010-01-25 09:50:29.415686609 +0100
43111 @@ -3,7 +3,8 @@
43112  
43113  /* { dg-do assemble } */
43114  /* { dg-require-effective-target arm_neon_ok } */
43115 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43116 +/* { dg-options "-save-temps -O0" } */
43117 +/* { dg-add-options arm_neon } */
43118  
43119  #include "arm_neon.h"
43120  
43121 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c
43122 --- a/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c      2007-07-25 14:28:31.000000000 +0200
43123 +++ b/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c      2010-01-25 09:50:29.415686609 +0100
43124 @@ -3,7 +3,8 @@
43125  
43126  /* { dg-do assemble } */
43127  /* { dg-require-effective-target arm_neon_ok } */
43128 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43129 +/* { dg-options "-save-temps -O0" } */
43130 +/* { dg-add-options arm_neon } */
43131  
43132  #include "arm_neon.h"
43133  
43134 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c
43135 --- a/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c     2007-07-25 14:28:31.000000000 +0200
43136 +++ b/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c     2010-01-25 09:50:29.415686609 +0100
43137 @@ -3,7 +3,8 @@
43138  
43139  /* { dg-do assemble } */
43140  /* { dg-require-effective-target arm_neon_ok } */
43141 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43142 +/* { dg-options "-save-temps -O0" } */
43143 +/* { dg-add-options arm_neon } */
43144  
43145  #include "arm_neon.h"
43146  
43147 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c b/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c
43148 --- a/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c      2007-07-25 14:28:31.000000000 +0200
43149 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c      2010-01-25 09:50:29.415686609 +0100
43150 @@ -3,7 +3,8 @@
43151  
43152  /* { dg-do assemble } */
43153  /* { dg-require-effective-target arm_neon_ok } */
43154 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43155 +/* { dg-options "-save-temps -O0" } */
43156 +/* { dg-add-options arm_neon } */
43157  
43158  #include "arm_neon.h"
43159  
43160 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c
43161 --- a/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c     2007-07-25 14:28:31.000000000 +0200
43162 +++ b/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c     2010-01-25 09:50:29.415686609 +0100
43163 @@ -3,7 +3,8 @@
43164  
43165  /* { dg-do assemble } */
43166  /* { dg-require-effective-target arm_neon_ok } */
43167 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43168 +/* { dg-options "-save-temps -O0" } */
43169 +/* { dg-add-options arm_neon } */
43170  
43171  #include "arm_neon.h"
43172  
43173 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c b/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c
43174 --- a/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c      2007-07-25 14:28:31.000000000 +0200
43175 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c      2010-01-25 09:50:29.415686609 +0100
43176 @@ -3,7 +3,8 @@
43177  
43178  /* { dg-do assemble } */
43179  /* { dg-require-effective-target arm_neon_ok } */
43180 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43181 +/* { dg-options "-save-temps -O0" } */
43182 +/* { dg-add-options arm_neon } */
43183  
43184  #include "arm_neon.h"
43185  
43186 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c
43187 --- a/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c     2007-07-25 14:28:31.000000000 +0200
43188 +++ b/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c     2010-01-25 09:50:29.415686609 +0100
43189 @@ -3,7 +3,8 @@
43190  
43191  /* { dg-do assemble } */
43192  /* { dg-require-effective-target arm_neon_ok } */
43193 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43194 +/* { dg-options "-save-temps -O0" } */
43195 +/* { dg-add-options arm_neon } */
43196  
43197  #include "arm_neon.h"
43198  
43199 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c b/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c
43200 --- a/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c      2007-07-25 14:28:31.000000000 +0200
43201 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c      2010-01-25 09:50:29.415686609 +0100
43202 @@ -3,7 +3,8 @@
43203  
43204  /* { dg-do assemble } */
43205  /* { dg-require-effective-target arm_neon_ok } */
43206 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43207 +/* { dg-options "-save-temps -O0" } */
43208 +/* { dg-add-options arm_neon } */
43209  
43210  #include "arm_neon.h"
43211  
43212 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c
43213 --- a/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c      2007-07-25 14:28:31.000000000 +0200
43214 +++ b/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c      2010-01-25 09:50:29.415686609 +0100
43215 @@ -3,7 +3,8 @@
43216  
43217  /* { dg-do assemble } */
43218  /* { dg-require-effective-target arm_neon_ok } */
43219 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43220 +/* { dg-options "-save-temps -O0" } */
43221 +/* { dg-add-options arm_neon } */
43222  
43223  #include "arm_neon.h"
43224  
43225 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c
43226 --- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c    2007-07-25 14:28:31.000000000 +0200
43227 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c    2010-01-25 09:50:29.415686609 +0100
43228 @@ -3,7 +3,8 @@
43229  
43230  /* { dg-do assemble } */
43231  /* { dg-require-effective-target arm_neon_ok } */
43232 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43233 +/* { dg-options "-save-temps -O0" } */
43234 +/* { dg-add-options arm_neon } */
43235  
43236  #include "arm_neon.h"
43237  
43238 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c
43239 --- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c    2007-07-25 14:28:31.000000000 +0200
43240 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c    2010-01-25 09:50:29.415686609 +0100
43241 @@ -3,7 +3,8 @@
43242  
43243  /* { dg-do assemble } */
43244  /* { dg-require-effective-target arm_neon_ok } */
43245 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43246 +/* { dg-options "-save-temps -O0" } */
43247 +/* { dg-add-options arm_neon } */
43248  
43249  #include "arm_neon.h"
43250  
43251 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c
43252 --- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c     2007-07-25 14:28:31.000000000 +0200
43253 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c     2010-01-25 09:50:29.415686609 +0100
43254 @@ -3,7 +3,8 @@
43255  
43256  /* { dg-do assemble } */
43257  /* { dg-require-effective-target arm_neon_ok } */
43258 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43259 +/* { dg-options "-save-temps -O0" } */
43260 +/* { dg-add-options arm_neon } */
43261  
43262  #include "arm_neon.h"
43263  
43264 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c
43265 --- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c    2007-07-25 14:28:31.000000000 +0200
43266 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c    2010-01-25 09:50:29.415686609 +0100
43267 @@ -3,7 +3,8 @@
43268  
43269  /* { dg-do assemble } */
43270  /* { dg-require-effective-target arm_neon_ok } */
43271 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43272 +/* { dg-options "-save-temps -O0" } */
43273 +/* { dg-add-options arm_neon } */
43274  
43275  #include "arm_neon.h"
43276  
43277 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c
43278 --- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c    2007-07-25 14:28:31.000000000 +0200
43279 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c    2010-01-25 09:50:29.415686609 +0100
43280 @@ -3,7 +3,8 @@
43281  
43282  /* { dg-do assemble } */
43283  /* { dg-require-effective-target arm_neon_ok } */
43284 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43285 +/* { dg-options "-save-temps -O0" } */
43286 +/* { dg-add-options arm_neon } */
43287  
43288  #include "arm_neon.h"
43289  
43290 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c
43291 --- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c    2007-07-25 14:28:31.000000000 +0200
43292 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c    2010-01-25 09:50:29.415686609 +0100
43293 @@ -3,7 +3,8 @@
43294  
43295  /* { dg-do assemble } */
43296  /* { dg-require-effective-target arm_neon_ok } */
43297 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43298 +/* { dg-options "-save-temps -O0" } */
43299 +/* { dg-add-options arm_neon } */
43300  
43301  #include "arm_neon.h"
43302  
43303 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c
43304 --- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c     2007-07-25 14:28:31.000000000 +0200
43305 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c     2010-01-25 09:50:29.415686609 +0100
43306 @@ -3,7 +3,8 @@
43307  
43308  /* { dg-do assemble } */
43309  /* { dg-require-effective-target arm_neon_ok } */
43310 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43311 +/* { dg-options "-save-temps -O0" } */
43312 +/* { dg-add-options arm_neon } */
43313  
43314  #include "arm_neon.h"
43315  
43316 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c
43317 --- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c    2007-07-25 14:28:31.000000000 +0200
43318 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c    2010-01-25 09:50:29.415686609 +0100
43319 @@ -3,7 +3,8 @@
43320  
43321  /* { dg-do assemble } */
43322  /* { dg-require-effective-target arm_neon_ok } */
43323 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43324 +/* { dg-options "-save-temps -O0" } */
43325 +/* { dg-add-options arm_neon } */
43326  
43327  #include "arm_neon.h"
43328  
43329 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c
43330 --- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c    2007-07-25 14:28:31.000000000 +0200
43331 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c    2010-01-25 09:50:29.415686609 +0100
43332 @@ -3,7 +3,8 @@
43333  
43334  /* { dg-do assemble } */
43335  /* { dg-require-effective-target arm_neon_ok } */
43336 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43337 +/* { dg-options "-save-temps -O0" } */
43338 +/* { dg-add-options arm_neon } */
43339  
43340  #include "arm_neon.h"
43341  
43342 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c
43343 --- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c    2007-07-25 14:28:31.000000000 +0200
43344 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c    2010-01-25 09:50:29.415686609 +0100
43345 @@ -3,7 +3,8 @@
43346  
43347  /* { dg-do assemble } */
43348  /* { dg-require-effective-target arm_neon_ok } */
43349 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43350 +/* { dg-options "-save-temps -O0" } */
43351 +/* { dg-add-options arm_neon } */
43352  
43353  #include "arm_neon.h"
43354  
43355 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c
43356 --- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c     2007-07-25 14:28:31.000000000 +0200
43357 +++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c     2010-01-25 09:50:29.415686609 +0100
43358 @@ -3,7 +3,8 @@
43359  
43360  /* { dg-do assemble } */
43361  /* { dg-require-effective-target arm_neon_ok } */
43362 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43363 +/* { dg-options "-save-temps -O0" } */
43364 +/* { dg-add-options arm_neon } */
43365  
43366  #include "arm_neon.h"
43367  
43368 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulf32.c b/gcc/testsuite/gcc.target/arm/neon/vmulf32.c
43369 --- a/gcc/testsuite/gcc.target/arm/neon/vmulf32.c       2007-07-25 14:28:31.000000000 +0200
43370 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulf32.c       2010-01-25 09:50:29.415686609 +0100
43371 @@ -3,7 +3,8 @@
43372  
43373  /* { dg-do assemble } */
43374  /* { dg-require-effective-target arm_neon_ok } */
43375 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43376 +/* { dg-options "-save-temps -O0" } */
43377 +/* { dg-add-options arm_neon } */
43378  
43379  #include "arm_neon.h"
43380  
43381 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c
43382 --- a/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c  2007-07-25 14:28:31.000000000 +0200
43383 +++ b/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c  2010-01-25 09:50:29.415686609 +0100
43384 @@ -3,7 +3,8 @@
43385  
43386  /* { dg-do assemble } */
43387  /* { dg-require-effective-target arm_neon_ok } */
43388 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43389 +/* { dg-options "-save-temps -O0" } */
43390 +/* { dg-add-options arm_neon } */
43391  
43392  #include "arm_neon.h"
43393  
43394 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c
43395 --- a/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c  2007-07-25 14:28:31.000000000 +0200
43396 +++ b/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c  2010-01-25 09:50:29.415686609 +0100
43397 @@ -3,7 +3,8 @@
43398  
43399  /* { dg-do assemble } */
43400  /* { dg-require-effective-target arm_neon_ok } */
43401 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43402 +/* { dg-options "-save-temps -O0" } */
43403 +/* { dg-add-options arm_neon } */
43404  
43405  #include "arm_neon.h"
43406  
43407 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c
43408 --- a/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c  2007-07-25 14:28:31.000000000 +0200
43409 +++ b/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c  2010-01-25 09:50:29.415686609 +0100
43410 @@ -3,7 +3,8 @@
43411  
43412  /* { dg-do assemble } */
43413  /* { dg-require-effective-target arm_neon_ok } */
43414 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43415 +/* { dg-options "-save-temps -O0" } */
43416 +/* { dg-add-options arm_neon } */
43417  
43418  #include "arm_neon.h"
43419  
43420 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c
43421 --- a/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c  2007-07-25 14:28:31.000000000 +0200
43422 +++ b/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c  2010-01-25 09:50:29.415686609 +0100
43423 @@ -3,7 +3,8 @@
43424  
43425  /* { dg-do assemble } */
43426  /* { dg-require-effective-target arm_neon_ok } */
43427 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43428 +/* { dg-options "-save-temps -O0" } */
43429 +/* { dg-add-options arm_neon } */
43430  
43431  #include "arm_neon.h"
43432  
43433 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c
43434 --- a/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c  2007-07-25 14:28:31.000000000 +0200
43435 +++ b/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c  2010-01-25 09:50:29.415686609 +0100
43436 @@ -3,7 +3,8 @@
43437  
43438  /* { dg-do assemble } */
43439  /* { dg-require-effective-target arm_neon_ok } */
43440 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43441 +/* { dg-options "-save-temps -O0" } */
43442 +/* { dg-add-options arm_neon } */
43443  
43444  #include "arm_neon.h"
43445  
43446 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c
43447 --- a/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c 2007-07-25 14:28:31.000000000 +0200
43448 +++ b/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c 2010-01-25 09:50:29.415686609 +0100
43449 @@ -3,7 +3,8 @@
43450  
43451  /* { dg-do assemble } */
43452  /* { dg-require-effective-target arm_neon_ok } */
43453 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43454 +/* { dg-options "-save-temps -O0" } */
43455 +/* { dg-add-options arm_neon } */
43456  
43457  #include "arm_neon.h"
43458  
43459 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c
43460 --- a/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c 2007-07-25 14:28:31.000000000 +0200
43461 +++ b/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c 2010-01-25 09:50:29.425686763 +0100
43462 @@ -3,7 +3,8 @@
43463  
43464  /* { dg-do assemble } */
43465  /* { dg-require-effective-target arm_neon_ok } */
43466 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43467 +/* { dg-options "-save-temps -O0" } */
43468 +/* { dg-add-options arm_neon } */
43469  
43470  #include "arm_neon.h"
43471  
43472 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c
43473 --- a/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c 2007-07-25 14:28:31.000000000 +0200
43474 +++ b/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c 2010-01-25 09:50:29.425686763 +0100
43475 @@ -3,7 +3,8 @@
43476  
43477  /* { dg-do assemble } */
43478  /* { dg-require-effective-target arm_neon_ok } */
43479 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43480 +/* { dg-options "-save-temps -O0" } */
43481 +/* { dg-add-options arm_neon } */
43482  
43483  #include "arm_neon.h"
43484  
43485 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c
43486 --- a/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c 2007-07-25 14:28:31.000000000 +0200
43487 +++ b/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c 2010-01-25 09:50:29.425686763 +0100
43488 @@ -3,7 +3,8 @@
43489  
43490  /* { dg-do assemble } */
43491  /* { dg-require-effective-target arm_neon_ok } */
43492 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43493 +/* { dg-options "-save-temps -O0" } */
43494 +/* { dg-add-options arm_neon } */
43495  
43496  #include "arm_neon.h"
43497  
43498 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c
43499 --- a/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c    2007-07-25 14:28:31.000000000 +0200
43500 +++ b/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c    2010-01-25 09:50:29.425686763 +0100
43501 @@ -3,7 +3,8 @@
43502  
43503  /* { dg-do assemble } */
43504  /* { dg-require-effective-target arm_neon_ok } */
43505 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43506 +/* { dg-options "-save-temps -O0" } */
43507 +/* { dg-add-options arm_neon } */
43508  
43509  #include "arm_neon.h"
43510  
43511 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c
43512 --- a/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c    2007-07-25 14:28:31.000000000 +0200
43513 +++ b/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c    2010-01-25 09:50:29.425686763 +0100
43514 @@ -3,7 +3,8 @@
43515  
43516  /* { dg-do assemble } */
43517  /* { dg-require-effective-target arm_neon_ok } */
43518 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43519 +/* { dg-options "-save-temps -O0" } */
43520 +/* { dg-add-options arm_neon } */
43521  
43522  #include "arm_neon.h"
43523  
43524 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c
43525 --- a/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c    2007-07-25 14:28:31.000000000 +0200
43526 +++ b/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c    2010-01-25 09:50:29.425686763 +0100
43527 @@ -3,7 +3,8 @@
43528  
43529  /* { dg-do assemble } */
43530  /* { dg-require-effective-target arm_neon_ok } */
43531 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43532 +/* { dg-options "-save-temps -O0" } */
43533 +/* { dg-add-options arm_neon } */
43534  
43535  #include "arm_neon.h"
43536  
43537 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c
43538 --- a/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c    2007-07-25 14:28:31.000000000 +0200
43539 +++ b/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c    2010-01-25 09:50:29.425686763 +0100
43540 @@ -3,7 +3,8 @@
43541  
43542  /* { dg-do assemble } */
43543  /* { dg-require-effective-target arm_neon_ok } */
43544 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43545 +/* { dg-options "-save-temps -O0" } */
43546 +/* { dg-add-options arm_neon } */
43547  
43548  #include "arm_neon.h"
43549  
43550 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmullp8.c b/gcc/testsuite/gcc.target/arm/neon/vmullp8.c
43551 --- a/gcc/testsuite/gcc.target/arm/neon/vmullp8.c       2007-07-25 14:28:31.000000000 +0200
43552 +++ b/gcc/testsuite/gcc.target/arm/neon/vmullp8.c       2010-01-25 09:50:29.425686763 +0100
43553 @@ -3,7 +3,8 @@
43554  
43555  /* { dg-do assemble } */
43556  /* { dg-require-effective-target arm_neon_ok } */
43557 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43558 +/* { dg-options "-save-temps -O0" } */
43559 +/* { dg-add-options arm_neon } */
43560  
43561  #include "arm_neon.h"
43562  
43563 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulls16.c b/gcc/testsuite/gcc.target/arm/neon/vmulls16.c
43564 --- a/gcc/testsuite/gcc.target/arm/neon/vmulls16.c      2007-07-25 14:28:31.000000000 +0200
43565 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulls16.c      2010-01-25 09:50:29.425686763 +0100
43566 @@ -3,7 +3,8 @@
43567  
43568  /* { dg-do assemble } */
43569  /* { dg-require-effective-target arm_neon_ok } */
43570 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43571 +/* { dg-options "-save-temps -O0" } */
43572 +/* { dg-add-options arm_neon } */
43573  
43574  #include "arm_neon.h"
43575  
43576 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulls32.c b/gcc/testsuite/gcc.target/arm/neon/vmulls32.c
43577 --- a/gcc/testsuite/gcc.target/arm/neon/vmulls32.c      2007-07-25 14:28:31.000000000 +0200
43578 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulls32.c      2010-01-25 09:50:29.425686763 +0100
43579 @@ -3,7 +3,8 @@
43580  
43581  /* { dg-do assemble } */
43582  /* { dg-require-effective-target arm_neon_ok } */
43583 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43584 +/* { dg-options "-save-temps -O0" } */
43585 +/* { dg-add-options arm_neon } */
43586  
43587  #include "arm_neon.h"
43588  
43589 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulls8.c b/gcc/testsuite/gcc.target/arm/neon/vmulls8.c
43590 --- a/gcc/testsuite/gcc.target/arm/neon/vmulls8.c       2007-07-25 14:28:31.000000000 +0200
43591 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulls8.c       2010-01-25 09:50:29.425686763 +0100
43592 @@ -3,7 +3,8 @@
43593  
43594  /* { dg-do assemble } */
43595  /* { dg-require-effective-target arm_neon_ok } */
43596 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43597 +/* { dg-options "-save-temps -O0" } */
43598 +/* { dg-add-options arm_neon } */
43599  
43600  #include "arm_neon.h"
43601  
43602 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmullu16.c b/gcc/testsuite/gcc.target/arm/neon/vmullu16.c
43603 --- a/gcc/testsuite/gcc.target/arm/neon/vmullu16.c      2007-07-25 14:28:31.000000000 +0200
43604 +++ b/gcc/testsuite/gcc.target/arm/neon/vmullu16.c      2010-01-25 09:50:29.425686763 +0100
43605 @@ -3,7 +3,8 @@
43606  
43607  /* { dg-do assemble } */
43608  /* { dg-require-effective-target arm_neon_ok } */
43609 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43610 +/* { dg-options "-save-temps -O0" } */
43611 +/* { dg-add-options arm_neon } */
43612  
43613  #include "arm_neon.h"
43614  
43615 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmullu32.c b/gcc/testsuite/gcc.target/arm/neon/vmullu32.c
43616 --- a/gcc/testsuite/gcc.target/arm/neon/vmullu32.c      2007-07-25 14:28:31.000000000 +0200
43617 +++ b/gcc/testsuite/gcc.target/arm/neon/vmullu32.c      2010-01-25 09:50:29.425686763 +0100
43618 @@ -3,7 +3,8 @@
43619  
43620  /* { dg-do assemble } */
43621  /* { dg-require-effective-target arm_neon_ok } */
43622 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43623 +/* { dg-options "-save-temps -O0" } */
43624 +/* { dg-add-options arm_neon } */
43625  
43626  #include "arm_neon.h"
43627  
43628 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmullu8.c b/gcc/testsuite/gcc.target/arm/neon/vmullu8.c
43629 --- a/gcc/testsuite/gcc.target/arm/neon/vmullu8.c       2007-07-25 14:28:31.000000000 +0200
43630 +++ b/gcc/testsuite/gcc.target/arm/neon/vmullu8.c       2010-01-25 09:50:29.425686763 +0100
43631 @@ -3,7 +3,8 @@
43632  
43633  /* { dg-do assemble } */
43634  /* { dg-require-effective-target arm_neon_ok } */
43635 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43636 +/* { dg-options "-save-temps -O0" } */
43637 +/* { dg-add-options arm_neon } */
43638  
43639  #include "arm_neon.h"
43640  
43641 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c
43642 --- a/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c     2007-07-25 14:28:31.000000000 +0200
43643 +++ b/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c     2010-01-25 09:50:29.425686763 +0100
43644 @@ -3,7 +3,8 @@
43645  
43646  /* { dg-do assemble } */
43647  /* { dg-require-effective-target arm_neon_ok } */
43648 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43649 +/* { dg-options "-save-temps -O0" } */
43650 +/* { dg-add-options arm_neon } */
43651  
43652  #include "arm_neon.h"
43653  
43654 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c
43655 --- a/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c     2007-07-25 14:28:31.000000000 +0200
43656 +++ b/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c     2010-01-25 09:50:29.425686763 +0100
43657 @@ -3,7 +3,8 @@
43658  
43659  /* { dg-do assemble } */
43660  /* { dg-require-effective-target arm_neon_ok } */
43661 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43662 +/* { dg-options "-save-temps -O0" } */
43663 +/* { dg-add-options arm_neon } */
43664  
43665  #include "arm_neon.h"
43666  
43667 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c
43668 --- a/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c     2007-07-25 14:28:31.000000000 +0200
43669 +++ b/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c     2010-01-25 09:50:29.425686763 +0100
43670 @@ -3,7 +3,8 @@
43671  
43672  /* { dg-do assemble } */
43673  /* { dg-require-effective-target arm_neon_ok } */
43674 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43675 +/* { dg-options "-save-temps -O0" } */
43676 +/* { dg-add-options arm_neon } */
43677  
43678  #include "arm_neon.h"
43679  
43680 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c
43681 --- a/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c     2007-07-25 14:28:31.000000000 +0200
43682 +++ b/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c     2010-01-25 09:50:29.425686763 +0100
43683 @@ -3,7 +3,8 @@
43684  
43685  /* { dg-do assemble } */
43686  /* { dg-require-effective-target arm_neon_ok } */
43687 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43688 +/* { dg-options "-save-temps -O0" } */
43689 +/* { dg-add-options arm_neon } */
43690  
43691  #include "arm_neon.h"
43692  
43693 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c
43694 --- a/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c     2007-07-25 14:28:31.000000000 +0200
43695 +++ b/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c     2010-01-25 09:50:29.425686763 +0100
43696 @@ -3,7 +3,8 @@
43697  
43698  /* { dg-do assemble } */
43699  /* { dg-require-effective-target arm_neon_ok } */
43700 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43701 +/* { dg-options "-save-temps -O0" } */
43702 +/* { dg-add-options arm_neon } */
43703  
43704  #include "arm_neon.h"
43705  
43706 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulp8.c b/gcc/testsuite/gcc.target/arm/neon/vmulp8.c
43707 --- a/gcc/testsuite/gcc.target/arm/neon/vmulp8.c        2007-07-25 14:28:31.000000000 +0200
43708 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulp8.c        2010-01-25 09:50:29.425686763 +0100
43709 @@ -3,7 +3,8 @@
43710  
43711  /* { dg-do assemble } */
43712  /* { dg-require-effective-target arm_neon_ok } */
43713 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43714 +/* { dg-options "-save-temps -O0" } */
43715 +/* { dg-add-options arm_neon } */
43716  
43717  #include "arm_neon.h"
43718  
43719 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c
43720 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c      2007-07-25 14:28:31.000000000 +0200
43721 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c      2010-01-25 09:50:29.425686763 +0100
43722 @@ -3,7 +3,8 @@
43723  
43724  /* { dg-do assemble } */
43725  /* { dg-require-effective-target arm_neon_ok } */
43726 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43727 +/* { dg-options "-save-temps -O0" } */
43728 +/* { dg-add-options arm_neon } */
43729  
43730  #include "arm_neon.h"
43731  
43732 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c
43733 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c 2007-07-25 14:28:31.000000000 +0200
43734 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c 2010-01-25 09:50:29.425686763 +0100
43735 @@ -3,7 +3,8 @@
43736  
43737  /* { dg-do assemble } */
43738  /* { dg-require-effective-target arm_neon_ok } */
43739 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43740 +/* { dg-options "-save-temps -O0" } */
43741 +/* { dg-add-options arm_neon } */
43742  
43743  #include "arm_neon.h"
43744  
43745 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c
43746 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c 2007-07-25 14:28:31.000000000 +0200
43747 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c 2010-01-25 09:50:29.425686763 +0100
43748 @@ -3,7 +3,8 @@
43749  
43750  /* { dg-do assemble } */
43751  /* { dg-require-effective-target arm_neon_ok } */
43752 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43753 +/* { dg-options "-save-temps -O0" } */
43754 +/* { dg-add-options arm_neon } */
43755  
43756  #include "arm_neon.h"
43757  
43758 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c
43759 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c 2007-07-25 14:28:31.000000000 +0200
43760 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c 2010-01-25 09:50:29.425686763 +0100
43761 @@ -3,7 +3,8 @@
43762  
43763  /* { dg-do assemble } */
43764  /* { dg-require-effective-target arm_neon_ok } */
43765 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43766 +/* { dg-options "-save-temps -O0" } */
43767 +/* { dg-add-options arm_neon } */
43768  
43769  #include "arm_neon.h"
43770  
43771 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c
43772 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c 2007-07-25 14:28:31.000000000 +0200
43773 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c 2010-01-25 09:50:29.425686763 +0100
43774 @@ -3,7 +3,8 @@
43775  
43776  /* { dg-do assemble } */
43777  /* { dg-require-effective-target arm_neon_ok } */
43778 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43779 +/* { dg-options "-save-temps -O0" } */
43780 +/* { dg-add-options arm_neon } */
43781  
43782  #include "arm_neon.h"
43783  
43784 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c
43785 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c 2007-07-25 14:28:31.000000000 +0200
43786 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c 2010-01-25 09:50:29.425686763 +0100
43787 @@ -3,7 +3,8 @@
43788  
43789  /* { dg-do assemble } */
43790  /* { dg-require-effective-target arm_neon_ok } */
43791 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43792 +/* { dg-options "-save-temps -O0" } */
43793 +/* { dg-add-options arm_neon } */
43794  
43795  #include "arm_neon.h"
43796  
43797 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c
43798 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c    2007-07-25 14:28:31.000000000 +0200
43799 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c    2010-01-25 09:50:29.425686763 +0100
43800 @@ -3,7 +3,8 @@
43801  
43802  /* { dg-do assemble } */
43803  /* { dg-require-effective-target arm_neon_ok } */
43804 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43805 +/* { dg-options "-save-temps -O0" } */
43806 +/* { dg-add-options arm_neon } */
43807  
43808  #include "arm_neon.h"
43809  
43810 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c
43811 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c    2007-07-25 14:28:31.000000000 +0200
43812 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c    2010-01-25 09:50:29.425686763 +0100
43813 @@ -3,7 +3,8 @@
43814  
43815  /* { dg-do assemble } */
43816  /* { dg-require-effective-target arm_neon_ok } */
43817 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43818 +/* { dg-options "-save-temps -O0" } */
43819 +/* { dg-add-options arm_neon } */
43820  
43821  #include "arm_neon.h"
43822  
43823 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c
43824 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c    2007-07-25 14:28:31.000000000 +0200
43825 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c    2010-01-25 09:50:29.425686763 +0100
43826 @@ -3,7 +3,8 @@
43827  
43828  /* { dg-do assemble } */
43829  /* { dg-require-effective-target arm_neon_ok } */
43830 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43831 +/* { dg-options "-save-temps -O0" } */
43832 +/* { dg-add-options arm_neon } */
43833  
43834  #include "arm_neon.h"
43835  
43836 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c
43837 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c    2007-07-25 14:28:31.000000000 +0200
43838 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c    2010-01-25 09:50:29.425686763 +0100
43839 @@ -3,7 +3,8 @@
43840  
43841  /* { dg-do assemble } */
43842  /* { dg-require-effective-target arm_neon_ok } */
43843 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43844 +/* { dg-options "-save-temps -O0" } */
43845 +/* { dg-add-options arm_neon } */
43846  
43847  #include "arm_neon.h"
43848  
43849 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c
43850 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c    2007-07-25 14:28:31.000000000 +0200
43851 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c    2010-01-25 09:50:29.425686763 +0100
43852 @@ -3,7 +3,8 @@
43853  
43854  /* { dg-do assemble } */
43855  /* { dg-require-effective-target arm_neon_ok } */
43856 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43857 +/* { dg-options "-save-temps -O0" } */
43858 +/* { dg-add-options arm_neon } */
43859  
43860  #include "arm_neon.h"
43861  
43862 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c b/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c
43863 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c       2007-07-25 14:28:31.000000000 +0200
43864 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c       2010-01-25 09:50:29.425686763 +0100
43865 @@ -3,7 +3,8 @@
43866  
43867  /* { dg-do assemble } */
43868  /* { dg-require-effective-target arm_neon_ok } */
43869 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43870 +/* { dg-options "-save-temps -O0" } */
43871 +/* { dg-add-options arm_neon } */
43872  
43873  #include "arm_neon.h"
43874  
43875 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c b/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c
43876 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c      2007-07-25 14:28:31.000000000 +0200
43877 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c      2010-01-25 09:50:29.425686763 +0100
43878 @@ -3,7 +3,8 @@
43879  
43880  /* { dg-do assemble } */
43881  /* { dg-require-effective-target arm_neon_ok } */
43882 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43883 +/* { dg-options "-save-temps -O0" } */
43884 +/* { dg-add-options arm_neon } */
43885  
43886  #include "arm_neon.h"
43887  
43888 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c
43889 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c      2007-07-25 14:28:31.000000000 +0200
43890 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c      2010-01-25 09:50:29.425686763 +0100
43891 @@ -3,7 +3,8 @@
43892  
43893  /* { dg-do assemble } */
43894  /* { dg-require-effective-target arm_neon_ok } */
43895 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43896 +/* { dg-options "-save-temps -O0" } */
43897 +/* { dg-add-options arm_neon } */
43898  
43899  #include "arm_neon.h"
43900  
43901 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c b/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c
43902 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c       2007-07-25 14:28:31.000000000 +0200
43903 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c       2010-01-25 09:50:29.425686763 +0100
43904 @@ -3,7 +3,8 @@
43905  
43906  /* { dg-do assemble } */
43907  /* { dg-require-effective-target arm_neon_ok } */
43908 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43909 +/* { dg-options "-save-temps -O0" } */
43910 +/* { dg-add-options arm_neon } */
43911  
43912  #include "arm_neon.h"
43913  
43914 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c b/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c
43915 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c      2007-07-25 14:28:31.000000000 +0200
43916 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c      2010-01-25 09:50:29.425686763 +0100
43917 @@ -3,7 +3,8 @@
43918  
43919  /* { dg-do assemble } */
43920  /* { dg-require-effective-target arm_neon_ok } */
43921 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43922 +/* { dg-options "-save-temps -O0" } */
43923 +/* { dg-add-options arm_neon } */
43924  
43925  #include "arm_neon.h"
43926  
43927 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c
43928 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c      2007-07-25 14:28:31.000000000 +0200
43929 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c      2010-01-25 09:50:29.425686763 +0100
43930 @@ -3,7 +3,8 @@
43931  
43932  /* { dg-do assemble } */
43933  /* { dg-require-effective-target arm_neon_ok } */
43934 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43935 +/* { dg-options "-save-temps -O0" } */
43936 +/* { dg-add-options arm_neon } */
43937  
43938  #include "arm_neon.h"
43939  
43940 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c b/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c
43941 --- a/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c       2007-07-25 14:28:31.000000000 +0200
43942 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c       2010-01-25 09:50:29.425686763 +0100
43943 @@ -3,7 +3,8 @@
43944  
43945  /* { dg-do assemble } */
43946  /* { dg-require-effective-target arm_neon_ok } */
43947 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43948 +/* { dg-options "-save-temps -O0" } */
43949 +/* { dg-add-options arm_neon } */
43950  
43951  #include "arm_neon.h"
43952  
43953 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmuls16.c b/gcc/testsuite/gcc.target/arm/neon/vmuls16.c
43954 --- a/gcc/testsuite/gcc.target/arm/neon/vmuls16.c       2007-07-25 14:28:31.000000000 +0200
43955 +++ b/gcc/testsuite/gcc.target/arm/neon/vmuls16.c       2010-01-25 09:50:29.425686763 +0100
43956 @@ -3,7 +3,8 @@
43957  
43958  /* { dg-do assemble } */
43959  /* { dg-require-effective-target arm_neon_ok } */
43960 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43961 +/* { dg-options "-save-temps -O0" } */
43962 +/* { dg-add-options arm_neon } */
43963  
43964  #include "arm_neon.h"
43965  
43966 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmuls32.c b/gcc/testsuite/gcc.target/arm/neon/vmuls32.c
43967 --- a/gcc/testsuite/gcc.target/arm/neon/vmuls32.c       2007-07-25 14:28:31.000000000 +0200
43968 +++ b/gcc/testsuite/gcc.target/arm/neon/vmuls32.c       2010-01-25 09:50:29.425686763 +0100
43969 @@ -3,7 +3,8 @@
43970  
43971  /* { dg-do assemble } */
43972  /* { dg-require-effective-target arm_neon_ok } */
43973 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43974 +/* { dg-options "-save-temps -O0" } */
43975 +/* { dg-add-options arm_neon } */
43976  
43977  #include "arm_neon.h"
43978  
43979 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmuls8.c b/gcc/testsuite/gcc.target/arm/neon/vmuls8.c
43980 --- a/gcc/testsuite/gcc.target/arm/neon/vmuls8.c        2007-07-25 14:28:31.000000000 +0200
43981 +++ b/gcc/testsuite/gcc.target/arm/neon/vmuls8.c        2010-01-25 09:50:29.425686763 +0100
43982 @@ -3,7 +3,8 @@
43983  
43984  /* { dg-do assemble } */
43985  /* { dg-require-effective-target arm_neon_ok } */
43986 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
43987 +/* { dg-options "-save-temps -O0" } */
43988 +/* { dg-add-options arm_neon } */
43989  
43990  #include "arm_neon.h"
43991  
43992 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulu16.c b/gcc/testsuite/gcc.target/arm/neon/vmulu16.c
43993 --- a/gcc/testsuite/gcc.target/arm/neon/vmulu16.c       2007-07-25 14:28:31.000000000 +0200
43994 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulu16.c       2010-01-25 09:50:29.425686763 +0100
43995 @@ -3,7 +3,8 @@
43996  
43997  /* { dg-do assemble } */
43998  /* { dg-require-effective-target arm_neon_ok } */
43999 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44000 +/* { dg-options "-save-temps -O0" } */
44001 +/* { dg-add-options arm_neon } */
44002  
44003  #include "arm_neon.h"
44004  
44005 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulu32.c b/gcc/testsuite/gcc.target/arm/neon/vmulu32.c
44006 --- a/gcc/testsuite/gcc.target/arm/neon/vmulu32.c       2007-07-25 14:28:31.000000000 +0200
44007 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulu32.c       2010-01-25 09:50:29.425686763 +0100
44008 @@ -3,7 +3,8 @@
44009  
44010  /* { dg-do assemble } */
44011  /* { dg-require-effective-target arm_neon_ok } */
44012 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44013 +/* { dg-options "-save-temps -O0" } */
44014 +/* { dg-add-options arm_neon } */
44015  
44016  #include "arm_neon.h"
44017  
44018 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulu8.c b/gcc/testsuite/gcc.target/arm/neon/vmulu8.c
44019 --- a/gcc/testsuite/gcc.target/arm/neon/vmulu8.c        2007-07-25 14:28:31.000000000 +0200
44020 +++ b/gcc/testsuite/gcc.target/arm/neon/vmulu8.c        2010-01-25 09:50:29.425686763 +0100
44021 @@ -3,7 +3,8 @@
44022  
44023  /* { dg-do assemble } */
44024  /* { dg-require-effective-target arm_neon_ok } */
44025 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44026 +/* { dg-options "-save-temps -O0" } */
44027 +/* { dg-add-options arm_neon } */
44028  
44029  #include "arm_neon.h"
44030  
44031 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c b/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c
44032 --- a/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c        2007-07-25 14:28:31.000000000 +0200
44033 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c        2010-01-25 09:50:29.425686763 +0100
44034 @@ -3,7 +3,8 @@
44035  
44036  /* { dg-do assemble } */
44037  /* { dg-require-effective-target arm_neon_ok } */
44038 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44039 +/* { dg-options "-save-temps -O0" } */
44040 +/* { dg-add-options arm_neon } */
44041  
44042  #include "arm_neon.h"
44043  
44044 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c
44045 --- a/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c       2007-07-25 14:28:31.000000000 +0200
44046 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c       2010-01-25 09:50:29.425686763 +0100
44047 @@ -3,7 +3,8 @@
44048  
44049  /* { dg-do assemble } */
44050  /* { dg-require-effective-target arm_neon_ok } */
44051 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44052 +/* { dg-options "-save-temps -O0" } */
44053 +/* { dg-add-options arm_neon } */
44054  
44055  #include "arm_neon.h"
44056  
44057 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c
44058 --- a/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c      2007-07-25 14:28:31.000000000 +0200
44059 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c      2010-01-25 09:50:29.425686763 +0100
44060 @@ -3,7 +3,8 @@
44061  
44062  /* { dg-do assemble } */
44063  /* { dg-require-effective-target arm_neon_ok } */
44064 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44065 +/* { dg-options "-save-temps -O0" } */
44066 +/* { dg-add-options arm_neon } */
44067  
44068  #include "arm_neon.h"
44069  
44070 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c
44071 --- a/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c      2007-07-25 14:28:31.000000000 +0200
44072 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c      2010-01-25 09:50:29.425686763 +0100
44073 @@ -3,7 +3,8 @@
44074  
44075  /* { dg-do assemble } */
44076  /* { dg-require-effective-target arm_neon_ok } */
44077 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44078 +/* { dg-options "-save-temps -O0" } */
44079 +/* { dg-add-options arm_neon } */
44080  
44081  #include "arm_neon.h"
44082  
44083 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c
44084 --- a/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c       2007-07-25 14:28:31.000000000 +0200
44085 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c       2010-01-25 09:50:29.425686763 +0100
44086 @@ -3,7 +3,8 @@
44087  
44088  /* { dg-do assemble } */
44089  /* { dg-require-effective-target arm_neon_ok } */
44090 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44091 +/* { dg-options "-save-temps -O0" } */
44092 +/* { dg-add-options arm_neon } */
44093  
44094  #include "arm_neon.h"
44095  
44096 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c
44097 --- a/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c      2007-07-25 14:28:31.000000000 +0200
44098 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c      2010-01-25 09:50:29.425686763 +0100
44099 @@ -3,7 +3,8 @@
44100  
44101  /* { dg-do assemble } */
44102  /* { dg-require-effective-target arm_neon_ok } */
44103 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44104 +/* { dg-options "-save-temps -O0" } */
44105 +/* { dg-add-options arm_neon } */
44106  
44107  #include "arm_neon.h"
44108  
44109 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c
44110 --- a/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c      2007-07-25 14:28:31.000000000 +0200
44111 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c      2010-01-25 09:50:29.425686763 +0100
44112 @@ -3,7 +3,8 @@
44113  
44114  /* { dg-do assemble } */
44115  /* { dg-require-effective-target arm_neon_ok } */
44116 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44117 +/* { dg-options "-save-temps -O0" } */
44118 +/* { dg-add-options arm_neon } */
44119  
44120  #include "arm_neon.h"
44121  
44122 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c
44123 --- a/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c       2007-07-25 14:28:31.000000000 +0200
44124 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c       2010-01-25 09:50:29.425686763 +0100
44125 @@ -3,7 +3,8 @@
44126  
44127  /* { dg-do assemble } */
44128  /* { dg-require-effective-target arm_neon_ok } */
44129 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44130 +/* { dg-options "-save-temps -O0" } */
44131 +/* { dg-add-options arm_neon } */
44132  
44133  #include "arm_neon.h"
44134  
44135 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvns16.c b/gcc/testsuite/gcc.target/arm/neon/vmvns16.c
44136 --- a/gcc/testsuite/gcc.target/arm/neon/vmvns16.c       2007-07-25 14:28:31.000000000 +0200
44137 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvns16.c       2010-01-25 09:50:29.425686763 +0100
44138 @@ -3,7 +3,8 @@
44139  
44140  /* { dg-do assemble } */
44141  /* { dg-require-effective-target arm_neon_ok } */
44142 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44143 +/* { dg-options "-save-temps -O0" } */
44144 +/* { dg-add-options arm_neon } */
44145  
44146  #include "arm_neon.h"
44147  
44148 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvns32.c b/gcc/testsuite/gcc.target/arm/neon/vmvns32.c
44149 --- a/gcc/testsuite/gcc.target/arm/neon/vmvns32.c       2007-07-25 14:28:31.000000000 +0200
44150 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvns32.c       2010-01-25 09:50:29.425686763 +0100
44151 @@ -3,7 +3,8 @@
44152  
44153  /* { dg-do assemble } */
44154  /* { dg-require-effective-target arm_neon_ok } */
44155 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44156 +/* { dg-options "-save-temps -O0" } */
44157 +/* { dg-add-options arm_neon } */
44158  
44159  #include "arm_neon.h"
44160  
44161 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvns8.c b/gcc/testsuite/gcc.target/arm/neon/vmvns8.c
44162 --- a/gcc/testsuite/gcc.target/arm/neon/vmvns8.c        2007-07-25 14:28:31.000000000 +0200
44163 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvns8.c        2010-01-25 09:50:29.425686763 +0100
44164 @@ -3,7 +3,8 @@
44165  
44166  /* { dg-do assemble } */
44167  /* { dg-require-effective-target arm_neon_ok } */
44168 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44169 +/* { dg-options "-save-temps -O0" } */
44170 +/* { dg-add-options arm_neon } */
44171  
44172  #include "arm_neon.h"
44173  
44174 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c b/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c
44175 --- a/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c       2007-07-25 14:28:31.000000000 +0200
44176 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c       2010-01-25 09:50:29.425686763 +0100
44177 @@ -3,7 +3,8 @@
44178  
44179  /* { dg-do assemble } */
44180  /* { dg-require-effective-target arm_neon_ok } */
44181 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44182 +/* { dg-options "-save-temps -O0" } */
44183 +/* { dg-add-options arm_neon } */
44184  
44185  #include "arm_neon.h"
44186  
44187 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c b/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c
44188 --- a/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c       2007-07-25 14:28:31.000000000 +0200
44189 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c       2010-01-25 09:50:29.425686763 +0100
44190 @@ -3,7 +3,8 @@
44191  
44192  /* { dg-do assemble } */
44193  /* { dg-require-effective-target arm_neon_ok } */
44194 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44195 +/* { dg-options "-save-temps -O0" } */
44196 +/* { dg-add-options arm_neon } */
44197  
44198  #include "arm_neon.h"
44199  
44200 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c b/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c
44201 --- a/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c        2007-07-25 14:28:31.000000000 +0200
44202 +++ b/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c        2010-01-25 09:50:29.425686763 +0100
44203 @@ -3,7 +3,8 @@
44204  
44205  /* { dg-do assemble } */
44206  /* { dg-require-effective-target arm_neon_ok } */
44207 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44208 +/* { dg-options "-save-temps -O0" } */
44209 +/* { dg-add-options arm_neon } */
44210  
44211  #include "arm_neon.h"
44212  
44213 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegf32.c b/gcc/testsuite/gcc.target/arm/neon/vnegf32.c
44214 --- a/gcc/testsuite/gcc.target/arm/neon/vnegf32.c       2007-07-25 14:28:31.000000000 +0200
44215 +++ b/gcc/testsuite/gcc.target/arm/neon/vnegf32.c       2010-01-25 09:50:29.425686763 +0100
44216 @@ -3,7 +3,8 @@
44217  
44218  /* { dg-do assemble } */
44219  /* { dg-require-effective-target arm_neon_ok } */
44220 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44221 +/* { dg-options "-save-temps -O0" } */
44222 +/* { dg-add-options arm_neon } */
44223  
44224  #include "arm_neon.h"
44225  
44226 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c b/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c
44227 --- a/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c      2007-07-25 14:28:31.000000000 +0200
44228 +++ b/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c      2010-01-25 09:50:29.425686763 +0100
44229 @@ -3,7 +3,8 @@
44230  
44231  /* { dg-do assemble } */
44232  /* { dg-require-effective-target arm_neon_ok } */
44233 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44234 +/* { dg-options "-save-temps -O0" } */
44235 +/* { dg-add-options arm_neon } */
44236  
44237  #include "arm_neon.h"
44238  
44239 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c b/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c
44240 --- a/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c      2007-07-25 14:28:31.000000000 +0200
44241 +++ b/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c      2010-01-25 09:50:29.425686763 +0100
44242 @@ -3,7 +3,8 @@
44243  
44244  /* { dg-do assemble } */
44245  /* { dg-require-effective-target arm_neon_ok } */
44246 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44247 +/* { dg-options "-save-temps -O0" } */
44248 +/* { dg-add-options arm_neon } */
44249  
44250  #include "arm_neon.h"
44251  
44252 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c b/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c
44253 --- a/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c      2007-07-25 14:28:31.000000000 +0200
44254 +++ b/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c      2010-01-25 09:50:29.425686763 +0100
44255 @@ -3,7 +3,8 @@
44256  
44257  /* { dg-do assemble } */
44258  /* { dg-require-effective-target arm_neon_ok } */
44259 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44260 +/* { dg-options "-save-temps -O0" } */
44261 +/* { dg-add-options arm_neon } */
44262  
44263  #include "arm_neon.h"
44264  
44265 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c b/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c
44266 --- a/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c       2007-07-25 14:28:31.000000000 +0200
44267 +++ b/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c       2010-01-25 09:50:29.425686763 +0100
44268 @@ -3,7 +3,8 @@
44269  
44270  /* { dg-do assemble } */
44271  /* { dg-require-effective-target arm_neon_ok } */
44272 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44273 +/* { dg-options "-save-temps -O0" } */
44274 +/* { dg-add-options arm_neon } */
44275  
44276  #include "arm_neon.h"
44277  
44278 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegs16.c b/gcc/testsuite/gcc.target/arm/neon/vnegs16.c
44279 --- a/gcc/testsuite/gcc.target/arm/neon/vnegs16.c       2007-07-25 14:28:31.000000000 +0200
44280 +++ b/gcc/testsuite/gcc.target/arm/neon/vnegs16.c       2010-01-25 09:50:29.425686763 +0100
44281 @@ -3,7 +3,8 @@
44282  
44283  /* { dg-do assemble } */
44284  /* { dg-require-effective-target arm_neon_ok } */
44285 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44286 +/* { dg-options "-save-temps -O0" } */
44287 +/* { dg-add-options arm_neon } */
44288  
44289  #include "arm_neon.h"
44290  
44291 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegs32.c b/gcc/testsuite/gcc.target/arm/neon/vnegs32.c
44292 --- a/gcc/testsuite/gcc.target/arm/neon/vnegs32.c       2007-07-25 14:28:31.000000000 +0200
44293 +++ b/gcc/testsuite/gcc.target/arm/neon/vnegs32.c       2010-01-25 09:50:29.425686763 +0100
44294 @@ -3,7 +3,8 @@
44295  
44296  /* { dg-do assemble } */
44297  /* { dg-require-effective-target arm_neon_ok } */
44298 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44299 +/* { dg-options "-save-temps -O0" } */
44300 +/* { dg-add-options arm_neon } */
44301  
44302  #include "arm_neon.h"
44303  
44304 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegs8.c b/gcc/testsuite/gcc.target/arm/neon/vnegs8.c
44305 --- a/gcc/testsuite/gcc.target/arm/neon/vnegs8.c        2007-07-25 14:28:31.000000000 +0200
44306 +++ b/gcc/testsuite/gcc.target/arm/neon/vnegs8.c        2010-01-25 09:50:29.425686763 +0100
44307 @@ -3,7 +3,8 @@
44308  
44309  /* { dg-do assemble } */
44310  /* { dg-require-effective-target arm_neon_ok } */
44311 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44312 +/* { dg-options "-save-temps -O0" } */
44313 +/* { dg-add-options arm_neon } */
44314  
44315  #include "arm_neon.h"
44316  
44317 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQs16.c b/gcc/testsuite/gcc.target/arm/neon/vornQs16.c
44318 --- a/gcc/testsuite/gcc.target/arm/neon/vornQs16.c      2007-07-25 14:28:31.000000000 +0200
44319 +++ b/gcc/testsuite/gcc.target/arm/neon/vornQs16.c      2010-01-25 09:50:29.425686763 +0100
44320 @@ -3,7 +3,8 @@
44321  
44322  /* { dg-do assemble } */
44323  /* { dg-require-effective-target arm_neon_ok } */
44324 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44325 +/* { dg-options "-save-temps -O0" } */
44326 +/* { dg-add-options arm_neon } */
44327  
44328  #include "arm_neon.h"
44329  
44330 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQs32.c b/gcc/testsuite/gcc.target/arm/neon/vornQs32.c
44331 --- a/gcc/testsuite/gcc.target/arm/neon/vornQs32.c      2007-07-25 14:28:31.000000000 +0200
44332 +++ b/gcc/testsuite/gcc.target/arm/neon/vornQs32.c      2010-01-25 09:50:29.425686763 +0100
44333 @@ -3,7 +3,8 @@
44334  
44335  /* { dg-do assemble } */
44336  /* { dg-require-effective-target arm_neon_ok } */
44337 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44338 +/* { dg-options "-save-temps -O0" } */
44339 +/* { dg-add-options arm_neon } */
44340  
44341  #include "arm_neon.h"
44342  
44343 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQs64.c b/gcc/testsuite/gcc.target/arm/neon/vornQs64.c
44344 --- a/gcc/testsuite/gcc.target/arm/neon/vornQs64.c      2007-07-25 14:28:31.000000000 +0200
44345 +++ b/gcc/testsuite/gcc.target/arm/neon/vornQs64.c      2010-01-25 09:50:29.425686763 +0100
44346 @@ -3,7 +3,8 @@
44347  
44348  /* { dg-do assemble } */
44349  /* { dg-require-effective-target arm_neon_ok } */
44350 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44351 +/* { dg-options "-save-temps -O0" } */
44352 +/* { dg-add-options arm_neon } */
44353  
44354  #include "arm_neon.h"
44355  
44356 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQs8.c b/gcc/testsuite/gcc.target/arm/neon/vornQs8.c
44357 --- a/gcc/testsuite/gcc.target/arm/neon/vornQs8.c       2007-07-25 14:28:31.000000000 +0200
44358 +++ b/gcc/testsuite/gcc.target/arm/neon/vornQs8.c       2010-01-25 09:50:29.425686763 +0100
44359 @@ -3,7 +3,8 @@
44360  
44361  /* { dg-do assemble } */
44362  /* { dg-require-effective-target arm_neon_ok } */
44363 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44364 +/* { dg-options "-save-temps -O0" } */
44365 +/* { dg-add-options arm_neon } */
44366  
44367  #include "arm_neon.h"
44368  
44369 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQu16.c b/gcc/testsuite/gcc.target/arm/neon/vornQu16.c
44370 --- a/gcc/testsuite/gcc.target/arm/neon/vornQu16.c      2007-07-25 14:28:31.000000000 +0200
44371 +++ b/gcc/testsuite/gcc.target/arm/neon/vornQu16.c      2010-01-25 09:50:29.425686763 +0100
44372 @@ -3,7 +3,8 @@
44373  
44374  /* { dg-do assemble } */
44375  /* { dg-require-effective-target arm_neon_ok } */
44376 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44377 +/* { dg-options "-save-temps -O0" } */
44378 +/* { dg-add-options arm_neon } */
44379  
44380  #include "arm_neon.h"
44381  
44382 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQu32.c b/gcc/testsuite/gcc.target/arm/neon/vornQu32.c
44383 --- a/gcc/testsuite/gcc.target/arm/neon/vornQu32.c      2007-07-25 14:28:31.000000000 +0200
44384 +++ b/gcc/testsuite/gcc.target/arm/neon/vornQu32.c      2010-01-25 09:50:29.425686763 +0100
44385 @@ -3,7 +3,8 @@
44386  
44387  /* { dg-do assemble } */
44388  /* { dg-require-effective-target arm_neon_ok } */
44389 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44390 +/* { dg-options "-save-temps -O0" } */
44391 +/* { dg-add-options arm_neon } */
44392  
44393  #include "arm_neon.h"
44394  
44395 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQu64.c b/gcc/testsuite/gcc.target/arm/neon/vornQu64.c
44396 --- a/gcc/testsuite/gcc.target/arm/neon/vornQu64.c      2007-07-25 14:28:31.000000000 +0200
44397 +++ b/gcc/testsuite/gcc.target/arm/neon/vornQu64.c      2010-01-25 09:50:29.425686763 +0100
44398 @@ -3,7 +3,8 @@
44399  
44400  /* { dg-do assemble } */
44401  /* { dg-require-effective-target arm_neon_ok } */
44402 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44403 +/* { dg-options "-save-temps -O0" } */
44404 +/* { dg-add-options arm_neon } */
44405  
44406  #include "arm_neon.h"
44407  
44408 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQu8.c b/gcc/testsuite/gcc.target/arm/neon/vornQu8.c
44409 --- a/gcc/testsuite/gcc.target/arm/neon/vornQu8.c       2007-07-25 14:28:31.000000000 +0200
44410 +++ b/gcc/testsuite/gcc.target/arm/neon/vornQu8.c       2010-01-25 09:50:29.435686987 +0100
44411 @@ -3,7 +3,8 @@
44412  
44413  /* { dg-do assemble } */
44414  /* { dg-require-effective-target arm_neon_ok } */
44415 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44416 +/* { dg-options "-save-temps -O0" } */
44417 +/* { dg-add-options arm_neon } */
44418  
44419  #include "arm_neon.h"
44420  
44421 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorns16.c b/gcc/testsuite/gcc.target/arm/neon/vorns16.c
44422 --- a/gcc/testsuite/gcc.target/arm/neon/vorns16.c       2007-07-25 14:28:31.000000000 +0200
44423 +++ b/gcc/testsuite/gcc.target/arm/neon/vorns16.c       2010-01-25 09:50:29.435686987 +0100
44424 @@ -3,7 +3,8 @@
44425  
44426  /* { dg-do assemble } */
44427  /* { dg-require-effective-target arm_neon_ok } */
44428 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44429 +/* { dg-options "-save-temps -O0" } */
44430 +/* { dg-add-options arm_neon } */
44431  
44432  #include "arm_neon.h"
44433  
44434 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorns32.c b/gcc/testsuite/gcc.target/arm/neon/vorns32.c
44435 --- a/gcc/testsuite/gcc.target/arm/neon/vorns32.c       2007-07-25 14:28:31.000000000 +0200
44436 +++ b/gcc/testsuite/gcc.target/arm/neon/vorns32.c       2010-01-25 09:50:29.435686987 +0100
44437 @@ -3,7 +3,8 @@
44438  
44439  /* { dg-do assemble } */
44440  /* { dg-require-effective-target arm_neon_ok } */
44441 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44442 +/* { dg-options "-save-temps -O0" } */
44443 +/* { dg-add-options arm_neon } */
44444  
44445  #include "arm_neon.h"
44446  
44447 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorns64.c b/gcc/testsuite/gcc.target/arm/neon/vorns64.c
44448 --- a/gcc/testsuite/gcc.target/arm/neon/vorns64.c       2007-07-25 14:28:31.000000000 +0200
44449 +++ b/gcc/testsuite/gcc.target/arm/neon/vorns64.c       2010-01-25 09:50:29.435686987 +0100
44450 @@ -3,7 +3,8 @@
44451  
44452  /* { dg-do assemble } */
44453  /* { dg-require-effective-target arm_neon_ok } */
44454 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44455 +/* { dg-options "-save-temps -O0" } */
44456 +/* { dg-add-options arm_neon } */
44457  
44458  #include "arm_neon.h"
44459  
44460 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorns8.c b/gcc/testsuite/gcc.target/arm/neon/vorns8.c
44461 --- a/gcc/testsuite/gcc.target/arm/neon/vorns8.c        2007-07-25 14:28:31.000000000 +0200
44462 +++ b/gcc/testsuite/gcc.target/arm/neon/vorns8.c        2010-01-25 09:50:29.435686987 +0100
44463 @@ -3,7 +3,8 @@
44464  
44465  /* { dg-do assemble } */
44466  /* { dg-require-effective-target arm_neon_ok } */
44467 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44468 +/* { dg-options "-save-temps -O0" } */
44469 +/* { dg-add-options arm_neon } */
44470  
44471  #include "arm_neon.h"
44472  
44473 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornu16.c b/gcc/testsuite/gcc.target/arm/neon/vornu16.c
44474 --- a/gcc/testsuite/gcc.target/arm/neon/vornu16.c       2007-07-25 14:28:31.000000000 +0200
44475 +++ b/gcc/testsuite/gcc.target/arm/neon/vornu16.c       2010-01-25 09:50:29.435686987 +0100
44476 @@ -3,7 +3,8 @@
44477  
44478  /* { dg-do assemble } */
44479  /* { dg-require-effective-target arm_neon_ok } */
44480 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44481 +/* { dg-options "-save-temps -O0" } */
44482 +/* { dg-add-options arm_neon } */
44483  
44484  #include "arm_neon.h"
44485  
44486 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornu32.c b/gcc/testsuite/gcc.target/arm/neon/vornu32.c
44487 --- a/gcc/testsuite/gcc.target/arm/neon/vornu32.c       2007-07-25 14:28:31.000000000 +0200
44488 +++ b/gcc/testsuite/gcc.target/arm/neon/vornu32.c       2010-01-25 09:50:29.435686987 +0100
44489 @@ -3,7 +3,8 @@
44490  
44491  /* { dg-do assemble } */
44492  /* { dg-require-effective-target arm_neon_ok } */
44493 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44494 +/* { dg-options "-save-temps -O0" } */
44495 +/* { dg-add-options arm_neon } */
44496  
44497  #include "arm_neon.h"
44498  
44499 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornu64.c b/gcc/testsuite/gcc.target/arm/neon/vornu64.c
44500 --- a/gcc/testsuite/gcc.target/arm/neon/vornu64.c       2007-07-25 14:28:31.000000000 +0200
44501 +++ b/gcc/testsuite/gcc.target/arm/neon/vornu64.c       2010-01-25 09:50:29.435686987 +0100
44502 @@ -3,7 +3,8 @@
44503  
44504  /* { dg-do assemble } */
44505  /* { dg-require-effective-target arm_neon_ok } */
44506 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44507 +/* { dg-options "-save-temps -O0" } */
44508 +/* { dg-add-options arm_neon } */
44509  
44510  #include "arm_neon.h"
44511  
44512 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornu8.c b/gcc/testsuite/gcc.target/arm/neon/vornu8.c
44513 --- a/gcc/testsuite/gcc.target/arm/neon/vornu8.c        2007-07-25 14:28:31.000000000 +0200
44514 +++ b/gcc/testsuite/gcc.target/arm/neon/vornu8.c        2010-01-25 09:50:29.435686987 +0100
44515 @@ -3,7 +3,8 @@
44516  
44517  /* { dg-do assemble } */
44518  /* { dg-require-effective-target arm_neon_ok } */
44519 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44520 +/* { dg-options "-save-temps -O0" } */
44521 +/* { dg-add-options arm_neon } */
44522  
44523  #include "arm_neon.h"
44524  
44525 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c b/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c
44526 --- a/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c      2007-07-25 14:28:31.000000000 +0200
44527 +++ b/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c      2010-01-25 09:50:29.435686987 +0100
44528 @@ -3,7 +3,8 @@
44529  
44530  /* { dg-do assemble } */
44531  /* { dg-require-effective-target arm_neon_ok } */
44532 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44533 +/* { dg-options "-save-temps -O0" } */
44534 +/* { dg-add-options arm_neon } */
44535  
44536  #include "arm_neon.h"
44537  
44538 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c b/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c
44539 --- a/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c      2007-07-25 14:28:31.000000000 +0200
44540 +++ b/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c      2010-01-25 09:50:29.435686987 +0100
44541 @@ -3,7 +3,8 @@
44542  
44543  /* { dg-do assemble } */
44544  /* { dg-require-effective-target arm_neon_ok } */
44545 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44546 +/* { dg-options "-save-temps -O0" } */
44547 +/* { dg-add-options arm_neon } */
44548  
44549  #include "arm_neon.h"
44550  
44551 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c b/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c
44552 --- a/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c      2007-07-25 14:28:31.000000000 +0200
44553 +++ b/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c      2010-01-25 09:50:29.435686987 +0100
44554 @@ -3,7 +3,8 @@
44555  
44556  /* { dg-do assemble } */
44557  /* { dg-require-effective-target arm_neon_ok } */
44558 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44559 +/* { dg-options "-save-temps -O0" } */
44560 +/* { dg-add-options arm_neon } */
44561  
44562  #include "arm_neon.h"
44563  
44564 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c b/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c
44565 --- a/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c       2007-07-25 14:28:31.000000000 +0200
44566 +++ b/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c       2010-01-25 09:50:29.435686987 +0100
44567 @@ -3,7 +3,8 @@
44568  
44569  /* { dg-do assemble } */
44570  /* { dg-require-effective-target arm_neon_ok } */
44571 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44572 +/* { dg-options "-save-temps -O0" } */
44573 +/* { dg-add-options arm_neon } */
44574  
44575  #include "arm_neon.h"
44576  
44577 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c b/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c
44578 --- a/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c      2007-07-25 14:28:31.000000000 +0200
44579 +++ b/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c      2010-01-25 09:50:29.435686987 +0100
44580 @@ -3,7 +3,8 @@
44581  
44582  /* { dg-do assemble } */
44583  /* { dg-require-effective-target arm_neon_ok } */
44584 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44585 +/* { dg-options "-save-temps -O0" } */
44586 +/* { dg-add-options arm_neon } */
44587  
44588  #include "arm_neon.h"
44589  
44590 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c b/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c
44591 --- a/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c      2007-07-25 14:28:31.000000000 +0200
44592 +++ b/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c      2010-01-25 09:50:29.435686987 +0100
44593 @@ -3,7 +3,8 @@
44594  
44595  /* { dg-do assemble } */
44596  /* { dg-require-effective-target arm_neon_ok } */
44597 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44598 +/* { dg-options "-save-temps -O0" } */
44599 +/* { dg-add-options arm_neon } */
44600  
44601  #include "arm_neon.h"
44602  
44603 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c b/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c
44604 --- a/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c      2007-07-25 14:28:31.000000000 +0200
44605 +++ b/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c      2010-01-25 09:50:29.435686987 +0100
44606 @@ -3,7 +3,8 @@
44607  
44608  /* { dg-do assemble } */
44609  /* { dg-require-effective-target arm_neon_ok } */
44610 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44611 +/* { dg-options "-save-temps -O0" } */
44612 +/* { dg-add-options arm_neon } */
44613  
44614  #include "arm_neon.h"
44615  
44616 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c b/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c
44617 --- a/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c       2007-07-25 14:28:31.000000000 +0200
44618 +++ b/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c       2010-01-25 09:50:29.435686987 +0100
44619 @@ -3,7 +3,8 @@
44620  
44621  /* { dg-do assemble } */
44622  /* { dg-require-effective-target arm_neon_ok } */
44623 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44624 +/* { dg-options "-save-temps -O0" } */
44625 +/* { dg-add-options arm_neon } */
44626  
44627  #include "arm_neon.h"
44628  
44629 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrs16.c b/gcc/testsuite/gcc.target/arm/neon/vorrs16.c
44630 --- a/gcc/testsuite/gcc.target/arm/neon/vorrs16.c       2007-07-25 14:28:31.000000000 +0200
44631 +++ b/gcc/testsuite/gcc.target/arm/neon/vorrs16.c       2010-01-25 09:50:29.435686987 +0100
44632 @@ -3,7 +3,8 @@
44633  
44634  /* { dg-do assemble } */
44635  /* { dg-require-effective-target arm_neon_ok } */
44636 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44637 +/* { dg-options "-save-temps -O0" } */
44638 +/* { dg-add-options arm_neon } */
44639  
44640  #include "arm_neon.h"
44641  
44642 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrs32.c b/gcc/testsuite/gcc.target/arm/neon/vorrs32.c
44643 --- a/gcc/testsuite/gcc.target/arm/neon/vorrs32.c       2007-07-25 14:28:31.000000000 +0200
44644 +++ b/gcc/testsuite/gcc.target/arm/neon/vorrs32.c       2010-01-25 09:50:29.435686987 +0100
44645 @@ -3,7 +3,8 @@
44646  
44647  /* { dg-do assemble } */
44648  /* { dg-require-effective-target arm_neon_ok } */
44649 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44650 +/* { dg-options "-save-temps -O0" } */
44651 +/* { dg-add-options arm_neon } */
44652  
44653  #include "arm_neon.h"
44654  
44655 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrs64.c b/gcc/testsuite/gcc.target/arm/neon/vorrs64.c
44656 --- a/gcc/testsuite/gcc.target/arm/neon/vorrs64.c       2007-07-25 14:28:31.000000000 +0200
44657 +++ b/gcc/testsuite/gcc.target/arm/neon/vorrs64.c       2010-01-25 09:50:29.435686987 +0100
44658 @@ -3,7 +3,8 @@
44659  
44660  /* { dg-do assemble } */
44661  /* { dg-require-effective-target arm_neon_ok } */
44662 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44663 +/* { dg-options "-save-temps -O0" } */
44664 +/* { dg-add-options arm_neon } */
44665  
44666  #include "arm_neon.h"
44667  
44668 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrs8.c b/gcc/testsuite/gcc.target/arm/neon/vorrs8.c
44669 --- a/gcc/testsuite/gcc.target/arm/neon/vorrs8.c        2007-07-25 14:28:31.000000000 +0200
44670 +++ b/gcc/testsuite/gcc.target/arm/neon/vorrs8.c        2010-01-25 09:50:29.435686987 +0100
44671 @@ -3,7 +3,8 @@
44672  
44673  /* { dg-do assemble } */
44674  /* { dg-require-effective-target arm_neon_ok } */
44675 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44676 +/* { dg-options "-save-temps -O0" } */
44677 +/* { dg-add-options arm_neon } */
44678  
44679  #include "arm_neon.h"
44680  
44681 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorru16.c b/gcc/testsuite/gcc.target/arm/neon/vorru16.c
44682 --- a/gcc/testsuite/gcc.target/arm/neon/vorru16.c       2007-07-25 14:28:31.000000000 +0200
44683 +++ b/gcc/testsuite/gcc.target/arm/neon/vorru16.c       2010-01-25 09:50:29.435686987 +0100
44684 @@ -3,7 +3,8 @@
44685  
44686  /* { dg-do assemble } */
44687  /* { dg-require-effective-target arm_neon_ok } */
44688 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44689 +/* { dg-options "-save-temps -O0" } */
44690 +/* { dg-add-options arm_neon } */
44691  
44692  #include "arm_neon.h"
44693  
44694 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorru32.c b/gcc/testsuite/gcc.target/arm/neon/vorru32.c
44695 --- a/gcc/testsuite/gcc.target/arm/neon/vorru32.c       2007-07-25 14:28:31.000000000 +0200
44696 +++ b/gcc/testsuite/gcc.target/arm/neon/vorru32.c       2010-01-25 09:50:29.435686987 +0100
44697 @@ -3,7 +3,8 @@
44698  
44699  /* { dg-do assemble } */
44700  /* { dg-require-effective-target arm_neon_ok } */
44701 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44702 +/* { dg-options "-save-temps -O0" } */
44703 +/* { dg-add-options arm_neon } */
44704  
44705  #include "arm_neon.h"
44706  
44707 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorru64.c b/gcc/testsuite/gcc.target/arm/neon/vorru64.c
44708 --- a/gcc/testsuite/gcc.target/arm/neon/vorru64.c       2007-07-25 14:28:31.000000000 +0200
44709 +++ b/gcc/testsuite/gcc.target/arm/neon/vorru64.c       2010-01-25 09:50:29.435686987 +0100
44710 @@ -3,7 +3,8 @@
44711  
44712  /* { dg-do assemble } */
44713  /* { dg-require-effective-target arm_neon_ok } */
44714 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44715 +/* { dg-options "-save-temps -O0" } */
44716 +/* { dg-add-options arm_neon } */
44717  
44718  #include "arm_neon.h"
44719  
44720 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorru8.c b/gcc/testsuite/gcc.target/arm/neon/vorru8.c
44721 --- a/gcc/testsuite/gcc.target/arm/neon/vorru8.c        2007-07-25 14:28:31.000000000 +0200
44722 +++ b/gcc/testsuite/gcc.target/arm/neon/vorru8.c        2010-01-25 09:50:29.435686987 +0100
44723 @@ -3,7 +3,8 @@
44724  
44725  /* { dg-do assemble } */
44726  /* { dg-require-effective-target arm_neon_ok } */
44727 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44728 +/* { dg-options "-save-temps -O0" } */
44729 +/* { dg-add-options arm_neon } */
44730  
44731  #include "arm_neon.h"
44732  
44733 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c b/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c
44734 --- a/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c    2007-07-25 14:28:31.000000000 +0200
44735 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c    2010-01-25 09:50:29.435686987 +0100
44736 @@ -3,7 +3,8 @@
44737  
44738  /* { dg-do assemble } */
44739  /* { dg-require-effective-target arm_neon_ok } */
44740 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44741 +/* { dg-options "-save-temps -O0" } */
44742 +/* { dg-add-options arm_neon } */
44743  
44744  #include "arm_neon.h"
44745  
44746 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c b/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c
44747 --- a/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c    2007-07-25 14:28:31.000000000 +0200
44748 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c    2010-01-25 09:50:29.435686987 +0100
44749 @@ -3,7 +3,8 @@
44750  
44751  /* { dg-do assemble } */
44752  /* { dg-require-effective-target arm_neon_ok } */
44753 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44754 +/* { dg-options "-save-temps -O0" } */
44755 +/* { dg-add-options arm_neon } */
44756  
44757  #include "arm_neon.h"
44758  
44759 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c b/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c
44760 --- a/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c     2007-07-25 14:28:31.000000000 +0200
44761 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c     2010-01-25 09:50:29.435686987 +0100
44762 @@ -3,7 +3,8 @@
44763  
44764  /* { dg-do assemble } */
44765  /* { dg-require-effective-target arm_neon_ok } */
44766 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44767 +/* { dg-options "-save-temps -O0" } */
44768 +/* { dg-add-options arm_neon } */
44769  
44770  #include "arm_neon.h"
44771  
44772 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c b/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c
44773 --- a/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c    2007-07-25 14:28:31.000000000 +0200
44774 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c    2010-01-25 09:50:29.435686987 +0100
44775 @@ -3,7 +3,8 @@
44776  
44777  /* { dg-do assemble } */
44778  /* { dg-require-effective-target arm_neon_ok } */
44779 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44780 +/* { dg-options "-save-temps -O0" } */
44781 +/* { dg-add-options arm_neon } */
44782  
44783  #include "arm_neon.h"
44784  
44785 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c b/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c
44786 --- a/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c    2007-07-25 14:28:31.000000000 +0200
44787 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c    2010-01-25 09:50:29.435686987 +0100
44788 @@ -3,7 +3,8 @@
44789  
44790  /* { dg-do assemble } */
44791  /* { dg-require-effective-target arm_neon_ok } */
44792 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44793 +/* { dg-options "-save-temps -O0" } */
44794 +/* { dg-add-options arm_neon } */
44795  
44796  #include "arm_neon.h"
44797  
44798 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c b/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c
44799 --- a/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c     2007-07-25 14:28:31.000000000 +0200
44800 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c     2010-01-25 09:50:29.435686987 +0100
44801 @@ -3,7 +3,8 @@
44802  
44803  /* { dg-do assemble } */
44804  /* { dg-require-effective-target arm_neon_ok } */
44805 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44806 +/* { dg-options "-save-temps -O0" } */
44807 +/* { dg-add-options arm_neon } */
44808  
44809  #include "arm_neon.h"
44810  
44811 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadals16.c b/gcc/testsuite/gcc.target/arm/neon/vpadals16.c
44812 --- a/gcc/testsuite/gcc.target/arm/neon/vpadals16.c     2007-07-25 14:28:31.000000000 +0200
44813 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadals16.c     2010-01-25 09:50:29.435686987 +0100
44814 @@ -3,7 +3,8 @@
44815  
44816  /* { dg-do assemble } */
44817  /* { dg-require-effective-target arm_neon_ok } */
44818 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44819 +/* { dg-options "-save-temps -O0" } */
44820 +/* { dg-add-options arm_neon } */
44821  
44822  #include "arm_neon.h"
44823  
44824 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadals32.c b/gcc/testsuite/gcc.target/arm/neon/vpadals32.c
44825 --- a/gcc/testsuite/gcc.target/arm/neon/vpadals32.c     2007-07-25 14:28:31.000000000 +0200
44826 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadals32.c     2010-01-25 09:50:29.435686987 +0100
44827 @@ -3,7 +3,8 @@
44828  
44829  /* { dg-do assemble } */
44830  /* { dg-require-effective-target arm_neon_ok } */
44831 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44832 +/* { dg-options "-save-temps -O0" } */
44833 +/* { dg-add-options arm_neon } */
44834  
44835  #include "arm_neon.h"
44836  
44837 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadals8.c b/gcc/testsuite/gcc.target/arm/neon/vpadals8.c
44838 --- a/gcc/testsuite/gcc.target/arm/neon/vpadals8.c      2007-07-25 14:28:31.000000000 +0200
44839 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadals8.c      2010-01-25 09:50:29.435686987 +0100
44840 @@ -3,7 +3,8 @@
44841  
44842  /* { dg-do assemble } */
44843  /* { dg-require-effective-target arm_neon_ok } */
44844 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44845 +/* { dg-options "-save-temps -O0" } */
44846 +/* { dg-add-options arm_neon } */
44847  
44848  #include "arm_neon.h"
44849  
44850 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c b/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c
44851 --- a/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c     2007-07-25 14:28:31.000000000 +0200
44852 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c     2010-01-25 09:50:29.435686987 +0100
44853 @@ -3,7 +3,8 @@
44854  
44855  /* { dg-do assemble } */
44856  /* { dg-require-effective-target arm_neon_ok } */
44857 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44858 +/* { dg-options "-save-temps -O0" } */
44859 +/* { dg-add-options arm_neon } */
44860  
44861  #include "arm_neon.h"
44862  
44863 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c b/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c
44864 --- a/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c     2007-07-25 14:28:31.000000000 +0200
44865 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c     2010-01-25 09:50:29.435686987 +0100
44866 @@ -3,7 +3,8 @@
44867  
44868  /* { dg-do assemble } */
44869  /* { dg-require-effective-target arm_neon_ok } */
44870 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44871 +/* { dg-options "-save-temps -O0" } */
44872 +/* { dg-add-options arm_neon } */
44873  
44874  #include "arm_neon.h"
44875  
44876 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c b/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c
44877 --- a/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c      2007-07-25 14:28:31.000000000 +0200
44878 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c      2010-01-25 09:50:29.435686987 +0100
44879 @@ -3,7 +3,8 @@
44880  
44881  /* { dg-do assemble } */
44882  /* { dg-require-effective-target arm_neon_ok } */
44883 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44884 +/* { dg-options "-save-temps -O0" } */
44885 +/* { dg-add-options arm_neon } */
44886  
44887  #include "arm_neon.h"
44888  
44889 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c b/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c
44890 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c      2007-07-25 14:28:31.000000000 +0200
44891 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c      2010-01-25 09:50:29.435686987 +0100
44892 @@ -3,7 +3,8 @@
44893  
44894  /* { dg-do assemble } */
44895  /* { dg-require-effective-target arm_neon_ok } */
44896 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44897 +/* { dg-options "-save-temps -O0" } */
44898 +/* { dg-add-options arm_neon } */
44899  
44900  #include "arm_neon.h"
44901  
44902 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c
44903 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c    2007-07-25 14:28:31.000000000 +0200
44904 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c    2010-01-25 09:50:29.435686987 +0100
44905 @@ -3,7 +3,8 @@
44906  
44907  /* { dg-do assemble } */
44908  /* { dg-require-effective-target arm_neon_ok } */
44909 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44910 +/* { dg-options "-save-temps -O0" } */
44911 +/* { dg-add-options arm_neon } */
44912  
44913  #include "arm_neon.h"
44914  
44915 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c
44916 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c    2007-07-25 14:28:31.000000000 +0200
44917 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c    2010-01-25 09:50:29.435686987 +0100
44918 @@ -3,7 +3,8 @@
44919  
44920  /* { dg-do assemble } */
44921  /* { dg-require-effective-target arm_neon_ok } */
44922 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44923 +/* { dg-options "-save-temps -O0" } */
44924 +/* { dg-add-options arm_neon } */
44925  
44926  #include "arm_neon.h"
44927  
44928 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c
44929 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c     2007-07-25 14:28:31.000000000 +0200
44930 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c     2010-01-25 09:50:29.435686987 +0100
44931 @@ -3,7 +3,8 @@
44932  
44933  /* { dg-do assemble } */
44934  /* { dg-require-effective-target arm_neon_ok } */
44935 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44936 +/* { dg-options "-save-temps -O0" } */
44937 +/* { dg-add-options arm_neon } */
44938  
44939  #include "arm_neon.h"
44940  
44941 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c
44942 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c    2007-07-25 14:28:31.000000000 +0200
44943 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c    2010-01-25 09:50:29.435686987 +0100
44944 @@ -3,7 +3,8 @@
44945  
44946  /* { dg-do assemble } */
44947  /* { dg-require-effective-target arm_neon_ok } */
44948 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44949 +/* { dg-options "-save-temps -O0" } */
44950 +/* { dg-add-options arm_neon } */
44951  
44952  #include "arm_neon.h"
44953  
44954 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c
44955 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c    2007-07-25 14:28:31.000000000 +0200
44956 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c    2010-01-25 09:50:29.435686987 +0100
44957 @@ -3,7 +3,8 @@
44958  
44959  /* { dg-do assemble } */
44960  /* { dg-require-effective-target arm_neon_ok } */
44961 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44962 +/* { dg-options "-save-temps -O0" } */
44963 +/* { dg-add-options arm_neon } */
44964  
44965  #include "arm_neon.h"
44966  
44967 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c
44968 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c     2007-07-25 14:28:31.000000000 +0200
44969 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c     2010-01-25 09:50:29.435686987 +0100
44970 @@ -3,7 +3,8 @@
44971  
44972  /* { dg-do assemble } */
44973  /* { dg-require-effective-target arm_neon_ok } */
44974 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44975 +/* { dg-options "-save-temps -O0" } */
44976 +/* { dg-add-options arm_neon } */
44977  
44978  #include "arm_neon.h"
44979  
44980 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c b/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c
44981 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c     2007-07-25 14:28:31.000000000 +0200
44982 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c     2010-01-25 09:50:29.435686987 +0100
44983 @@ -3,7 +3,8 @@
44984  
44985  /* { dg-do assemble } */
44986  /* { dg-require-effective-target arm_neon_ok } */
44987 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
44988 +/* { dg-options "-save-temps -O0" } */
44989 +/* { dg-add-options arm_neon } */
44990  
44991  #include "arm_neon.h"
44992  
44993 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c b/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c
44994 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c     2007-07-25 14:28:31.000000000 +0200
44995 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c     2010-01-25 09:50:29.435686987 +0100
44996 @@ -3,7 +3,8 @@
44997  
44998  /* { dg-do assemble } */
44999  /* { dg-require-effective-target arm_neon_ok } */
45000 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45001 +/* { dg-options "-save-temps -O0" } */
45002 +/* { dg-add-options arm_neon } */
45003  
45004  #include "arm_neon.h"
45005  
45006 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c b/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c
45007 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c      2007-07-25 14:28:31.000000000 +0200
45008 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c      2010-01-25 09:50:29.435686987 +0100
45009 @@ -3,7 +3,8 @@
45010  
45011  /* { dg-do assemble } */
45012  /* { dg-require-effective-target arm_neon_ok } */
45013 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45014 +/* { dg-options "-save-temps -O0" } */
45015 +/* { dg-add-options arm_neon } */
45016  
45017  #include "arm_neon.h"
45018  
45019 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c
45020 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c     2007-07-25 14:28:31.000000000 +0200
45021 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c     2010-01-25 09:50:29.435686987 +0100
45022 @@ -3,7 +3,8 @@
45023  
45024  /* { dg-do assemble } */
45025  /* { dg-require-effective-target arm_neon_ok } */
45026 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45027 +/* { dg-options "-save-temps -O0" } */
45028 +/* { dg-add-options arm_neon } */
45029  
45030  #include "arm_neon.h"
45031  
45032 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c
45033 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c     2007-07-25 14:28:31.000000000 +0200
45034 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c     2010-01-25 09:50:29.435686987 +0100
45035 @@ -3,7 +3,8 @@
45036  
45037  /* { dg-do assemble } */
45038  /* { dg-require-effective-target arm_neon_ok } */
45039 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45040 +/* { dg-options "-save-temps -O0" } */
45041 +/* { dg-add-options arm_neon } */
45042  
45043  #include "arm_neon.h"
45044  
45045 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c
45046 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c      2007-07-25 14:28:31.000000000 +0200
45047 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c      2010-01-25 09:50:29.435686987 +0100
45048 @@ -3,7 +3,8 @@
45049  
45050  /* { dg-do assemble } */
45051  /* { dg-require-effective-target arm_neon_ok } */
45052 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45053 +/* { dg-options "-save-temps -O0" } */
45054 +/* { dg-add-options arm_neon } */
45055  
45056  #include "arm_neon.h"
45057  
45058 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadds16.c b/gcc/testsuite/gcc.target/arm/neon/vpadds16.c
45059 --- a/gcc/testsuite/gcc.target/arm/neon/vpadds16.c      2007-07-25 14:28:31.000000000 +0200
45060 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadds16.c      2010-01-25 09:50:29.435686987 +0100
45061 @@ -3,7 +3,8 @@
45062  
45063  /* { dg-do assemble } */
45064  /* { dg-require-effective-target arm_neon_ok } */
45065 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45066 +/* { dg-options "-save-temps -O0" } */
45067 +/* { dg-add-options arm_neon } */
45068  
45069  #include "arm_neon.h"
45070  
45071 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadds32.c b/gcc/testsuite/gcc.target/arm/neon/vpadds32.c
45072 --- a/gcc/testsuite/gcc.target/arm/neon/vpadds32.c      2007-07-25 14:28:31.000000000 +0200
45073 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadds32.c      2010-01-25 09:50:29.435686987 +0100
45074 @@ -3,7 +3,8 @@
45075  
45076  /* { dg-do assemble } */
45077  /* { dg-require-effective-target arm_neon_ok } */
45078 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45079 +/* { dg-options "-save-temps -O0" } */
45080 +/* { dg-add-options arm_neon } */
45081  
45082  #include "arm_neon.h"
45083  
45084 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadds8.c b/gcc/testsuite/gcc.target/arm/neon/vpadds8.c
45085 --- a/gcc/testsuite/gcc.target/arm/neon/vpadds8.c       2007-07-25 14:28:31.000000000 +0200
45086 +++ b/gcc/testsuite/gcc.target/arm/neon/vpadds8.c       2010-01-25 09:50:29.435686987 +0100
45087 @@ -3,7 +3,8 @@
45088  
45089  /* { dg-do assemble } */
45090  /* { dg-require-effective-target arm_neon_ok } */
45091 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45092 +/* { dg-options "-save-temps -O0" } */
45093 +/* { dg-add-options arm_neon } */
45094  
45095  #include "arm_neon.h"
45096  
45097 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c b/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c
45098 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c      2007-07-25 14:28:31.000000000 +0200
45099 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c      2010-01-25 09:50:29.435686987 +0100
45100 @@ -3,7 +3,8 @@
45101  
45102  /* { dg-do assemble } */
45103  /* { dg-require-effective-target arm_neon_ok } */
45104 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45105 +/* { dg-options "-save-temps -O0" } */
45106 +/* { dg-add-options arm_neon } */
45107  
45108  #include "arm_neon.h"
45109  
45110 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c b/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c
45111 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c      2007-07-25 14:28:31.000000000 +0200
45112 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c      2010-01-25 09:50:29.435686987 +0100
45113 @@ -3,7 +3,8 @@
45114  
45115  /* { dg-do assemble } */
45116  /* { dg-require-effective-target arm_neon_ok } */
45117 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45118 +/* { dg-options "-save-temps -O0" } */
45119 +/* { dg-add-options arm_neon } */
45120  
45121  #include "arm_neon.h"
45122  
45123 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c b/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c
45124 --- a/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c       2007-07-25 14:28:31.000000000 +0200
45125 +++ b/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c       2010-01-25 09:50:29.435686987 +0100
45126 @@ -3,7 +3,8 @@
45127  
45128  /* { dg-do assemble } */
45129  /* { dg-require-effective-target arm_neon_ok } */
45130 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45131 +/* { dg-options "-save-temps -O0" } */
45132 +/* { dg-add-options arm_neon } */
45133  
45134  #include "arm_neon.h"
45135  
45136 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c
45137 --- a/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c      2007-07-25 14:28:31.000000000 +0200
45138 +++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c      2010-01-25 09:50:29.435686987 +0100
45139 @@ -3,7 +3,8 @@
45140  
45141  /* { dg-do assemble } */
45142  /* { dg-require-effective-target arm_neon_ok } */
45143 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45144 +/* { dg-options "-save-temps -O0" } */
45145 +/* { dg-add-options arm_neon } */
45146  
45147  #include "arm_neon.h"
45148  
45149 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c
45150 --- a/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c      2007-07-25 14:28:31.000000000 +0200
45151 +++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c      2010-01-25 09:50:29.435686987 +0100
45152 @@ -3,7 +3,8 @@
45153  
45154  /* { dg-do assemble } */
45155  /* { dg-require-effective-target arm_neon_ok } */
45156 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45157 +/* { dg-options "-save-temps -O0" } */
45158 +/* { dg-add-options arm_neon } */
45159  
45160  #include "arm_neon.h"
45161  
45162 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c
45163 --- a/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c      2007-07-25 14:28:31.000000000 +0200
45164 +++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c      2010-01-25 09:50:29.435686987 +0100
45165 @@ -3,7 +3,8 @@
45166  
45167  /* { dg-do assemble } */
45168  /* { dg-require-effective-target arm_neon_ok } */
45169 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45170 +/* { dg-options "-save-temps -O0" } */
45171 +/* { dg-add-options arm_neon } */
45172  
45173  #include "arm_neon.h"
45174  
45175 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c
45176 --- a/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c       2007-07-25 14:28:31.000000000 +0200
45177 +++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c       2010-01-25 09:50:29.435686987 +0100
45178 @@ -3,7 +3,8 @@
45179  
45180  /* { dg-do assemble } */
45181  /* { dg-require-effective-target arm_neon_ok } */
45182 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45183 +/* { dg-options "-save-temps -O0" } */
45184 +/* { dg-add-options arm_neon } */
45185  
45186  #include "arm_neon.h"
45187  
45188 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c
45189 --- a/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c      2007-07-25 14:28:31.000000000 +0200
45190 +++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c      2010-01-25 09:50:29.435686987 +0100
45191 @@ -3,7 +3,8 @@
45192  
45193  /* { dg-do assemble } */
45194  /* { dg-require-effective-target arm_neon_ok } */
45195 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45196 +/* { dg-options "-save-temps -O0" } */
45197 +/* { dg-add-options arm_neon } */
45198  
45199  #include "arm_neon.h"
45200  
45201 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c
45202 --- a/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c      2007-07-25 14:28:31.000000000 +0200
45203 +++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c      2010-01-25 09:50:29.435686987 +0100
45204 @@ -3,7 +3,8 @@
45205  
45206  /* { dg-do assemble } */
45207  /* { dg-require-effective-target arm_neon_ok } */
45208 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45209 +/* { dg-options "-save-temps -O0" } */
45210 +/* { dg-add-options arm_neon } */
45211  
45212  #include "arm_neon.h"
45213  
45214 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c
45215 --- a/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c       2007-07-25 14:28:31.000000000 +0200
45216 +++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c       2010-01-25 09:50:29.435686987 +0100
45217 @@ -3,7 +3,8 @@
45218  
45219  /* { dg-do assemble } */
45220  /* { dg-require-effective-target arm_neon_ok } */
45221 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45222 +/* { dg-options "-save-temps -O0" } */
45223 +/* { dg-add-options arm_neon } */
45224  
45225  #include "arm_neon.h"
45226  
45227 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpminf32.c b/gcc/testsuite/gcc.target/arm/neon/vpminf32.c
45228 --- a/gcc/testsuite/gcc.target/arm/neon/vpminf32.c      2007-07-25 14:28:31.000000000 +0200
45229 +++ b/gcc/testsuite/gcc.target/arm/neon/vpminf32.c      2010-01-25 09:50:29.435686987 +0100
45230 @@ -3,7 +3,8 @@
45231  
45232  /* { dg-do assemble } */
45233  /* { dg-require-effective-target arm_neon_ok } */
45234 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45235 +/* { dg-options "-save-temps -O0" } */
45236 +/* { dg-add-options arm_neon } */
45237  
45238  #include "arm_neon.h"
45239  
45240 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmins16.c b/gcc/testsuite/gcc.target/arm/neon/vpmins16.c
45241 --- a/gcc/testsuite/gcc.target/arm/neon/vpmins16.c      2007-07-25 14:28:31.000000000 +0200
45242 +++ b/gcc/testsuite/gcc.target/arm/neon/vpmins16.c      2010-01-25 09:50:29.435686987 +0100
45243 @@ -3,7 +3,8 @@
45244  
45245  /* { dg-do assemble } */
45246  /* { dg-require-effective-target arm_neon_ok } */
45247 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45248 +/* { dg-options "-save-temps -O0" } */
45249 +/* { dg-add-options arm_neon } */
45250  
45251  #include "arm_neon.h"
45252  
45253 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmins32.c b/gcc/testsuite/gcc.target/arm/neon/vpmins32.c
45254 --- a/gcc/testsuite/gcc.target/arm/neon/vpmins32.c      2007-07-25 14:28:31.000000000 +0200
45255 +++ b/gcc/testsuite/gcc.target/arm/neon/vpmins32.c      2010-01-25 09:50:29.435686987 +0100
45256 @@ -3,7 +3,8 @@
45257  
45258  /* { dg-do assemble } */
45259  /* { dg-require-effective-target arm_neon_ok } */
45260 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45261 +/* { dg-options "-save-temps -O0" } */
45262 +/* { dg-add-options arm_neon } */
45263  
45264  #include "arm_neon.h"
45265  
45266 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmins8.c b/gcc/testsuite/gcc.target/arm/neon/vpmins8.c
45267 --- a/gcc/testsuite/gcc.target/arm/neon/vpmins8.c       2007-07-25 14:28:31.000000000 +0200
45268 +++ b/gcc/testsuite/gcc.target/arm/neon/vpmins8.c       2010-01-25 09:50:29.435686987 +0100
45269 @@ -3,7 +3,8 @@
45270  
45271  /* { dg-do assemble } */
45272  /* { dg-require-effective-target arm_neon_ok } */
45273 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45274 +/* { dg-options "-save-temps -O0" } */
45275 +/* { dg-add-options arm_neon } */
45276  
45277  #include "arm_neon.h"
45278  
45279 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpminu16.c b/gcc/testsuite/gcc.target/arm/neon/vpminu16.c
45280 --- a/gcc/testsuite/gcc.target/arm/neon/vpminu16.c      2007-07-25 14:28:31.000000000 +0200
45281 +++ b/gcc/testsuite/gcc.target/arm/neon/vpminu16.c      2010-01-25 09:50:29.435686987 +0100
45282 @@ -3,7 +3,8 @@
45283  
45284  /* { dg-do assemble } */
45285  /* { dg-require-effective-target arm_neon_ok } */
45286 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45287 +/* { dg-options "-save-temps -O0" } */
45288 +/* { dg-add-options arm_neon } */
45289  
45290  #include "arm_neon.h"
45291  
45292 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpminu32.c b/gcc/testsuite/gcc.target/arm/neon/vpminu32.c
45293 --- a/gcc/testsuite/gcc.target/arm/neon/vpminu32.c      2007-07-25 14:28:31.000000000 +0200
45294 +++ b/gcc/testsuite/gcc.target/arm/neon/vpminu32.c      2010-01-25 09:50:29.435686987 +0100
45295 @@ -3,7 +3,8 @@
45296  
45297  /* { dg-do assemble } */
45298  /* { dg-require-effective-target arm_neon_ok } */
45299 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45300 +/* { dg-options "-save-temps -O0" } */
45301 +/* { dg-add-options arm_neon } */
45302  
45303  #include "arm_neon.h"
45304  
45305 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpminu8.c b/gcc/testsuite/gcc.target/arm/neon/vpminu8.c
45306 --- a/gcc/testsuite/gcc.target/arm/neon/vpminu8.c       2007-07-25 14:28:31.000000000 +0200
45307 +++ b/gcc/testsuite/gcc.target/arm/neon/vpminu8.c       2010-01-25 09:50:29.435686987 +0100
45308 @@ -3,7 +3,8 @@
45309  
45310  /* { dg-do assemble } */
45311  /* { dg-require-effective-target arm_neon_ok } */
45312 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45313 +/* { dg-options "-save-temps -O0" } */
45314 +/* { dg-add-options arm_neon } */
45315  
45316  #include "arm_neon.h"
45317  
45318 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c
45319 --- a/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c     2007-07-25 14:28:31.000000000 +0200
45320 +++ b/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c     2010-01-25 09:50:29.435686987 +0100
45321 @@ -3,7 +3,8 @@
45322  
45323  /* { dg-do assemble } */
45324  /* { dg-require-effective-target arm_neon_ok } */
45325 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45326 +/* { dg-options "-save-temps -O0" } */
45327 +/* { dg-add-options arm_neon } */
45328  
45329  #include "arm_neon.h"
45330  
45331 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c
45332 --- a/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c     2007-07-25 14:28:31.000000000 +0200
45333 +++ b/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c     2010-01-25 09:50:29.435686987 +0100
45334 @@ -3,7 +3,8 @@
45335  
45336  /* { dg-do assemble } */
45337  /* { dg-require-effective-target arm_neon_ok } */
45338 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45339 +/* { dg-options "-save-temps -O0" } */
45340 +/* { dg-add-options arm_neon } */
45341  
45342  #include "arm_neon.h"
45343  
45344 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c b/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c
45345 --- a/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c      2007-07-25 14:28:31.000000000 +0200
45346 +++ b/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c      2010-01-25 09:50:29.435686987 +0100
45347 @@ -3,7 +3,8 @@
45348  
45349  /* { dg-do assemble } */
45350  /* { dg-require-effective-target arm_neon_ok } */
45351 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45352 +/* { dg-options "-save-temps -O0" } */
45353 +/* { dg-add-options arm_neon } */
45354  
45355  #include "arm_neon.h"
45356  
45357 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqabss16.c b/gcc/testsuite/gcc.target/arm/neon/vqabss16.c
45358 --- a/gcc/testsuite/gcc.target/arm/neon/vqabss16.c      2007-07-25 14:28:31.000000000 +0200
45359 +++ b/gcc/testsuite/gcc.target/arm/neon/vqabss16.c      2010-01-25 09:50:29.435686987 +0100
45360 @@ -3,7 +3,8 @@
45361  
45362  /* { dg-do assemble } */
45363  /* { dg-require-effective-target arm_neon_ok } */
45364 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45365 +/* { dg-options "-save-temps -O0" } */
45366 +/* { dg-add-options arm_neon } */
45367  
45368  #include "arm_neon.h"
45369  
45370 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqabss32.c b/gcc/testsuite/gcc.target/arm/neon/vqabss32.c
45371 --- a/gcc/testsuite/gcc.target/arm/neon/vqabss32.c      2007-07-25 14:28:31.000000000 +0200
45372 +++ b/gcc/testsuite/gcc.target/arm/neon/vqabss32.c      2010-01-25 09:50:29.445687421 +0100
45373 @@ -3,7 +3,8 @@
45374  
45375  /* { dg-do assemble } */
45376  /* { dg-require-effective-target arm_neon_ok } */
45377 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45378 +/* { dg-options "-save-temps -O0" } */
45379 +/* { dg-add-options arm_neon } */
45380  
45381  #include "arm_neon.h"
45382  
45383 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqabss8.c b/gcc/testsuite/gcc.target/arm/neon/vqabss8.c
45384 --- a/gcc/testsuite/gcc.target/arm/neon/vqabss8.c       2007-07-25 14:28:31.000000000 +0200
45385 +++ b/gcc/testsuite/gcc.target/arm/neon/vqabss8.c       2010-01-25 09:50:29.445687421 +0100
45386 @@ -3,7 +3,8 @@
45387  
45388  /* { dg-do assemble } */
45389  /* { dg-require-effective-target arm_neon_ok } */
45390 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45391 +/* { dg-options "-save-temps -O0" } */
45392 +/* { dg-add-options arm_neon } */
45393  
45394  #include "arm_neon.h"
45395  
45396 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c
45397 --- a/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c     2007-07-25 14:28:31.000000000 +0200
45398 +++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c     2010-01-25 09:50:29.445687421 +0100
45399 @@ -3,7 +3,8 @@
45400  
45401  /* { dg-do assemble } */
45402  /* { dg-require-effective-target arm_neon_ok } */
45403 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45404 +/* { dg-options "-save-temps -O0" } */
45405 +/* { dg-add-options arm_neon } */
45406  
45407  #include "arm_neon.h"
45408  
45409 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c
45410 --- a/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c     2007-07-25 14:28:31.000000000 +0200
45411 +++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c     2010-01-25 09:50:29.445687421 +0100
45412 @@ -3,7 +3,8 @@
45413  
45414  /* { dg-do assemble } */
45415  /* { dg-require-effective-target arm_neon_ok } */
45416 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45417 +/* { dg-options "-save-temps -O0" } */
45418 +/* { dg-add-options arm_neon } */
45419  
45420  #include "arm_neon.h"
45421  
45422 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c
45423 --- a/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c     2007-07-25 14:28:31.000000000 +0200
45424 +++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c     2010-01-25 09:50:29.445687421 +0100
45425 @@ -3,7 +3,8 @@
45426  
45427  /* { dg-do assemble } */
45428  /* { dg-require-effective-target arm_neon_ok } */
45429 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45430 +/* { dg-options "-save-temps -O0" } */
45431 +/* { dg-add-options arm_neon } */
45432  
45433  #include "arm_neon.h"
45434  
45435 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c
45436 --- a/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c      2007-07-25 14:28:31.000000000 +0200
45437 +++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c      2010-01-25 09:50:29.445687421 +0100
45438 @@ -3,7 +3,8 @@
45439  
45440  /* { dg-do assemble } */
45441  /* { dg-require-effective-target arm_neon_ok } */
45442 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45443 +/* { dg-options "-save-temps -O0" } */
45444 +/* { dg-add-options arm_neon } */
45445  
45446  #include "arm_neon.h"
45447  
45448 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c
45449 --- a/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c     2007-07-25 14:28:31.000000000 +0200
45450 +++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c     2010-01-25 09:50:29.445687421 +0100
45451 @@ -3,7 +3,8 @@
45452  
45453  /* { dg-do assemble } */
45454  /* { dg-require-effective-target arm_neon_ok } */
45455 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45456 +/* { dg-options "-save-temps -O0" } */
45457 +/* { dg-add-options arm_neon } */
45458  
45459  #include "arm_neon.h"
45460  
45461 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c
45462 --- a/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c     2007-07-25 14:28:31.000000000 +0200
45463 +++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c     2010-01-25 09:50:29.445687421 +0100
45464 @@ -3,7 +3,8 @@
45465  
45466  /* { dg-do assemble } */
45467  /* { dg-require-effective-target arm_neon_ok } */
45468 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45469 +/* { dg-options "-save-temps -O0" } */
45470 +/* { dg-add-options arm_neon } */
45471  
45472  #include "arm_neon.h"
45473  
45474 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c
45475 --- a/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c     2007-07-25 14:28:31.000000000 +0200
45476 +++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c     2010-01-25 09:50:29.445687421 +0100
45477 @@ -3,7 +3,8 @@
45478  
45479  /* { dg-do assemble } */
45480  /* { dg-require-effective-target arm_neon_ok } */
45481 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45482 +/* { dg-options "-save-temps -O0" } */
45483 +/* { dg-add-options arm_neon } */
45484  
45485  #include "arm_neon.h"
45486  
45487 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c
45488 --- a/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c      2007-07-25 14:28:31.000000000 +0200
45489 +++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c      2010-01-25 09:50:29.445687421 +0100
45490 @@ -3,7 +3,8 @@
45491  
45492  /* { dg-do assemble } */
45493  /* { dg-require-effective-target arm_neon_ok } */
45494 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45495 +/* { dg-options "-save-temps -O0" } */
45496 +/* { dg-add-options arm_neon } */
45497  
45498  #include "arm_neon.h"
45499  
45500 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqadds16.c b/gcc/testsuite/gcc.target/arm/neon/vqadds16.c
45501 --- a/gcc/testsuite/gcc.target/arm/neon/vqadds16.c      2007-07-25 14:28:31.000000000 +0200
45502 +++ b/gcc/testsuite/gcc.target/arm/neon/vqadds16.c      2010-01-25 09:50:29.445687421 +0100
45503 @@ -3,7 +3,8 @@
45504  
45505  /* { dg-do assemble } */
45506  /* { dg-require-effective-target arm_neon_ok } */
45507 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45508 +/* { dg-options "-save-temps -O0" } */
45509 +/* { dg-add-options arm_neon } */
45510  
45511  #include "arm_neon.h"
45512  
45513 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqadds32.c b/gcc/testsuite/gcc.target/arm/neon/vqadds32.c
45514 --- a/gcc/testsuite/gcc.target/arm/neon/vqadds32.c      2007-07-25 14:28:31.000000000 +0200
45515 +++ b/gcc/testsuite/gcc.target/arm/neon/vqadds32.c      2010-01-25 09:50:29.445687421 +0100
45516 @@ -3,7 +3,8 @@
45517  
45518  /* { dg-do assemble } */
45519  /* { dg-require-effective-target arm_neon_ok } */
45520 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45521 +/* { dg-options "-save-temps -O0" } */
45522 +/* { dg-add-options arm_neon } */
45523  
45524  #include "arm_neon.h"
45525  
45526 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqadds64.c b/gcc/testsuite/gcc.target/arm/neon/vqadds64.c
45527 --- a/gcc/testsuite/gcc.target/arm/neon/vqadds64.c      2007-07-25 14:28:31.000000000 +0200
45528 +++ b/gcc/testsuite/gcc.target/arm/neon/vqadds64.c      2010-01-25 09:50:29.445687421 +0100
45529 @@ -3,7 +3,8 @@
45530  
45531  /* { dg-do assemble } */
45532  /* { dg-require-effective-target arm_neon_ok } */
45533 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45534 +/* { dg-options "-save-temps -O0" } */
45535 +/* { dg-add-options arm_neon } */
45536  
45537  #include "arm_neon.h"
45538  
45539 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqadds8.c b/gcc/testsuite/gcc.target/arm/neon/vqadds8.c
45540 --- a/gcc/testsuite/gcc.target/arm/neon/vqadds8.c       2007-07-25 14:28:31.000000000 +0200
45541 +++ b/gcc/testsuite/gcc.target/arm/neon/vqadds8.c       2010-01-25 09:50:29.445687421 +0100
45542 @@ -3,7 +3,8 @@
45543  
45544  /* { dg-do assemble } */
45545  /* { dg-require-effective-target arm_neon_ok } */
45546 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45547 +/* { dg-options "-save-temps -O0" } */
45548 +/* { dg-add-options arm_neon } */
45549  
45550  #include "arm_neon.h"
45551  
45552 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c b/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c
45553 --- a/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c      2007-07-25 14:28:31.000000000 +0200
45554 +++ b/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c      2010-01-25 09:50:29.445687421 +0100
45555 @@ -3,7 +3,8 @@
45556  
45557  /* { dg-do assemble } */
45558  /* { dg-require-effective-target arm_neon_ok } */
45559 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45560 +/* { dg-options "-save-temps -O0" } */
45561 +/* { dg-add-options arm_neon } */
45562  
45563  #include "arm_neon.h"
45564  
45565 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c b/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c
45566 --- a/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c      2007-07-25 14:28:31.000000000 +0200
45567 +++ b/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c      2010-01-25 09:50:29.445687421 +0100
45568 @@ -3,7 +3,8 @@
45569  
45570  /* { dg-do assemble } */
45571  /* { dg-require-effective-target arm_neon_ok } */
45572 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45573 +/* { dg-options "-save-temps -O0" } */
45574 +/* { dg-add-options arm_neon } */
45575  
45576  #include "arm_neon.h"
45577  
45578 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c b/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c
45579 --- a/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c      2007-07-25 14:28:31.000000000 +0200
45580 +++ b/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c      2010-01-25 09:50:29.445687421 +0100
45581 @@ -3,7 +3,8 @@
45582  
45583  /* { dg-do assemble } */
45584  /* { dg-require-effective-target arm_neon_ok } */
45585 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45586 +/* { dg-options "-save-temps -O0" } */
45587 +/* { dg-add-options arm_neon } */
45588  
45589  #include "arm_neon.h"
45590  
45591 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c b/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c
45592 --- a/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c       2007-07-25 14:28:31.000000000 +0200
45593 +++ b/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c       2010-01-25 09:50:29.445687421 +0100
45594 @@ -3,7 +3,8 @@
45595  
45596  /* { dg-do assemble } */
45597  /* { dg-require-effective-target arm_neon_ok } */
45598 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45599 +/* { dg-options "-save-temps -O0" } */
45600 +/* { dg-add-options arm_neon } */
45601  
45602  #include "arm_neon.h"
45603  
45604 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c
45605 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c       2007-07-25 14:28:31.000000000 +0200
45606 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c       2010-01-25 09:50:29.445687421 +0100
45607 @@ -3,7 +3,8 @@
45608  
45609  /* { dg-do assemble } */
45610  /* { dg-require-effective-target arm_neon_ok } */
45611 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45612 +/* { dg-options "-save-temps -O0" } */
45613 +/* { dg-add-options arm_neon } */
45614  
45615  #include "arm_neon.h"
45616  
45617 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c
45618 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c       2007-07-25 14:28:31.000000000 +0200
45619 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c       2010-01-25 09:50:29.445687421 +0100
45620 @@ -3,7 +3,8 @@
45621  
45622  /* { dg-do assemble } */
45623  /* { dg-require-effective-target arm_neon_ok } */
45624 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45625 +/* { dg-options "-save-temps -O0" } */
45626 +/* { dg-add-options arm_neon } */
45627  
45628  #include "arm_neon.h"
45629  
45630 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c
45631 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c  2007-07-25 14:28:31.000000000 +0200
45632 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c  2010-01-25 09:50:29.445687421 +0100
45633 @@ -3,7 +3,8 @@
45634  
45635  /* { dg-do assemble } */
45636  /* { dg-require-effective-target arm_neon_ok } */
45637 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45638 +/* { dg-options "-save-temps -O0" } */
45639 +/* { dg-add-options arm_neon } */
45640  
45641  #include "arm_neon.h"
45642  
45643 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c
45644 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c  2007-07-25 14:28:31.000000000 +0200
45645 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c  2010-01-25 09:50:29.445687421 +0100
45646 @@ -3,7 +3,8 @@
45647  
45648  /* { dg-do assemble } */
45649  /* { dg-require-effective-target arm_neon_ok } */
45650 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45651 +/* { dg-options "-save-temps -O0" } */
45652 +/* { dg-add-options arm_neon } */
45653  
45654  #include "arm_neon.h"
45655  
45656 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c
45657 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c    2007-07-25 14:28:31.000000000 +0200
45658 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c    2010-01-25 09:50:29.445687421 +0100
45659 @@ -3,7 +3,8 @@
45660  
45661  /* { dg-do assemble } */
45662  /* { dg-require-effective-target arm_neon_ok } */
45663 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45664 +/* { dg-options "-save-temps -O0" } */
45665 +/* { dg-add-options arm_neon } */
45666  
45667  #include "arm_neon.h"
45668  
45669 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c
45670 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c    2007-07-25 14:28:31.000000000 +0200
45671 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c    2010-01-25 09:50:29.445687421 +0100
45672 @@ -3,7 +3,8 @@
45673  
45674  /* { dg-do assemble } */
45675  /* { dg-require-effective-target arm_neon_ok } */
45676 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45677 +/* { dg-options "-save-temps -O0" } */
45678 +/* { dg-add-options arm_neon } */
45679  
45680  #include "arm_neon.h"
45681  
45682 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c
45683 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c       2007-07-25 14:28:31.000000000 +0200
45684 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c       2010-01-25 09:50:29.445687421 +0100
45685 @@ -3,7 +3,8 @@
45686  
45687  /* { dg-do assemble } */
45688  /* { dg-require-effective-target arm_neon_ok } */
45689 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45690 +/* { dg-options "-save-temps -O0" } */
45691 +/* { dg-add-options arm_neon } */
45692  
45693  #include "arm_neon.h"
45694  
45695 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c
45696 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c       2007-07-25 14:28:31.000000000 +0200
45697 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c       2010-01-25 09:50:29.445687421 +0100
45698 @@ -3,7 +3,8 @@
45699  
45700  /* { dg-do assemble } */
45701  /* { dg-require-effective-target arm_neon_ok } */
45702 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45703 +/* { dg-options "-save-temps -O0" } */
45704 +/* { dg-add-options arm_neon } */
45705  
45706  #include "arm_neon.h"
45707  
45708 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c
45709 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c  2007-07-25 14:28:31.000000000 +0200
45710 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c  2010-01-25 09:50:29.445687421 +0100
45711 @@ -3,7 +3,8 @@
45712  
45713  /* { dg-do assemble } */
45714  /* { dg-require-effective-target arm_neon_ok } */
45715 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45716 +/* { dg-options "-save-temps -O0" } */
45717 +/* { dg-add-options arm_neon } */
45718  
45719  #include "arm_neon.h"
45720  
45721 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c
45722 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c  2007-07-25 14:28:31.000000000 +0200
45723 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c  2010-01-25 09:50:29.445687421 +0100
45724 @@ -3,7 +3,8 @@
45725  
45726  /* { dg-do assemble } */
45727  /* { dg-require-effective-target arm_neon_ok } */
45728 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45729 +/* { dg-options "-save-temps -O0" } */
45730 +/* { dg-add-options arm_neon } */
45731  
45732  #include "arm_neon.h"
45733  
45734 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c
45735 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c    2007-07-25 14:28:31.000000000 +0200
45736 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c    2010-01-25 09:50:29.445687421 +0100
45737 @@ -3,7 +3,8 @@
45738  
45739  /* { dg-do assemble } */
45740  /* { dg-require-effective-target arm_neon_ok } */
45741 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45742 +/* { dg-options "-save-temps -O0" } */
45743 +/* { dg-add-options arm_neon } */
45744  
45745  #include "arm_neon.h"
45746  
45747 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c
45748 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c    2007-07-25 14:28:31.000000000 +0200
45749 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c    2010-01-25 09:50:29.445687421 +0100
45750 @@ -3,7 +3,8 @@
45751  
45752  /* { dg-do assemble } */
45753  /* { dg-require-effective-target arm_neon_ok } */
45754 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45755 +/* { dg-options "-save-temps -O0" } */
45756 +/* { dg-add-options arm_neon } */
45757  
45758  #include "arm_neon.h"
45759  
45760 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c
45761 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c       2007-07-25 14:28:31.000000000 +0200
45762 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c       2010-01-25 09:50:29.445687421 +0100
45763 @@ -3,7 +3,8 @@
45764  
45765  /* { dg-do assemble } */
45766  /* { dg-require-effective-target arm_neon_ok } */
45767 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45768 +/* { dg-options "-save-temps -O0" } */
45769 +/* { dg-add-options arm_neon } */
45770  
45771  #include "arm_neon.h"
45772  
45773 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c
45774 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c       2007-07-25 14:28:31.000000000 +0200
45775 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c       2010-01-25 09:50:29.445687421 +0100
45776 @@ -3,7 +3,8 @@
45777  
45778  /* { dg-do assemble } */
45779  /* { dg-require-effective-target arm_neon_ok } */
45780 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45781 +/* { dg-options "-save-temps -O0" } */
45782 +/* { dg-add-options arm_neon } */
45783  
45784  #include "arm_neon.h"
45785  
45786 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c
45787 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c  2007-07-25 14:28:31.000000000 +0200
45788 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c  2010-01-25 09:50:29.445687421 +0100
45789 @@ -3,7 +3,8 @@
45790  
45791  /* { dg-do assemble } */
45792  /* { dg-require-effective-target arm_neon_ok } */
45793 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45794 +/* { dg-options "-save-temps -O0" } */
45795 +/* { dg-add-options arm_neon } */
45796  
45797  #include "arm_neon.h"
45798  
45799 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c
45800 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c  2007-07-25 14:28:31.000000000 +0200
45801 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c  2010-01-25 09:50:29.445687421 +0100
45802 @@ -3,7 +3,8 @@
45803  
45804  /* { dg-do assemble } */
45805  /* { dg-require-effective-target arm_neon_ok } */
45806 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45807 +/* { dg-options "-save-temps -O0" } */
45808 +/* { dg-add-options arm_neon } */
45809  
45810  #include "arm_neon.h"
45811  
45812 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c
45813 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c      2007-07-25 14:28:31.000000000 +0200
45814 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c      2010-01-25 09:50:29.445687421 +0100
45815 @@ -3,7 +3,8 @@
45816  
45817  /* { dg-do assemble } */
45818  /* { dg-require-effective-target arm_neon_ok } */
45819 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45820 +/* { dg-options "-save-temps -O0" } */
45821 +/* { dg-add-options arm_neon } */
45822  
45823  #include "arm_neon.h"
45824  
45825 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c
45826 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c      2007-07-25 14:28:31.000000000 +0200
45827 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c      2010-01-25 09:50:29.445687421 +0100
45828 @@ -3,7 +3,8 @@
45829  
45830  /* { dg-do assemble } */
45831  /* { dg-require-effective-target arm_neon_ok } */
45832 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45833 +/* { dg-options "-save-temps -O0" } */
45834 +/* { dg-add-options arm_neon } */
45835  
45836  #include "arm_neon.h"
45837  
45838 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c
45839 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c 2007-07-25 14:28:31.000000000 +0200
45840 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c 2010-01-25 09:50:29.445687421 +0100
45841 @@ -3,7 +3,8 @@
45842  
45843  /* { dg-do assemble } */
45844  /* { dg-require-effective-target arm_neon_ok } */
45845 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45846 +/* { dg-options "-save-temps -O0" } */
45847 +/* { dg-add-options arm_neon } */
45848  
45849  #include "arm_neon.h"
45850  
45851 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c
45852 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c 2007-07-25 14:28:31.000000000 +0200
45853 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c 2010-01-25 09:50:29.445687421 +0100
45854 @@ -3,7 +3,8 @@
45855  
45856  /* { dg-do assemble } */
45857  /* { dg-require-effective-target arm_neon_ok } */
45858 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45859 +/* { dg-options "-save-temps -O0" } */
45860 +/* { dg-add-options arm_neon } */
45861  
45862  #include "arm_neon.h"
45863  
45864 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c
45865 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c   2007-07-25 14:28:31.000000000 +0200
45866 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c   2010-01-25 09:50:29.445687421 +0100
45867 @@ -3,7 +3,8 @@
45868  
45869  /* { dg-do assemble } */
45870  /* { dg-require-effective-target arm_neon_ok } */
45871 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45872 +/* { dg-options "-save-temps -O0" } */
45873 +/* { dg-add-options arm_neon } */
45874  
45875  #include "arm_neon.h"
45876  
45877 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c
45878 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c   2007-07-25 14:28:31.000000000 +0200
45879 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c   2010-01-25 09:50:29.445687421 +0100
45880 @@ -3,7 +3,8 @@
45881  
45882  /* { dg-do assemble } */
45883  /* { dg-require-effective-target arm_neon_ok } */
45884 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45885 +/* { dg-options "-save-temps -O0" } */
45886 +/* { dg-add-options arm_neon } */
45887  
45888  #include "arm_neon.h"
45889  
45890 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c
45891 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c    2007-07-25 14:28:31.000000000 +0200
45892 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c    2010-01-25 09:50:29.445687421 +0100
45893 @@ -3,7 +3,8 @@
45894  
45895  /* { dg-do assemble } */
45896  /* { dg-require-effective-target arm_neon_ok } */
45897 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45898 +/* { dg-options "-save-temps -O0" } */
45899 +/* { dg-add-options arm_neon } */
45900  
45901  #include "arm_neon.h"
45902  
45903 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c
45904 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c    2007-07-25 14:28:31.000000000 +0200
45905 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c    2010-01-25 09:50:29.445687421 +0100
45906 @@ -3,7 +3,8 @@
45907  
45908  /* { dg-do assemble } */
45909  /* { dg-require-effective-target arm_neon_ok } */
45910 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45911 +/* { dg-options "-save-temps -O0" } */
45912 +/* { dg-add-options arm_neon } */
45913  
45914  #include "arm_neon.h"
45915  
45916 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c
45917 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c       2007-07-25 14:28:31.000000000 +0200
45918 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c       2010-01-25 09:50:29.445687421 +0100
45919 @@ -3,7 +3,8 @@
45920  
45921  /* { dg-do assemble } */
45922  /* { dg-require-effective-target arm_neon_ok } */
45923 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45924 +/* { dg-options "-save-temps -O0" } */
45925 +/* { dg-add-options arm_neon } */
45926  
45927  #include "arm_neon.h"
45928  
45929 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c
45930 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c       2007-07-25 14:28:31.000000000 +0200
45931 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c       2010-01-25 09:50:29.445687421 +0100
45932 @@ -3,7 +3,8 @@
45933  
45934  /* { dg-do assemble } */
45935  /* { dg-require-effective-target arm_neon_ok } */
45936 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45937 +/* { dg-options "-save-temps -O0" } */
45938 +/* { dg-add-options arm_neon } */
45939  
45940  #include "arm_neon.h"
45941  
45942 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c
45943 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c  2007-07-25 14:28:31.000000000 +0200
45944 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c  2010-01-25 09:50:29.445687421 +0100
45945 @@ -3,7 +3,8 @@
45946  
45947  /* { dg-do assemble } */
45948  /* { dg-require-effective-target arm_neon_ok } */
45949 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45950 +/* { dg-options "-save-temps -O0" } */
45951 +/* { dg-add-options arm_neon } */
45952  
45953  #include "arm_neon.h"
45954  
45955 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c
45956 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c  2007-07-25 14:28:31.000000000 +0200
45957 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c  2010-01-25 09:50:29.445687421 +0100
45958 @@ -3,7 +3,8 @@
45959  
45960  /* { dg-do assemble } */
45961  /* { dg-require-effective-target arm_neon_ok } */
45962 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45963 +/* { dg-options "-save-temps -O0" } */
45964 +/* { dg-add-options arm_neon } */
45965  
45966  #include "arm_neon.h"
45967  
45968 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c
45969 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c    2007-07-25 14:28:31.000000000 +0200
45970 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c    2010-01-25 09:50:29.445687421 +0100
45971 @@ -3,7 +3,8 @@
45972  
45973  /* { dg-do assemble } */
45974  /* { dg-require-effective-target arm_neon_ok } */
45975 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45976 +/* { dg-options "-save-temps -O0" } */
45977 +/* { dg-add-options arm_neon } */
45978  
45979  #include "arm_neon.h"
45980  
45981 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c
45982 --- a/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c    2007-07-25 14:28:31.000000000 +0200
45983 +++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c    2010-01-25 09:50:29.445687421 +0100
45984 @@ -3,7 +3,8 @@
45985  
45986  /* { dg-do assemble } */
45987  /* { dg-require-effective-target arm_neon_ok } */
45988 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
45989 +/* { dg-options "-save-temps -O0" } */
45990 +/* { dg-add-options arm_neon } */
45991  
45992  #include "arm_neon.h"
45993  
45994 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c b/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c
45995 --- a/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c     2007-07-25 14:28:31.000000000 +0200
45996 +++ b/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c     2010-01-25 09:50:29.445687421 +0100
45997 @@ -3,7 +3,8 @@
45998  
45999  /* { dg-do assemble } */
46000  /* { dg-require-effective-target arm_neon_ok } */
46001 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46002 +/* { dg-options "-save-temps -O0" } */
46003 +/* { dg-add-options arm_neon } */
46004  
46005  #include "arm_neon.h"
46006  
46007 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c b/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c
46008 --- a/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c     2007-07-25 14:28:31.000000000 +0200
46009 +++ b/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c     2010-01-25 09:50:29.445687421 +0100
46010 @@ -3,7 +3,8 @@
46011  
46012  /* { dg-do assemble } */
46013  /* { dg-require-effective-target arm_neon_ok } */
46014 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46015 +/* { dg-options "-save-temps -O0" } */
46016 +/* { dg-add-options arm_neon } */
46017  
46018  #include "arm_neon.h"
46019  
46020 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c b/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c
46021 --- a/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c     2007-07-25 14:28:31.000000000 +0200
46022 +++ b/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c     2010-01-25 09:50:29.445687421 +0100
46023 @@ -3,7 +3,8 @@
46024  
46025  /* { dg-do assemble } */
46026  /* { dg-require-effective-target arm_neon_ok } */
46027 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46028 +/* { dg-options "-save-temps -O0" } */
46029 +/* { dg-add-options arm_neon } */
46030  
46031  #include "arm_neon.h"
46032  
46033 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c b/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c
46034 --- a/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c     2007-07-25 14:28:31.000000000 +0200
46035 +++ b/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c     2010-01-25 09:50:29.445687421 +0100
46036 @@ -3,7 +3,8 @@
46037  
46038  /* { dg-do assemble } */
46039  /* { dg-require-effective-target arm_neon_ok } */
46040 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46041 +/* { dg-options "-save-temps -O0" } */
46042 +/* { dg-add-options arm_neon } */
46043  
46044  #include "arm_neon.h"
46045  
46046 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c b/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c
46047 --- a/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c     2007-07-25 14:28:31.000000000 +0200
46048 +++ b/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c     2010-01-25 09:50:29.445687421 +0100
46049 @@ -3,7 +3,8 @@
46050  
46051  /* { dg-do assemble } */
46052  /* { dg-require-effective-target arm_neon_ok } */
46053 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46054 +/* { dg-options "-save-temps -O0" } */
46055 +/* { dg-add-options arm_neon } */
46056  
46057  #include "arm_neon.h"
46058  
46059 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c b/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c
46060 --- a/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c     2007-07-25 14:28:31.000000000 +0200
46061 +++ b/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c     2010-01-25 09:50:29.445687421 +0100
46062 @@ -3,7 +3,8 @@
46063  
46064  /* { dg-do assemble } */
46065  /* { dg-require-effective-target arm_neon_ok } */
46066 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46067 +/* { dg-options "-save-temps -O0" } */
46068 +/* { dg-add-options arm_neon } */
46069  
46070  #include "arm_neon.h"
46071  
46072 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c b/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c
46073 --- a/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c    2007-07-25 14:28:31.000000000 +0200
46074 +++ b/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c    2010-01-25 09:50:29.445687421 +0100
46075 @@ -3,7 +3,8 @@
46076  
46077  /* { dg-do assemble } */
46078  /* { dg-require-effective-target arm_neon_ok } */
46079 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46080 +/* { dg-options "-save-temps -O0" } */
46081 +/* { dg-add-options arm_neon } */
46082  
46083  #include "arm_neon.h"
46084  
46085 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c b/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c
46086 --- a/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c    2007-07-25 14:28:31.000000000 +0200
46087 +++ b/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c    2010-01-25 09:50:29.445687421 +0100
46088 @@ -3,7 +3,8 @@
46089  
46090  /* { dg-do assemble } */
46091  /* { dg-require-effective-target arm_neon_ok } */
46092 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46093 +/* { dg-options "-save-temps -O0" } */
46094 +/* { dg-add-options arm_neon } */
46095  
46096  #include "arm_neon.h"
46097  
46098 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c b/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c
46099 --- a/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c    2007-07-25 14:28:31.000000000 +0200
46100 +++ b/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c    2010-01-25 09:50:29.445687421 +0100
46101 @@ -3,7 +3,8 @@
46102  
46103  /* { dg-do assemble } */
46104  /* { dg-require-effective-target arm_neon_ok } */
46105 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46106 +/* { dg-options "-save-temps -O0" } */
46107 +/* { dg-add-options arm_neon } */
46108  
46109  #include "arm_neon.h"
46110  
46111 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c
46112 --- a/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c     2007-07-25 14:28:31.000000000 +0200
46113 +++ b/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c     2010-01-25 09:50:29.445687421 +0100
46114 @@ -3,7 +3,8 @@
46115  
46116  /* { dg-do assemble } */
46117  /* { dg-require-effective-target arm_neon_ok } */
46118 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46119 +/* { dg-options "-save-temps -O0" } */
46120 +/* { dg-add-options arm_neon } */
46121  
46122  #include "arm_neon.h"
46123  
46124 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c
46125 --- a/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c     2007-07-25 14:28:31.000000000 +0200
46126 +++ b/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c     2010-01-25 09:50:29.445687421 +0100
46127 @@ -3,7 +3,8 @@
46128  
46129  /* { dg-do assemble } */
46130  /* { dg-require-effective-target arm_neon_ok } */
46131 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46132 +/* { dg-options "-save-temps -O0" } */
46133 +/* { dg-add-options arm_neon } */
46134  
46135  #include "arm_neon.h"
46136  
46137 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c b/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c
46138 --- a/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c      2007-07-25 14:28:31.000000000 +0200
46139 +++ b/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c      2010-01-25 09:50:29.445687421 +0100
46140 @@ -3,7 +3,8 @@
46141  
46142  /* { dg-do assemble } */
46143  /* { dg-require-effective-target arm_neon_ok } */
46144 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46145 +/* { dg-options "-save-temps -O0" } */
46146 +/* { dg-add-options arm_neon } */
46147  
46148  #include "arm_neon.h"
46149  
46150 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c b/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c
46151 --- a/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c      2007-07-25 14:28:31.000000000 +0200
46152 +++ b/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c      2010-01-25 09:50:29.445687421 +0100
46153 @@ -3,7 +3,8 @@
46154  
46155  /* { dg-do assemble } */
46156  /* { dg-require-effective-target arm_neon_ok } */
46157 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46158 +/* { dg-options "-save-temps -O0" } */
46159 +/* { dg-add-options arm_neon } */
46160  
46161  #include "arm_neon.h"
46162  
46163 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c b/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c
46164 --- a/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c      2007-07-25 14:28:31.000000000 +0200
46165 +++ b/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c      2010-01-25 09:50:29.445687421 +0100
46166 @@ -3,7 +3,8 @@
46167  
46168  /* { dg-do assemble } */
46169  /* { dg-require-effective-target arm_neon_ok } */
46170 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46171 +/* { dg-options "-save-temps -O0" } */
46172 +/* { dg-add-options arm_neon } */
46173  
46174  #include "arm_neon.h"
46175  
46176 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c b/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c
46177 --- a/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c       2007-07-25 14:28:31.000000000 +0200
46178 +++ b/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c       2010-01-25 09:50:29.445687421 +0100
46179 @@ -3,7 +3,8 @@
46180  
46181  /* { dg-do assemble } */
46182  /* { dg-require-effective-target arm_neon_ok } */
46183 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46184 +/* { dg-options "-save-temps -O0" } */
46185 +/* { dg-add-options arm_neon } */
46186  
46187  #include "arm_neon.h"
46188  
46189 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c
46190 --- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c      2007-07-25 14:28:31.000000000 +0200
46191 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c      2010-01-25 09:50:29.445687421 +0100
46192 @@ -3,7 +3,8 @@
46193  
46194  /* { dg-do assemble } */
46195  /* { dg-require-effective-target arm_neon_ok } */
46196 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46197 +/* { dg-options "-save-temps -O0" } */
46198 +/* { dg-add-options arm_neon } */
46199  
46200  #include "arm_neon.h"
46201  
46202 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c
46203 --- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c      2007-07-25 14:28:31.000000000 +0200
46204 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c      2010-01-25 09:50:29.445687421 +0100
46205 @@ -3,7 +3,8 @@
46206  
46207  /* { dg-do assemble } */
46208  /* { dg-require-effective-target arm_neon_ok } */
46209 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46210 +/* { dg-options "-save-temps -O0" } */
46211 +/* { dg-add-options arm_neon } */
46212  
46213  #include "arm_neon.h"
46214  
46215 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c
46216 --- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c 2007-07-25 14:28:31.000000000 +0200
46217 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c 2010-01-25 09:50:29.445687421 +0100
46218 @@ -3,7 +3,8 @@
46219  
46220  /* { dg-do assemble } */
46221  /* { dg-require-effective-target arm_neon_ok } */
46222 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46223 +/* { dg-options "-save-temps -O0" } */
46224 +/* { dg-add-options arm_neon } */
46225  
46226  #include "arm_neon.h"
46227  
46228 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c
46229 --- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c 2007-07-25 14:28:31.000000000 +0200
46230 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c 2010-01-25 09:50:29.445687421 +0100
46231 @@ -3,7 +3,8 @@
46232  
46233  /* { dg-do assemble } */
46234  /* { dg-require-effective-target arm_neon_ok } */
46235 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46236 +/* { dg-options "-save-temps -O0" } */
46237 +/* { dg-add-options arm_neon } */
46238  
46239  #include "arm_neon.h"
46240  
46241 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c
46242 --- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c     2007-07-25 14:28:31.000000000 +0200
46243 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c     2010-01-25 09:50:29.445687421 +0100
46244 @@ -3,7 +3,8 @@
46245  
46246  /* { dg-do assemble } */
46247  /* { dg-require-effective-target arm_neon_ok } */
46248 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46249 +/* { dg-options "-save-temps -O0" } */
46250 +/* { dg-add-options arm_neon } */
46251  
46252  #include "arm_neon.h"
46253  
46254 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c
46255 --- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c     2007-07-25 14:28:31.000000000 +0200
46256 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c     2010-01-25 09:50:29.445687421 +0100
46257 @@ -3,7 +3,8 @@
46258  
46259  /* { dg-do assemble } */
46260  /* { dg-require-effective-target arm_neon_ok } */
46261 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46262 +/* { dg-options "-save-temps -O0" } */
46263 +/* { dg-add-options arm_neon } */
46264  
46265  #include "arm_neon.h"
46266  
46267 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c
46268 --- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c        2007-07-25 14:28:31.000000000 +0200
46269 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c        2010-01-25 09:50:29.445687421 +0100
46270 @@ -3,7 +3,8 @@
46271  
46272  /* { dg-do assemble } */
46273  /* { dg-require-effective-target arm_neon_ok } */
46274 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46275 +/* { dg-options "-save-temps -O0" } */
46276 +/* { dg-add-options arm_neon } */
46277  
46278  #include "arm_neon.h"
46279  
46280 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c
46281 --- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c        2007-07-25 14:28:31.000000000 +0200
46282 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c        2010-01-25 09:50:29.445687421 +0100
46283 @@ -3,7 +3,8 @@
46284  
46285  /* { dg-do assemble } */
46286  /* { dg-require-effective-target arm_neon_ok } */
46287 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46288 +/* { dg-options "-save-temps -O0" } */
46289 +/* { dg-add-options arm_neon } */
46290  
46291  #include "arm_neon.h"
46292  
46293 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c
46294 --- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c  2007-07-25 14:28:31.000000000 +0200
46295 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c  2010-01-25 09:50:29.445687421 +0100
46296 @@ -3,7 +3,8 @@
46297  
46298  /* { dg-do assemble } */
46299  /* { dg-require-effective-target arm_neon_ok } */
46300 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46301 +/* { dg-options "-save-temps -O0" } */
46302 +/* { dg-add-options arm_neon } */
46303  
46304  #include "arm_neon.h"
46305  
46306 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c
46307 --- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c  2007-07-25 14:28:31.000000000 +0200
46308 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c  2010-01-25 09:50:29.455686248 +0100
46309 @@ -3,7 +3,8 @@
46310  
46311  /* { dg-do assemble } */
46312  /* { dg-require-effective-target arm_neon_ok } */
46313 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46314 +/* { dg-options "-save-temps -O0" } */
46315 +/* { dg-add-options arm_neon } */
46316  
46317  #include "arm_neon.h"
46318  
46319 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c
46320 --- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c   2007-07-25 14:28:31.000000000 +0200
46321 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c   2010-01-25 09:50:29.455686248 +0100
46322 @@ -3,7 +3,8 @@
46323  
46324  /* { dg-do assemble } */
46325  /* { dg-require-effective-target arm_neon_ok } */
46326 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46327 +/* { dg-options "-save-temps -O0" } */
46328 +/* { dg-add-options arm_neon } */
46329  
46330  #include "arm_neon.h"
46331  
46332 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c
46333 --- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c   2007-07-25 14:28:31.000000000 +0200
46334 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c   2010-01-25 09:50:29.455686248 +0100
46335 @@ -3,7 +3,8 @@
46336  
46337  /* { dg-do assemble } */
46338  /* { dg-require-effective-target arm_neon_ok } */
46339 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46340 +/* { dg-options "-save-temps -O0" } */
46341 +/* { dg-add-options arm_neon } */
46342  
46343  #include "arm_neon.h"
46344  
46345 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c
46346 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c    2007-07-25 14:28:31.000000000 +0200
46347 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c    2010-01-25 09:50:29.455686248 +0100
46348 @@ -3,7 +3,8 @@
46349  
46350  /* { dg-do assemble } */
46351  /* { dg-require-effective-target arm_neon_ok } */
46352 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46353 +/* { dg-options "-save-temps -O0" } */
46354 +/* { dg-add-options arm_neon } */
46355  
46356  #include "arm_neon.h"
46357  
46358 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c
46359 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c    2007-07-25 14:28:31.000000000 +0200
46360 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c    2010-01-25 09:50:29.455686248 +0100
46361 @@ -3,7 +3,8 @@
46362  
46363  /* { dg-do assemble } */
46364  /* { dg-require-effective-target arm_neon_ok } */
46365 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46366 +/* { dg-options "-save-temps -O0" } */
46367 +/* { dg-add-options arm_neon } */
46368  
46369  #include "arm_neon.h"
46370  
46371 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c
46372 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c    2007-07-25 14:28:31.000000000 +0200
46373 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c    2010-01-25 09:50:29.455686248 +0100
46374 @@ -3,7 +3,8 @@
46375  
46376  /* { dg-do assemble } */
46377  /* { dg-require-effective-target arm_neon_ok } */
46378 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46379 +/* { dg-options "-save-temps -O0" } */
46380 +/* { dg-add-options arm_neon } */
46381  
46382  #include "arm_neon.h"
46383  
46384 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c
46385 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c     2007-07-25 14:28:31.000000000 +0200
46386 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c     2010-01-25 09:50:29.455686248 +0100
46387 @@ -3,7 +3,8 @@
46388  
46389  /* { dg-do assemble } */
46390  /* { dg-require-effective-target arm_neon_ok } */
46391 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46392 +/* { dg-options "-save-temps -O0" } */
46393 +/* { dg-add-options arm_neon } */
46394  
46395  #include "arm_neon.h"
46396  
46397 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c
46398 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c    2007-07-25 14:28:31.000000000 +0200
46399 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c    2010-01-25 09:50:29.455686248 +0100
46400 @@ -3,7 +3,8 @@
46401  
46402  /* { dg-do assemble } */
46403  /* { dg-require-effective-target arm_neon_ok } */
46404 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46405 +/* { dg-options "-save-temps -O0" } */
46406 +/* { dg-add-options arm_neon } */
46407  
46408  #include "arm_neon.h"
46409  
46410 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c
46411 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c    2007-07-25 14:28:31.000000000 +0200
46412 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c    2010-01-25 09:50:29.455686248 +0100
46413 @@ -3,7 +3,8 @@
46414  
46415  /* { dg-do assemble } */
46416  /* { dg-require-effective-target arm_neon_ok } */
46417 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46418 +/* { dg-options "-save-temps -O0" } */
46419 +/* { dg-add-options arm_neon } */
46420  
46421  #include "arm_neon.h"
46422  
46423 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c
46424 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c    2007-07-25 14:28:31.000000000 +0200
46425 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c    2010-01-25 09:50:29.455686248 +0100
46426 @@ -3,7 +3,8 @@
46427  
46428  /* { dg-do assemble } */
46429  /* { dg-require-effective-target arm_neon_ok } */
46430 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46431 +/* { dg-options "-save-temps -O0" } */
46432 +/* { dg-add-options arm_neon } */
46433  
46434  #include "arm_neon.h"
46435  
46436 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c
46437 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c     2007-07-25 14:28:31.000000000 +0200
46438 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c     2010-01-25 09:50:29.455686248 +0100
46439 @@ -3,7 +3,8 @@
46440  
46441  /* { dg-do assemble } */
46442  /* { dg-require-effective-target arm_neon_ok } */
46443 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46444 +/* { dg-options "-save-temps -O0" } */
46445 +/* { dg-add-options arm_neon } */
46446  
46447  #include "arm_neon.h"
46448  
46449 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c
46450 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c     2007-07-25 14:28:31.000000000 +0200
46451 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c     2010-01-25 09:50:29.455686248 +0100
46452 @@ -3,7 +3,8 @@
46453  
46454  /* { dg-do assemble } */
46455  /* { dg-require-effective-target arm_neon_ok } */
46456 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46457 +/* { dg-options "-save-temps -O0" } */
46458 +/* { dg-add-options arm_neon } */
46459  
46460  #include "arm_neon.h"
46461  
46462 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c
46463 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c     2007-07-25 14:28:31.000000000 +0200
46464 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c     2010-01-25 09:50:29.455686248 +0100
46465 @@ -3,7 +3,8 @@
46466  
46467  /* { dg-do assemble } */
46468  /* { dg-require-effective-target arm_neon_ok } */
46469 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46470 +/* { dg-options "-save-temps -O0" } */
46471 +/* { dg-add-options arm_neon } */
46472  
46473  #include "arm_neon.h"
46474  
46475 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c
46476 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c     2007-07-25 14:28:31.000000000 +0200
46477 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c     2010-01-25 09:50:29.455686248 +0100
46478 @@ -3,7 +3,8 @@
46479  
46480  /* { dg-do assemble } */
46481  /* { dg-require-effective-target arm_neon_ok } */
46482 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46483 +/* { dg-options "-save-temps -O0" } */
46484 +/* { dg-add-options arm_neon } */
46485  
46486  #include "arm_neon.h"
46487  
46488 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c b/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c
46489 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c      2007-07-25 14:28:31.000000000 +0200
46490 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c      2010-01-25 09:50:29.455686248 +0100
46491 @@ -3,7 +3,8 @@
46492  
46493  /* { dg-do assemble } */
46494  /* { dg-require-effective-target arm_neon_ok } */
46495 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46496 +/* { dg-options "-save-temps -O0" } */
46497 +/* { dg-add-options arm_neon } */
46498  
46499  #include "arm_neon.h"
46500  
46501 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c
46502 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c     2007-07-25 14:28:31.000000000 +0200
46503 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c     2010-01-25 09:50:29.455686248 +0100
46504 @@ -3,7 +3,8 @@
46505  
46506  /* { dg-do assemble } */
46507  /* { dg-require-effective-target arm_neon_ok } */
46508 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46509 +/* { dg-options "-save-temps -O0" } */
46510 +/* { dg-add-options arm_neon } */
46511  
46512  #include "arm_neon.h"
46513  
46514 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c
46515 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c     2007-07-25 14:28:31.000000000 +0200
46516 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c     2010-01-25 09:50:29.455686248 +0100
46517 @@ -3,7 +3,8 @@
46518  
46519  /* { dg-do assemble } */
46520  /* { dg-require-effective-target arm_neon_ok } */
46521 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46522 +/* { dg-options "-save-temps -O0" } */
46523 +/* { dg-add-options arm_neon } */
46524  
46525  #include "arm_neon.h"
46526  
46527 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c
46528 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c     2007-07-25 14:28:31.000000000 +0200
46529 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c     2010-01-25 09:50:29.455686248 +0100
46530 @@ -3,7 +3,8 @@
46531  
46532  /* { dg-do assemble } */
46533  /* { dg-require-effective-target arm_neon_ok } */
46534 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46535 +/* { dg-options "-save-temps -O0" } */
46536 +/* { dg-add-options arm_neon } */
46537  
46538  #include "arm_neon.h"
46539  
46540 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c
46541 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c      2007-07-25 14:28:31.000000000 +0200
46542 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c      2010-01-25 09:50:29.455686248 +0100
46543 @@ -3,7 +3,8 @@
46544  
46545  /* { dg-do assemble } */
46546  /* { dg-require-effective-target arm_neon_ok } */
46547 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46548 +/* { dg-options "-save-temps -O0" } */
46549 +/* { dg-add-options arm_neon } */
46550  
46551  #include "arm_neon.h"
46552  
46553 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c
46554 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c  2007-07-25 14:28:31.000000000 +0200
46555 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c  2010-01-25 09:50:29.455686248 +0100
46556 @@ -3,7 +3,8 @@
46557  
46558  /* { dg-do assemble } */
46559  /* { dg-require-effective-target arm_neon_ok } */
46560 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46561 +/* { dg-options "-save-temps -O0" } */
46562 +/* { dg-add-options arm_neon } */
46563  
46564  #include "arm_neon.h"
46565  
46566 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c
46567 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c  2007-07-25 14:28:31.000000000 +0200
46568 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c  2010-01-25 09:50:29.455686248 +0100
46569 @@ -3,7 +3,8 @@
46570  
46571  /* { dg-do assemble } */
46572  /* { dg-require-effective-target arm_neon_ok } */
46573 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46574 +/* { dg-options "-save-temps -O0" } */
46575 +/* { dg-add-options arm_neon } */
46576  
46577  #include "arm_neon.h"
46578  
46579 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c
46580 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c  2007-07-25 14:28:31.000000000 +0200
46581 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c  2010-01-25 09:50:29.455686248 +0100
46582 @@ -3,7 +3,8 @@
46583  
46584  /* { dg-do assemble } */
46585  /* { dg-require-effective-target arm_neon_ok } */
46586 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46587 +/* { dg-options "-save-temps -O0" } */
46588 +/* { dg-add-options arm_neon } */
46589  
46590  #include "arm_neon.h"
46591  
46592 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c
46593 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c  2007-07-25 14:28:31.000000000 +0200
46594 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c  2010-01-25 09:50:29.455686248 +0100
46595 @@ -3,7 +3,8 @@
46596  
46597  /* { dg-do assemble } */
46598  /* { dg-require-effective-target arm_neon_ok } */
46599 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46600 +/* { dg-options "-save-temps -O0" } */
46601 +/* { dg-add-options arm_neon } */
46602  
46603  #include "arm_neon.h"
46604  
46605 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c
46606 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c  2007-07-25 14:28:31.000000000 +0200
46607 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c  2010-01-25 09:50:29.455686248 +0100
46608 @@ -3,7 +3,8 @@
46609  
46610  /* { dg-do assemble } */
46611  /* { dg-require-effective-target arm_neon_ok } */
46612 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46613 +/* { dg-options "-save-temps -O0" } */
46614 +/* { dg-add-options arm_neon } */
46615  
46616  #include "arm_neon.h"
46617  
46618 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c
46619 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c  2007-07-25 14:28:31.000000000 +0200
46620 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c  2010-01-25 09:50:29.455686248 +0100
46621 @@ -3,7 +3,8 @@
46622  
46623  /* { dg-do assemble } */
46624  /* { dg-require-effective-target arm_neon_ok } */
46625 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46626 +/* { dg-options "-save-temps -O0" } */
46627 +/* { dg-add-options arm_neon } */
46628  
46629  #include "arm_neon.h"
46630  
46631 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c
46632 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c 2007-07-25 14:28:31.000000000 +0200
46633 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c 2010-01-25 09:50:29.455686248 +0100
46634 @@ -3,7 +3,8 @@
46635  
46636  /* { dg-do assemble } */
46637  /* { dg-require-effective-target arm_neon_ok } */
46638 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46639 +/* { dg-options "-save-temps -O0" } */
46640 +/* { dg-add-options arm_neon } */
46641  
46642  #include "arm_neon.h"
46643  
46644 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c
46645 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c 2007-07-25 14:28:31.000000000 +0200
46646 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c 2010-01-25 09:50:29.455686248 +0100
46647 @@ -3,7 +3,8 @@
46648  
46649  /* { dg-do assemble } */
46650  /* { dg-require-effective-target arm_neon_ok } */
46651 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46652 +/* { dg-options "-save-temps -O0" } */
46653 +/* { dg-add-options arm_neon } */
46654  
46655  #include "arm_neon.h"
46656  
46657 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c
46658 --- a/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c 2007-07-25 14:28:31.000000000 +0200
46659 +++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c 2010-01-25 09:50:29.455686248 +0100
46660 @@ -3,7 +3,8 @@
46661  
46662  /* { dg-do assemble } */
46663  /* { dg-require-effective-target arm_neon_ok } */
46664 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46665 +/* { dg-options "-save-temps -O0" } */
46666 +/* { dg-add-options arm_neon } */
46667  
46668  #include "arm_neon.h"
46669  
46670 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c
46671 --- a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c    2007-07-25 14:28:31.000000000 +0200
46672 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c    2010-01-25 09:50:29.455686248 +0100
46673 @@ -3,7 +3,8 @@
46674  
46675  /* { dg-do assemble } */
46676  /* { dg-require-effective-target arm_neon_ok } */
46677 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46678 +/* { dg-options "-save-temps -O0" } */
46679 +/* { dg-add-options arm_neon } */
46680  
46681  #include "arm_neon.h"
46682  
46683 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c
46684 --- a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c    2007-07-25 14:28:31.000000000 +0200
46685 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c    2010-01-25 09:50:29.455686248 +0100
46686 @@ -3,7 +3,8 @@
46687  
46688  /* { dg-do assemble } */
46689  /* { dg-require-effective-target arm_neon_ok } */
46690 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46691 +/* { dg-options "-save-temps -O0" } */
46692 +/* { dg-add-options arm_neon } */
46693  
46694  #include "arm_neon.h"
46695  
46696 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c
46697 --- a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c    2007-07-25 14:28:31.000000000 +0200
46698 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c    2010-01-25 09:50:29.455686248 +0100
46699 @@ -3,7 +3,8 @@
46700  
46701  /* { dg-do assemble } */
46702  /* { dg-require-effective-target arm_neon_ok } */
46703 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46704 +/* { dg-options "-save-temps -O0" } */
46705 +/* { dg-add-options arm_neon } */
46706  
46707  #include "arm_neon.h"
46708  
46709 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c
46710 --- a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c     2007-07-25 14:28:31.000000000 +0200
46711 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c     2010-01-25 09:50:29.455686248 +0100
46712 @@ -3,7 +3,8 @@
46713  
46714  /* { dg-do assemble } */
46715  /* { dg-require-effective-target arm_neon_ok } */
46716 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46717 +/* { dg-options "-save-temps -O0" } */
46718 +/* { dg-add-options arm_neon } */
46719  
46720  #include "arm_neon.h"
46721  
46722 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c
46723 --- a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c    2007-07-25 14:28:31.000000000 +0200
46724 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c    2010-01-25 09:50:29.455686248 +0100
46725 @@ -3,7 +3,8 @@
46726  
46727  /* { dg-do assemble } */
46728  /* { dg-require-effective-target arm_neon_ok } */
46729 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46730 +/* { dg-options "-save-temps -O0" } */
46731 +/* { dg-add-options arm_neon } */
46732  
46733  #include "arm_neon.h"
46734  
46735 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c
46736 --- a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c    2007-07-25 14:28:31.000000000 +0200
46737 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c    2010-01-25 09:50:29.455686248 +0100
46738 @@ -3,7 +3,8 @@
46739  
46740  /* { dg-do assemble } */
46741  /* { dg-require-effective-target arm_neon_ok } */
46742 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46743 +/* { dg-options "-save-temps -O0" } */
46744 +/* { dg-add-options arm_neon } */
46745  
46746  #include "arm_neon.h"
46747  
46748 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c
46749 --- a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c    2007-07-25 14:28:31.000000000 +0200
46750 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c    2010-01-25 09:50:29.455686248 +0100
46751 @@ -3,7 +3,8 @@
46752  
46753  /* { dg-do assemble } */
46754  /* { dg-require-effective-target arm_neon_ok } */
46755 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46756 +/* { dg-options "-save-temps -O0" } */
46757 +/* { dg-add-options arm_neon } */
46758  
46759  #include "arm_neon.h"
46760  
46761 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c
46762 --- a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c     2007-07-25 14:28:31.000000000 +0200
46763 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c     2010-01-25 09:50:29.455686248 +0100
46764 @@ -3,7 +3,8 @@
46765  
46766  /* { dg-do assemble } */
46767  /* { dg-require-effective-target arm_neon_ok } */
46768 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46769 +/* { dg-options "-save-temps -O0" } */
46770 +/* { dg-add-options arm_neon } */
46771  
46772  #include "arm_neon.h"
46773  
46774 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c
46775 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
46776 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c   2010-01-25 09:50:29.455686248 +0100
46777 @@ -3,7 +3,8 @@
46778  
46779  /* { dg-do assemble } */
46780  /* { dg-require-effective-target arm_neon_ok } */
46781 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46782 +/* { dg-options "-save-temps -O0" } */
46783 +/* { dg-add-options arm_neon } */
46784  
46785  #include "arm_neon.h"
46786  
46787 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c
46788 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
46789 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c   2010-01-25 09:50:29.455686248 +0100
46790 @@ -3,7 +3,8 @@
46791  
46792  /* { dg-do assemble } */
46793  /* { dg-require-effective-target arm_neon_ok } */
46794 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46795 +/* { dg-options "-save-temps -O0" } */
46796 +/* { dg-add-options arm_neon } */
46797  
46798  #include "arm_neon.h"
46799  
46800 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c
46801 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c   2007-07-25 14:28:31.000000000 +0200
46802 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c   2010-01-25 09:50:29.455686248 +0100
46803 @@ -3,7 +3,8 @@
46804  
46805  /* { dg-do assemble } */
46806  /* { dg-require-effective-target arm_neon_ok } */
46807 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46808 +/* { dg-options "-save-temps -O0" } */
46809 +/* { dg-add-options arm_neon } */
46810  
46811  #include "arm_neon.h"
46812  
46813 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c
46814 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c    2007-07-25 14:28:31.000000000 +0200
46815 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c    2010-01-25 09:50:29.455686248 +0100
46816 @@ -3,7 +3,8 @@
46817  
46818  /* { dg-do assemble } */
46819  /* { dg-require-effective-target arm_neon_ok } */
46820 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46821 +/* { dg-options "-save-temps -O0" } */
46822 +/* { dg-add-options arm_neon } */
46823  
46824  #include "arm_neon.h"
46825  
46826 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c
46827 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
46828 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c   2010-01-25 09:50:29.455686248 +0100
46829 @@ -3,7 +3,8 @@
46830  
46831  /* { dg-do assemble } */
46832  /* { dg-require-effective-target arm_neon_ok } */
46833 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46834 +/* { dg-options "-save-temps -O0" } */
46835 +/* { dg-add-options arm_neon } */
46836  
46837  #include "arm_neon.h"
46838  
46839 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c
46840 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
46841 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c   2010-01-25 09:50:29.455686248 +0100
46842 @@ -3,7 +3,8 @@
46843  
46844  /* { dg-do assemble } */
46845  /* { dg-require-effective-target arm_neon_ok } */
46846 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46847 +/* { dg-options "-save-temps -O0" } */
46848 +/* { dg-add-options arm_neon } */
46849  
46850  #include "arm_neon.h"
46851  
46852 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c
46853 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c   2007-07-25 14:28:31.000000000 +0200
46854 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c   2010-01-25 09:50:29.455686248 +0100
46855 @@ -3,7 +3,8 @@
46856  
46857  /* { dg-do assemble } */
46858  /* { dg-require-effective-target arm_neon_ok } */
46859 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46860 +/* { dg-options "-save-temps -O0" } */
46861 +/* { dg-add-options arm_neon } */
46862  
46863  #include "arm_neon.h"
46864  
46865 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c
46866 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c    2007-07-25 14:28:31.000000000 +0200
46867 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c    2010-01-25 09:50:29.455686248 +0100
46868 @@ -3,7 +3,8 @@
46869  
46870  /* { dg-do assemble } */
46871  /* { dg-require-effective-target arm_neon_ok } */
46872 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46873 +/* { dg-options "-save-temps -O0" } */
46874 +/* { dg-add-options arm_neon } */
46875  
46876  #include "arm_neon.h"
46877  
46878 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c
46879 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c     2007-07-25 14:28:31.000000000 +0200
46880 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c     2010-01-25 09:50:29.455686248 +0100
46881 @@ -3,7 +3,8 @@
46882  
46883  /* { dg-do assemble } */
46884  /* { dg-require-effective-target arm_neon_ok } */
46885 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46886 +/* { dg-options "-save-temps -O0" } */
46887 +/* { dg-add-options arm_neon } */
46888  
46889  #include "arm_neon.h"
46890  
46891 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c
46892 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c     2007-07-25 14:28:31.000000000 +0200
46893 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c     2010-01-25 09:50:29.455686248 +0100
46894 @@ -3,7 +3,8 @@
46895  
46896  /* { dg-do assemble } */
46897  /* { dg-require-effective-target arm_neon_ok } */
46898 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46899 +/* { dg-options "-save-temps -O0" } */
46900 +/* { dg-add-options arm_neon } */
46901  
46902  #include "arm_neon.h"
46903  
46904 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c
46905 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c     2007-07-25 14:28:31.000000000 +0200
46906 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c     2010-01-25 09:50:29.455686248 +0100
46907 @@ -3,7 +3,8 @@
46908  
46909  /* { dg-do assemble } */
46910  /* { dg-require-effective-target arm_neon_ok } */
46911 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46912 +/* { dg-options "-save-temps -O0" } */
46913 +/* { dg-add-options arm_neon } */
46914  
46915  #include "arm_neon.h"
46916  
46917 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c
46918 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c      2007-07-25 14:28:31.000000000 +0200
46919 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c      2010-01-25 09:50:29.455686248 +0100
46920 @@ -3,7 +3,8 @@
46921  
46922  /* { dg-do assemble } */
46923  /* { dg-require-effective-target arm_neon_ok } */
46924 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46925 +/* { dg-options "-save-temps -O0" } */
46926 +/* { dg-add-options arm_neon } */
46927  
46928  #include "arm_neon.h"
46929  
46930 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c
46931 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c     2007-07-25 14:28:31.000000000 +0200
46932 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c     2010-01-25 09:50:29.455686248 +0100
46933 @@ -3,7 +3,8 @@
46934  
46935  /* { dg-do assemble } */
46936  /* { dg-require-effective-target arm_neon_ok } */
46937 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46938 +/* { dg-options "-save-temps -O0" } */
46939 +/* { dg-add-options arm_neon } */
46940  
46941  #include "arm_neon.h"
46942  
46943 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c
46944 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c     2007-07-25 14:28:31.000000000 +0200
46945 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c     2010-01-25 09:50:29.455686248 +0100
46946 @@ -3,7 +3,8 @@
46947  
46948  /* { dg-do assemble } */
46949  /* { dg-require-effective-target arm_neon_ok } */
46950 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46951 +/* { dg-options "-save-temps -O0" } */
46952 +/* { dg-add-options arm_neon } */
46953  
46954  #include "arm_neon.h"
46955  
46956 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c
46957 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c     2007-07-25 14:28:31.000000000 +0200
46958 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c     2010-01-25 09:50:29.455686248 +0100
46959 @@ -3,7 +3,8 @@
46960  
46961  /* { dg-do assemble } */
46962  /* { dg-require-effective-target arm_neon_ok } */
46963 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46964 +/* { dg-options "-save-temps -O0" } */
46965 +/* { dg-add-options arm_neon } */
46966  
46967  #include "arm_neon.h"
46968  
46969 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c
46970 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c      2007-07-25 14:28:31.000000000 +0200
46971 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c      2010-01-25 09:50:29.455686248 +0100
46972 @@ -3,7 +3,8 @@
46973  
46974  /* { dg-do assemble } */
46975  /* { dg-require-effective-target arm_neon_ok } */
46976 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46977 +/* { dg-options "-save-temps -O0" } */
46978 +/* { dg-add-options arm_neon } */
46979  
46980  #include "arm_neon.h"
46981  
46982 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshls16.c b/gcc/testsuite/gcc.target/arm/neon/vqshls16.c
46983 --- a/gcc/testsuite/gcc.target/arm/neon/vqshls16.c      2007-07-25 14:28:31.000000000 +0200
46984 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshls16.c      2010-01-25 09:50:29.455686248 +0100
46985 @@ -3,7 +3,8 @@
46986  
46987  /* { dg-do assemble } */
46988  /* { dg-require-effective-target arm_neon_ok } */
46989 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
46990 +/* { dg-options "-save-temps -O0" } */
46991 +/* { dg-add-options arm_neon } */
46992  
46993  #include "arm_neon.h"
46994  
46995 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshls32.c b/gcc/testsuite/gcc.target/arm/neon/vqshls32.c
46996 --- a/gcc/testsuite/gcc.target/arm/neon/vqshls32.c      2007-07-25 14:28:31.000000000 +0200
46997 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshls32.c      2010-01-25 09:50:29.455686248 +0100
46998 @@ -3,7 +3,8 @@
46999  
47000  /* { dg-do assemble } */
47001  /* { dg-require-effective-target arm_neon_ok } */
47002 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47003 +/* { dg-options "-save-temps -O0" } */
47004 +/* { dg-add-options arm_neon } */
47005  
47006  #include "arm_neon.h"
47007  
47008 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshls64.c b/gcc/testsuite/gcc.target/arm/neon/vqshls64.c
47009 --- a/gcc/testsuite/gcc.target/arm/neon/vqshls64.c      2007-07-25 14:28:31.000000000 +0200
47010 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshls64.c      2010-01-25 09:50:29.455686248 +0100
47011 @@ -3,7 +3,8 @@
47012  
47013  /* { dg-do assemble } */
47014  /* { dg-require-effective-target arm_neon_ok } */
47015 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47016 +/* { dg-options "-save-temps -O0" } */
47017 +/* { dg-add-options arm_neon } */
47018  
47019  #include "arm_neon.h"
47020  
47021 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshls8.c b/gcc/testsuite/gcc.target/arm/neon/vqshls8.c
47022 --- a/gcc/testsuite/gcc.target/arm/neon/vqshls8.c       2007-07-25 14:28:31.000000000 +0200
47023 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshls8.c       2010-01-25 09:50:29.455686248 +0100
47024 @@ -3,7 +3,8 @@
47025  
47026  /* { dg-do assemble } */
47027  /* { dg-require-effective-target arm_neon_ok } */
47028 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47029 +/* { dg-options "-save-temps -O0" } */
47030 +/* { dg-add-options arm_neon } */
47031  
47032  #include "arm_neon.h"
47033  
47034 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c
47035 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c      2007-07-25 14:28:31.000000000 +0200
47036 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c      2010-01-25 09:50:29.455686248 +0100
47037 @@ -3,7 +3,8 @@
47038  
47039  /* { dg-do assemble } */
47040  /* { dg-require-effective-target arm_neon_ok } */
47041 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47042 +/* { dg-options "-save-temps -O0" } */
47043 +/* { dg-add-options arm_neon } */
47044  
47045  #include "arm_neon.h"
47046  
47047 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c
47048 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c      2007-07-25 14:28:31.000000000 +0200
47049 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c      2010-01-25 09:50:29.455686248 +0100
47050 @@ -3,7 +3,8 @@
47051  
47052  /* { dg-do assemble } */
47053  /* { dg-require-effective-target arm_neon_ok } */
47054 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47055 +/* { dg-options "-save-temps -O0" } */
47056 +/* { dg-add-options arm_neon } */
47057  
47058  #include "arm_neon.h"
47059  
47060 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c
47061 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c      2007-07-25 14:28:31.000000000 +0200
47062 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c      2010-01-25 09:50:29.455686248 +0100
47063 @@ -3,7 +3,8 @@
47064  
47065  /* { dg-do assemble } */
47066  /* { dg-require-effective-target arm_neon_ok } */
47067 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47068 +/* { dg-options "-save-temps -O0" } */
47069 +/* { dg-add-options arm_neon } */
47070  
47071  #include "arm_neon.h"
47072  
47073 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c
47074 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c       2007-07-25 14:28:31.000000000 +0200
47075 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c       2010-01-25 09:50:29.455686248 +0100
47076 @@ -3,7 +3,8 @@
47077  
47078  /* { dg-do assemble } */
47079  /* { dg-require-effective-target arm_neon_ok } */
47080 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47081 +/* { dg-options "-save-temps -O0" } */
47082 +/* { dg-add-options arm_neon } */
47083  
47084  #include "arm_neon.h"
47085  
47086 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c
47087 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c   2007-07-25 14:28:31.000000000 +0200
47088 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c   2010-01-25 09:50:29.455686248 +0100
47089 @@ -3,7 +3,8 @@
47090  
47091  /* { dg-do assemble } */
47092  /* { dg-require-effective-target arm_neon_ok } */
47093 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47094 +/* { dg-options "-save-temps -O0" } */
47095 +/* { dg-add-options arm_neon } */
47096  
47097  #include "arm_neon.h"
47098  
47099 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c
47100 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c   2007-07-25 14:28:31.000000000 +0200
47101 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c   2010-01-25 09:50:29.455686248 +0100
47102 @@ -3,7 +3,8 @@
47103  
47104  /* { dg-do assemble } */
47105  /* { dg-require-effective-target arm_neon_ok } */
47106 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47107 +/* { dg-options "-save-temps -O0" } */
47108 +/* { dg-add-options arm_neon } */
47109  
47110  #include "arm_neon.h"
47111  
47112 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c
47113 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c   2007-07-25 14:28:31.000000000 +0200
47114 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c   2010-01-25 09:50:29.455686248 +0100
47115 @@ -3,7 +3,8 @@
47116  
47117  /* { dg-do assemble } */
47118  /* { dg-require-effective-target arm_neon_ok } */
47119 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47120 +/* { dg-options "-save-temps -O0" } */
47121 +/* { dg-add-options arm_neon } */
47122  
47123  #include "arm_neon.h"
47124  
47125 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c
47126 --- a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c    2007-07-25 14:28:31.000000000 +0200
47127 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c    2010-01-25 09:50:29.455686248 +0100
47128 @@ -3,7 +3,8 @@
47129  
47130  /* { dg-do assemble } */
47131  /* { dg-require-effective-target arm_neon_ok } */
47132 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47133 +/* { dg-options "-save-temps -O0" } */
47134 +/* { dg-add-options arm_neon } */
47135  
47136  #include "arm_neon.h"
47137  
47138 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c
47139 --- a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c  2007-07-25 14:28:31.000000000 +0200
47140 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c  2010-01-25 09:50:29.455686248 +0100
47141 @@ -3,7 +3,8 @@
47142  
47143  /* { dg-do assemble } */
47144  /* { dg-require-effective-target arm_neon_ok } */
47145 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47146 +/* { dg-options "-save-temps -O0" } */
47147 +/* { dg-add-options arm_neon } */
47148  
47149  #include "arm_neon.h"
47150  
47151 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c
47152 --- a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c  2007-07-25 14:28:31.000000000 +0200
47153 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c  2010-01-25 09:50:29.455686248 +0100
47154 @@ -3,7 +3,8 @@
47155  
47156  /* { dg-do assemble } */
47157  /* { dg-require-effective-target arm_neon_ok } */
47158 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47159 +/* { dg-options "-save-temps -O0" } */
47160 +/* { dg-add-options arm_neon } */
47161  
47162  #include "arm_neon.h"
47163  
47164 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c
47165 --- a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c  2007-07-25 14:28:31.000000000 +0200
47166 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c  2010-01-25 09:50:29.455686248 +0100
47167 @@ -3,7 +3,8 @@
47168  
47169  /* { dg-do assemble } */
47170  /* { dg-require-effective-target arm_neon_ok } */
47171 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47172 +/* { dg-options "-save-temps -O0" } */
47173 +/* { dg-add-options arm_neon } */
47174  
47175  #include "arm_neon.h"
47176  
47177 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c
47178 --- a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c   2007-07-25 14:28:31.000000000 +0200
47179 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c   2010-01-25 09:50:29.455686248 +0100
47180 @@ -3,7 +3,8 @@
47181  
47182  /* { dg-do assemble } */
47183  /* { dg-require-effective-target arm_neon_ok } */
47184 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47185 +/* { dg-options "-save-temps -O0" } */
47186 +/* { dg-add-options arm_neon } */
47187  
47188  #include "arm_neon.h"
47189  
47190 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c
47191 --- a/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c   2007-07-25 14:28:31.000000000 +0200
47192 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c   2010-01-25 09:50:29.455686248 +0100
47193 @@ -3,7 +3,8 @@
47194  
47195  /* { dg-do assemble } */
47196  /* { dg-require-effective-target arm_neon_ok } */
47197 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47198 +/* { dg-options "-save-temps -O0" } */
47199 +/* { dg-add-options arm_neon } */
47200  
47201  #include "arm_neon.h"
47202  
47203 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c
47204 --- a/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c   2007-07-25 14:28:31.000000000 +0200
47205 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c   2010-01-25 09:50:29.455686248 +0100
47206 @@ -3,7 +3,8 @@
47207  
47208  /* { dg-do assemble } */
47209  /* { dg-require-effective-target arm_neon_ok } */
47210 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47211 +/* { dg-options "-save-temps -O0" } */
47212 +/* { dg-add-options arm_neon } */
47213  
47214  #include "arm_neon.h"
47215  
47216 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c
47217 --- a/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c   2007-07-25 14:28:31.000000000 +0200
47218 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c   2010-01-25 09:50:29.455686248 +0100
47219 @@ -3,7 +3,8 @@
47220  
47221  /* { dg-do assemble } */
47222  /* { dg-require-effective-target arm_neon_ok } */
47223 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47224 +/* { dg-options "-save-temps -O0" } */
47225 +/* { dg-add-options arm_neon } */
47226  
47227  #include "arm_neon.h"
47228  
47229 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c
47230 --- a/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c   2007-07-25 14:28:31.000000000 +0200
47231 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c   2010-01-25 09:50:29.455686248 +0100
47232 @@ -3,7 +3,8 @@
47233  
47234  /* { dg-do assemble } */
47235  /* { dg-require-effective-target arm_neon_ok } */
47236 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47237 +/* { dg-options "-save-temps -O0" } */
47238 +/* { dg-add-options arm_neon } */
47239  
47240  #include "arm_neon.h"
47241  
47242 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c
47243 --- a/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c   2007-07-25 14:28:31.000000000 +0200
47244 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c   2010-01-25 09:50:29.455686248 +0100
47245 @@ -3,7 +3,8 @@
47246  
47247  /* { dg-do assemble } */
47248  /* { dg-require-effective-target arm_neon_ok } */
47249 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47250 +/* { dg-options "-save-temps -O0" } */
47251 +/* { dg-add-options arm_neon } */
47252  
47253  #include "arm_neon.h"
47254  
47255 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c
47256 --- a/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c   2007-07-25 14:28:31.000000000 +0200
47257 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c   2010-01-25 09:50:29.465686681 +0100
47258 @@ -3,7 +3,8 @@
47259  
47260  /* { dg-do assemble } */
47261  /* { dg-require-effective-target arm_neon_ok } */
47262 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47263 +/* { dg-options "-save-temps -O0" } */
47264 +/* { dg-add-options arm_neon } */
47265  
47266  #include "arm_neon.h"
47267  
47268 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c
47269 --- a/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c  2007-07-25 14:28:31.000000000 +0200
47270 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c  2010-01-25 09:50:29.465686681 +0100
47271 @@ -3,7 +3,8 @@
47272  
47273  /* { dg-do assemble } */
47274  /* { dg-require-effective-target arm_neon_ok } */
47275 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47276 +/* { dg-options "-save-temps -O0" } */
47277 +/* { dg-add-options arm_neon } */
47278  
47279  #include "arm_neon.h"
47280  
47281 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c
47282 --- a/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c  2007-07-25 14:28:31.000000000 +0200
47283 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c  2010-01-25 09:50:29.465686681 +0100
47284 @@ -3,7 +3,8 @@
47285  
47286  /* { dg-do assemble } */
47287  /* { dg-require-effective-target arm_neon_ok } */
47288 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47289 +/* { dg-options "-save-temps -O0" } */
47290 +/* { dg-add-options arm_neon } */
47291  
47292  #include "arm_neon.h"
47293  
47294 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c
47295 --- a/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c  2007-07-25 14:28:31.000000000 +0200
47296 +++ b/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c  2010-01-25 09:50:29.465686681 +0100
47297 @@ -3,7 +3,8 @@
47298  
47299  /* { dg-do assemble } */
47300  /* { dg-require-effective-target arm_neon_ok } */
47301 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47302 +/* { dg-options "-save-temps -O0" } */
47303 +/* { dg-add-options arm_neon } */
47304  
47305  #include "arm_neon.h"
47306  
47307 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c
47308 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c     2007-07-25 14:28:31.000000000 +0200
47309 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c     2010-01-25 09:50:29.465686681 +0100
47310 @@ -3,7 +3,8 @@
47311  
47312  /* { dg-do assemble } */
47313  /* { dg-require-effective-target arm_neon_ok } */
47314 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47315 +/* { dg-options "-save-temps -O0" } */
47316 +/* { dg-add-options arm_neon } */
47317  
47318  #include "arm_neon.h"
47319  
47320 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c
47321 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c     2007-07-25 14:28:31.000000000 +0200
47322 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c     2010-01-25 09:50:29.465686681 +0100
47323 @@ -3,7 +3,8 @@
47324  
47325  /* { dg-do assemble } */
47326  /* { dg-require-effective-target arm_neon_ok } */
47327 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47328 +/* { dg-options "-save-temps -O0" } */
47329 +/* { dg-add-options arm_neon } */
47330  
47331  #include "arm_neon.h"
47332  
47333 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c
47334 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c     2007-07-25 14:28:31.000000000 +0200
47335 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c     2010-01-25 09:50:29.465686681 +0100
47336 @@ -3,7 +3,8 @@
47337  
47338  /* { dg-do assemble } */
47339  /* { dg-require-effective-target arm_neon_ok } */
47340 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47341 +/* { dg-options "-save-temps -O0" } */
47342 +/* { dg-add-options arm_neon } */
47343  
47344  #include "arm_neon.h"
47345  
47346 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c
47347 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c      2007-07-25 14:28:31.000000000 +0200
47348 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c      2010-01-25 09:50:29.465686681 +0100
47349 @@ -3,7 +3,8 @@
47350  
47351  /* { dg-do assemble } */
47352  /* { dg-require-effective-target arm_neon_ok } */
47353 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47354 +/* { dg-options "-save-temps -O0" } */
47355 +/* { dg-add-options arm_neon } */
47356  
47357  #include "arm_neon.h"
47358  
47359 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c
47360 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c     2007-07-25 14:28:31.000000000 +0200
47361 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c     2010-01-25 09:50:29.465686681 +0100
47362 @@ -3,7 +3,8 @@
47363  
47364  /* { dg-do assemble } */
47365  /* { dg-require-effective-target arm_neon_ok } */
47366 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47367 +/* { dg-options "-save-temps -O0" } */
47368 +/* { dg-add-options arm_neon } */
47369  
47370  #include "arm_neon.h"
47371  
47372 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c
47373 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c     2007-07-25 14:28:31.000000000 +0200
47374 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c     2010-01-25 09:50:29.465686681 +0100
47375 @@ -3,7 +3,8 @@
47376  
47377  /* { dg-do assemble } */
47378  /* { dg-require-effective-target arm_neon_ok } */
47379 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47380 +/* { dg-options "-save-temps -O0" } */
47381 +/* { dg-add-options arm_neon } */
47382  
47383  #include "arm_neon.h"
47384  
47385 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c
47386 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c     2007-07-25 14:28:31.000000000 +0200
47387 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c     2010-01-25 09:50:29.465686681 +0100
47388 @@ -3,7 +3,8 @@
47389  
47390  /* { dg-do assemble } */
47391  /* { dg-require-effective-target arm_neon_ok } */
47392 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47393 +/* { dg-options "-save-temps -O0" } */
47394 +/* { dg-add-options arm_neon } */
47395  
47396  #include "arm_neon.h"
47397  
47398 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c
47399 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c      2007-07-25 14:28:31.000000000 +0200
47400 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c      2010-01-25 09:50:29.465686681 +0100
47401 @@ -3,7 +3,8 @@
47402  
47403  /* { dg-do assemble } */
47404  /* { dg-require-effective-target arm_neon_ok } */
47405 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47406 +/* { dg-options "-save-temps -O0" } */
47407 +/* { dg-add-options arm_neon } */
47408  
47409  #include "arm_neon.h"
47410  
47411 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c b/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c
47412 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c      2007-07-25 14:28:31.000000000 +0200
47413 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c      2010-01-25 09:50:29.465686681 +0100
47414 @@ -3,7 +3,8 @@
47415  
47416  /* { dg-do assemble } */
47417  /* { dg-require-effective-target arm_neon_ok } */
47418 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47419 +/* { dg-options "-save-temps -O0" } */
47420 +/* { dg-add-options arm_neon } */
47421  
47422  #include "arm_neon.h"
47423  
47424 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c b/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c
47425 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c      2007-07-25 14:28:31.000000000 +0200
47426 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c      2010-01-25 09:50:29.465686681 +0100
47427 @@ -3,7 +3,8 @@
47428  
47429  /* { dg-do assemble } */
47430  /* { dg-require-effective-target arm_neon_ok } */
47431 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47432 +/* { dg-options "-save-temps -O0" } */
47433 +/* { dg-add-options arm_neon } */
47434  
47435  #include "arm_neon.h"
47436  
47437 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c b/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c
47438 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c      2007-07-25 14:28:31.000000000 +0200
47439 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c      2010-01-25 09:50:29.465686681 +0100
47440 @@ -3,7 +3,8 @@
47441  
47442  /* { dg-do assemble } */
47443  /* { dg-require-effective-target arm_neon_ok } */
47444 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47445 +/* { dg-options "-save-temps -O0" } */
47446 +/* { dg-add-options arm_neon } */
47447  
47448  #include "arm_neon.h"
47449  
47450 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c b/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c
47451 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c       2007-07-25 14:28:31.000000000 +0200
47452 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c       2010-01-25 09:50:29.465686681 +0100
47453 @@ -3,7 +3,8 @@
47454  
47455  /* { dg-do assemble } */
47456  /* { dg-require-effective-target arm_neon_ok } */
47457 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47458 +/* { dg-options "-save-temps -O0" } */
47459 +/* { dg-add-options arm_neon } */
47460  
47461  #include "arm_neon.h"
47462  
47463 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c b/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c
47464 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c      2007-07-25 14:28:31.000000000 +0200
47465 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c      2010-01-25 09:50:29.465686681 +0100
47466 @@ -3,7 +3,8 @@
47467  
47468  /* { dg-do assemble } */
47469  /* { dg-require-effective-target arm_neon_ok } */
47470 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47471 +/* { dg-options "-save-temps -O0" } */
47472 +/* { dg-add-options arm_neon } */
47473  
47474  #include "arm_neon.h"
47475  
47476 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c b/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c
47477 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c      2007-07-25 14:28:31.000000000 +0200
47478 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c      2010-01-25 09:50:29.465686681 +0100
47479 @@ -3,7 +3,8 @@
47480  
47481  /* { dg-do assemble } */
47482  /* { dg-require-effective-target arm_neon_ok } */
47483 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47484 +/* { dg-options "-save-temps -O0" } */
47485 +/* { dg-add-options arm_neon } */
47486  
47487  #include "arm_neon.h"
47488  
47489 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c b/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c
47490 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c      2007-07-25 14:28:31.000000000 +0200
47491 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c      2010-01-25 09:50:29.465686681 +0100
47492 @@ -3,7 +3,8 @@
47493  
47494  /* { dg-do assemble } */
47495  /* { dg-require-effective-target arm_neon_ok } */
47496 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47497 +/* { dg-options "-save-temps -O0" } */
47498 +/* { dg-add-options arm_neon } */
47499  
47500  #include "arm_neon.h"
47501  
47502 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c b/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c
47503 --- a/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c       2007-07-25 14:28:31.000000000 +0200
47504 +++ b/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c       2010-01-25 09:50:29.465686681 +0100
47505 @@ -3,7 +3,8 @@
47506  
47507  /* { dg-do assemble } */
47508  /* { dg-require-effective-target arm_neon_ok } */
47509 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47510 +/* { dg-options "-save-temps -O0" } */
47511 +/* { dg-add-options arm_neon } */
47512  
47513  #include "arm_neon.h"
47514  
47515 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c b/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c
47516 --- a/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c    2007-07-25 14:28:31.000000000 +0200
47517 +++ b/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c    2010-01-25 09:50:29.465686681 +0100
47518 @@ -3,7 +3,8 @@
47519  
47520  /* { dg-do assemble } */
47521  /* { dg-require-effective-target arm_neon_ok } */
47522 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47523 +/* { dg-options "-save-temps -O0" } */
47524 +/* { dg-add-options arm_neon } */
47525  
47526  #include "arm_neon.h"
47527  
47528 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c b/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c
47529 --- a/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c    2007-07-25 14:28:31.000000000 +0200
47530 +++ b/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c    2010-01-25 09:50:29.465686681 +0100
47531 @@ -3,7 +3,8 @@
47532  
47533  /* { dg-do assemble } */
47534  /* { dg-require-effective-target arm_neon_ok } */
47535 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47536 +/* { dg-options "-save-temps -O0" } */
47537 +/* { dg-add-options arm_neon } */
47538  
47539  #include "arm_neon.h"
47540  
47541 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c b/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c
47542 --- a/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c    2007-07-25 14:28:31.000000000 +0200
47543 +++ b/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c    2010-01-25 09:50:29.465686681 +0100
47544 @@ -3,7 +3,8 @@
47545  
47546  /* { dg-do assemble } */
47547  /* { dg-require-effective-target arm_neon_ok } */
47548 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47549 +/* { dg-options "-save-temps -O0" } */
47550 +/* { dg-add-options arm_neon } */
47551  
47552  #include "arm_neon.h"
47553  
47554 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c b/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c
47555 --- a/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c    2007-07-25 14:28:31.000000000 +0200
47556 +++ b/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c    2010-01-25 09:50:29.465686681 +0100
47557 @@ -3,7 +3,8 @@
47558  
47559  /* { dg-do assemble } */
47560  /* { dg-require-effective-target arm_neon_ok } */
47561 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47562 +/* { dg-options "-save-temps -O0" } */
47563 +/* { dg-add-options arm_neon } */
47564  
47565  #include "arm_neon.h"
47566  
47567 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c b/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c
47568 --- a/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c    2007-07-25 14:28:31.000000000 +0200
47569 +++ b/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c    2010-01-25 09:50:29.465686681 +0100
47570 @@ -3,7 +3,8 @@
47571  
47572  /* { dg-do assemble } */
47573  /* { dg-require-effective-target arm_neon_ok } */
47574 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47575 +/* { dg-options "-save-temps -O0" } */
47576 +/* { dg-add-options arm_neon } */
47577  
47578  #include "arm_neon.h"
47579  
47580 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c b/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c
47581 --- a/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c    2007-07-25 14:28:31.000000000 +0200
47582 +++ b/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c    2010-01-25 09:50:29.465686681 +0100
47583 @@ -3,7 +3,8 @@
47584  
47585  /* { dg-do assemble } */
47586  /* { dg-require-effective-target arm_neon_ok } */
47587 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47588 +/* { dg-options "-save-temps -O0" } */
47589 +/* { dg-add-options arm_neon } */
47590  
47591  #include "arm_neon.h"
47592  
47593 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c b/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c
47594 --- a/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c     2007-07-25 14:28:31.000000000 +0200
47595 +++ b/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c     2010-01-25 09:50:29.465686681 +0100
47596 @@ -3,7 +3,8 @@
47597  
47598  /* { dg-do assemble } */
47599  /* { dg-require-effective-target arm_neon_ok } */
47600 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47601 +/* { dg-options "-save-temps -O0" } */
47602 +/* { dg-add-options arm_neon } */
47603  
47604  #include "arm_neon.h"
47605  
47606 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c b/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c
47607 --- a/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c    2007-07-25 14:28:31.000000000 +0200
47608 +++ b/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c    2010-01-25 09:50:29.465686681 +0100
47609 @@ -3,7 +3,8 @@
47610  
47611  /* { dg-do assemble } */
47612  /* { dg-require-effective-target arm_neon_ok } */
47613 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47614 +/* { dg-options "-save-temps -O0" } */
47615 +/* { dg-add-options arm_neon } */
47616  
47617  #include "arm_neon.h"
47618  
47619 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c b/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c
47620 --- a/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c    2007-07-25 14:28:31.000000000 +0200
47621 +++ b/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c    2010-01-25 09:50:29.465686681 +0100
47622 @@ -3,7 +3,8 @@
47623  
47624  /* { dg-do assemble } */
47625  /* { dg-require-effective-target arm_neon_ok } */
47626 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47627 +/* { dg-options "-save-temps -O0" } */
47628 +/* { dg-add-options arm_neon } */
47629  
47630  #include "arm_neon.h"
47631  
47632 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c b/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c
47633 --- a/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c     2007-07-25 14:28:31.000000000 +0200
47634 +++ b/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c     2010-01-25 09:50:29.465686681 +0100
47635 @@ -3,7 +3,8 @@
47636  
47637  /* { dg-do assemble } */
47638  /* { dg-require-effective-target arm_neon_ok } */
47639 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47640 +/* { dg-options "-save-temps -O0" } */
47641 +/* { dg-add-options arm_neon } */
47642  
47643  #include "arm_neon.h"
47644  
47645 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c b/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c
47646 --- a/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c     2007-07-25 14:28:31.000000000 +0200
47647 +++ b/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c     2010-01-25 09:50:29.465686681 +0100
47648 @@ -3,7 +3,8 @@
47649  
47650  /* { dg-do assemble } */
47651  /* { dg-require-effective-target arm_neon_ok } */
47652 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47653 +/* { dg-options "-save-temps -O0" } */
47654 +/* { dg-add-options arm_neon } */
47655  
47656  #include "arm_neon.h"
47657  
47658 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c b/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c
47659 --- a/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c    2007-07-25 14:28:31.000000000 +0200
47660 +++ b/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c    2010-01-25 09:50:29.465686681 +0100
47661 @@ -3,7 +3,8 @@
47662  
47663  /* { dg-do assemble } */
47664  /* { dg-require-effective-target arm_neon_ok } */
47665 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47666 +/* { dg-options "-save-temps -O0" } */
47667 +/* { dg-add-options arm_neon } */
47668  
47669  #include "arm_neon.h"
47670  
47671 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c
47672 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c   2007-07-25 14:28:31.000000000 +0200
47673 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c   2010-01-25 09:50:29.465686681 +0100
47674 @@ -3,7 +3,8 @@
47675  
47676  /* { dg-do assemble } */
47677  /* { dg-require-effective-target arm_neon_ok } */
47678 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47679 +/* { dg-options "-save-temps -O0" } */
47680 +/* { dg-add-options arm_neon } */
47681  
47682  #include "arm_neon.h"
47683  
47684 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c
47685 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c    2007-07-25 14:28:31.000000000 +0200
47686 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c    2010-01-25 09:50:29.465686681 +0100
47687 @@ -3,7 +3,8 @@
47688  
47689  /* { dg-do assemble } */
47690  /* { dg-require-effective-target arm_neon_ok } */
47691 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47692 +/* { dg-options "-save-temps -O0" } */
47693 +/* { dg-add-options arm_neon } */
47694  
47695  #include "arm_neon.h"
47696  
47697 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c
47698 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c   2007-07-25 14:28:31.000000000 +0200
47699 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c   2010-01-25 09:50:29.465686681 +0100
47700 @@ -3,7 +3,8 @@
47701  
47702  /* { dg-do assemble } */
47703  /* { dg-require-effective-target arm_neon_ok } */
47704 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47705 +/* { dg-options "-save-temps -O0" } */
47706 +/* { dg-add-options arm_neon } */
47707  
47708  #include "arm_neon.h"
47709  
47710 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c
47711 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c   2007-07-25 14:28:31.000000000 +0200
47712 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c   2010-01-25 09:50:29.465686681 +0100
47713 @@ -3,7 +3,8 @@
47714  
47715  /* { dg-do assemble } */
47716  /* { dg-require-effective-target arm_neon_ok } */
47717 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47718 +/* { dg-options "-save-temps -O0" } */
47719 +/* { dg-add-options arm_neon } */
47720  
47721  #include "arm_neon.h"
47722  
47723 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c
47724 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c   2007-07-25 14:28:31.000000000 +0200
47725 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c   2010-01-25 09:50:29.465686681 +0100
47726 @@ -3,7 +3,8 @@
47727  
47728  /* { dg-do assemble } */
47729  /* { dg-require-effective-target arm_neon_ok } */
47730 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47731 +/* { dg-options "-save-temps -O0" } */
47732 +/* { dg-add-options arm_neon } */
47733  
47734  #include "arm_neon.h"
47735  
47736 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c
47737 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c    2007-07-25 14:28:31.000000000 +0200
47738 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c    2010-01-25 09:50:29.465686681 +0100
47739 @@ -3,7 +3,8 @@
47740  
47741  /* { dg-do assemble } */
47742  /* { dg-require-effective-target arm_neon_ok } */
47743 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47744 +/* { dg-options "-save-temps -O0" } */
47745 +/* { dg-add-options arm_neon } */
47746  
47747  #include "arm_neon.h"
47748  
47749 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c
47750 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c   2007-07-25 14:28:31.000000000 +0200
47751 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c   2010-01-25 09:50:29.465686681 +0100
47752 @@ -3,7 +3,8 @@
47753  
47754  /* { dg-do assemble } */
47755  /* { dg-require-effective-target arm_neon_ok } */
47756 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47757 +/* { dg-options "-save-temps -O0" } */
47758 +/* { dg-add-options arm_neon } */
47759  
47760  #include "arm_neon.h"
47761  
47762 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c
47763 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c   2007-07-25 14:28:31.000000000 +0200
47764 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c   2010-01-25 09:50:29.465686681 +0100
47765 @@ -3,7 +3,8 @@
47766  
47767  /* { dg-do assemble } */
47768  /* { dg-require-effective-target arm_neon_ok } */
47769 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47770 +/* { dg-options "-save-temps -O0" } */
47771 +/* { dg-add-options arm_neon } */
47772  
47773  #include "arm_neon.h"
47774  
47775 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c
47776 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c   2007-07-25 14:28:31.000000000 +0200
47777 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c   2010-01-25 09:50:29.465686681 +0100
47778 @@ -3,7 +3,8 @@
47779  
47780  /* { dg-do assemble } */
47781  /* { dg-require-effective-target arm_neon_ok } */
47782 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47783 +/* { dg-options "-save-temps -O0" } */
47784 +/* { dg-add-options arm_neon } */
47785  
47786  #include "arm_neon.h"
47787  
47788 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c
47789 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c    2007-07-25 14:28:31.000000000 +0200
47790 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c    2010-01-25 09:50:29.465686681 +0100
47791 @@ -3,7 +3,8 @@
47792  
47793  /* { dg-do assemble } */
47794  /* { dg-require-effective-target arm_neon_ok } */
47795 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47796 +/* { dg-options "-save-temps -O0" } */
47797 +/* { dg-add-options arm_neon } */
47798  
47799  #include "arm_neon.h"
47800  
47801 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c
47802 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c   2007-07-25 14:28:31.000000000 +0200
47803 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c   2010-01-25 09:50:29.465686681 +0100
47804 @@ -3,7 +3,8 @@
47805  
47806  /* { dg-do assemble } */
47807  /* { dg-require-effective-target arm_neon_ok } */
47808 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47809 +/* { dg-options "-save-temps -O0" } */
47810 +/* { dg-add-options arm_neon } */
47811  
47812  #include "arm_neon.h"
47813  
47814 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c
47815 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c    2007-07-25 14:28:31.000000000 +0200
47816 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c    2010-01-25 09:50:29.465686681 +0100
47817 @@ -3,7 +3,8 @@
47818  
47819  /* { dg-do assemble } */
47820  /* { dg-require-effective-target arm_neon_ok } */
47821 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47822 +/* { dg-options "-save-temps -O0" } */
47823 +/* { dg-add-options arm_neon } */
47824  
47825  #include "arm_neon.h"
47826  
47827 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c
47828 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c   2007-07-25 14:28:31.000000000 +0200
47829 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c   2010-01-25 09:50:29.465686681 +0100
47830 @@ -3,7 +3,8 @@
47831  
47832  /* { dg-do assemble } */
47833  /* { dg-require-effective-target arm_neon_ok } */
47834 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47835 +/* { dg-options "-save-temps -O0" } */
47836 +/* { dg-add-options arm_neon } */
47837  
47838  #include "arm_neon.h"
47839  
47840 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c
47841 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c   2007-07-25 14:28:31.000000000 +0200
47842 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c   2010-01-25 09:50:29.465686681 +0100
47843 @@ -3,7 +3,8 @@
47844  
47845  /* { dg-do assemble } */
47846  /* { dg-require-effective-target arm_neon_ok } */
47847 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47848 +/* { dg-options "-save-temps -O0" } */
47849 +/* { dg-add-options arm_neon } */
47850  
47851  #include "arm_neon.h"
47852  
47853 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c
47854 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c   2007-07-25 14:28:31.000000000 +0200
47855 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c   2010-01-25 09:50:29.465686681 +0100
47856 @@ -3,7 +3,8 @@
47857  
47858  /* { dg-do assemble } */
47859  /* { dg-require-effective-target arm_neon_ok } */
47860 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47861 +/* { dg-options "-save-temps -O0" } */
47862 +/* { dg-add-options arm_neon } */
47863  
47864  #include "arm_neon.h"
47865  
47866 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c
47867 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c    2007-07-25 14:28:31.000000000 +0200
47868 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c    2010-01-25 09:50:29.465686681 +0100
47869 @@ -3,7 +3,8 @@
47870  
47871  /* { dg-do assemble } */
47872  /* { dg-require-effective-target arm_neon_ok } */
47873 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47874 +/* { dg-options "-save-temps -O0" } */
47875 +/* { dg-add-options arm_neon } */
47876  
47877  #include "arm_neon.h"
47878  
47879 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c
47880 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c   2007-07-25 14:28:31.000000000 +0200
47881 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c   2010-01-25 09:50:29.465686681 +0100
47882 @@ -3,7 +3,8 @@
47883  
47884  /* { dg-do assemble } */
47885  /* { dg-require-effective-target arm_neon_ok } */
47886 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47887 +/* { dg-options "-save-temps -O0" } */
47888 +/* { dg-add-options arm_neon } */
47889  
47890  #include "arm_neon.h"
47891  
47892 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c
47893 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c   2007-07-25 14:28:31.000000000 +0200
47894 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c   2010-01-25 09:50:29.465686681 +0100
47895 @@ -3,7 +3,8 @@
47896  
47897  /* { dg-do assemble } */
47898  /* { dg-require-effective-target arm_neon_ok } */
47899 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47900 +/* { dg-options "-save-temps -O0" } */
47901 +/* { dg-add-options arm_neon } */
47902  
47903  #include "arm_neon.h"
47904  
47905 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c
47906 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c   2007-07-25 14:28:31.000000000 +0200
47907 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c   2010-01-25 09:50:29.465686681 +0100
47908 @@ -3,7 +3,8 @@
47909  
47910  /* { dg-do assemble } */
47911  /* { dg-require-effective-target arm_neon_ok } */
47912 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47913 +/* { dg-options "-save-temps -O0" } */
47914 +/* { dg-add-options arm_neon } */
47915  
47916  #include "arm_neon.h"
47917  
47918 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c
47919 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c    2007-07-25 14:28:31.000000000 +0200
47920 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c    2010-01-25 09:50:29.465686681 +0100
47921 @@ -3,7 +3,8 @@
47922  
47923  /* { dg-do assemble } */
47924  /* { dg-require-effective-target arm_neon_ok } */
47925 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47926 +/* { dg-options "-save-temps -O0" } */
47927 +/* { dg-add-options arm_neon } */
47928  
47929  #include "arm_neon.h"
47930  
47931 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c
47932 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c    2007-07-25 14:28:31.000000000 +0200
47933 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c    2010-01-25 09:50:29.465686681 +0100
47934 @@ -3,7 +3,8 @@
47935  
47936  /* { dg-do assemble } */
47937  /* { dg-require-effective-target arm_neon_ok } */
47938 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47939 +/* { dg-options "-save-temps -O0" } */
47940 +/* { dg-add-options arm_neon } */
47941  
47942  #include "arm_neon.h"
47943  
47944 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c
47945 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c    2007-07-25 14:28:31.000000000 +0200
47946 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c    2010-01-25 09:50:29.465686681 +0100
47947 @@ -3,7 +3,8 @@
47948  
47949  /* { dg-do assemble } */
47950  /* { dg-require-effective-target arm_neon_ok } */
47951 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47952 +/* { dg-options "-save-temps -O0" } */
47953 +/* { dg-add-options arm_neon } */
47954  
47955  #include "arm_neon.h"
47956  
47957 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c
47958 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c    2007-07-25 14:28:31.000000000 +0200
47959 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c    2010-01-25 09:50:29.465686681 +0100
47960 @@ -3,7 +3,8 @@
47961  
47962  /* { dg-do assemble } */
47963  /* { dg-require-effective-target arm_neon_ok } */
47964 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47965 +/* { dg-options "-save-temps -O0" } */
47966 +/* { dg-add-options arm_neon } */
47967  
47968  #include "arm_neon.h"
47969  
47970 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c
47971 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c    2007-07-25 14:28:31.000000000 +0200
47972 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c    2010-01-25 09:50:29.465686681 +0100
47973 @@ -3,7 +3,8 @@
47974  
47975  /* { dg-do assemble } */
47976  /* { dg-require-effective-target arm_neon_ok } */
47977 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47978 +/* { dg-options "-save-temps -O0" } */
47979 +/* { dg-add-options arm_neon } */
47980  
47981  #include "arm_neon.h"
47982  
47983 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c
47984 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c    2007-07-25 14:28:31.000000000 +0200
47985 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c    2010-01-25 09:50:29.465686681 +0100
47986 @@ -3,7 +3,8 @@
47987  
47988  /* { dg-do assemble } */
47989  /* { dg-require-effective-target arm_neon_ok } */
47990 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
47991 +/* { dg-options "-save-temps -O0" } */
47992 +/* { dg-add-options arm_neon } */
47993  
47994  #include "arm_neon.h"
47995  
47996 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c
47997 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c     2007-07-25 14:28:31.000000000 +0200
47998 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c     2010-01-25 09:50:29.465686681 +0100
47999 @@ -3,7 +3,8 @@
48000  
48001  /* { dg-do assemble } */
48002  /* { dg-require-effective-target arm_neon_ok } */
48003 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48004 +/* { dg-options "-save-temps -O0" } */
48005 +/* { dg-add-options arm_neon } */
48006  
48007  #include "arm_neon.h"
48008  
48009 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c
48010 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c    2007-07-25 14:28:31.000000000 +0200
48011 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c    2010-01-25 09:50:29.465686681 +0100
48012 @@ -3,7 +3,8 @@
48013  
48014  /* { dg-do assemble } */
48015  /* { dg-require-effective-target arm_neon_ok } */
48016 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48017 +/* { dg-options "-save-temps -O0" } */
48018 +/* { dg-add-options arm_neon } */
48019  
48020  #include "arm_neon.h"
48021  
48022 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c
48023 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c    2007-07-25 14:28:31.000000000 +0200
48024 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c    2010-01-25 09:50:29.465686681 +0100
48025 @@ -3,7 +3,8 @@
48026  
48027  /* { dg-do assemble } */
48028  /* { dg-require-effective-target arm_neon_ok } */
48029 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48030 +/* { dg-options "-save-temps -O0" } */
48031 +/* { dg-add-options arm_neon } */
48032  
48033  #include "arm_neon.h"
48034  
48035 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c
48036 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c    2007-07-25 14:28:31.000000000 +0200
48037 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c    2010-01-25 09:50:29.465686681 +0100
48038 @@ -3,7 +3,8 @@
48039  
48040  /* { dg-do assemble } */
48041  /* { dg-require-effective-target arm_neon_ok } */
48042 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48043 +/* { dg-options "-save-temps -O0" } */
48044 +/* { dg-add-options arm_neon } */
48045  
48046  #include "arm_neon.h"
48047  
48048 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c
48049 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c     2007-07-25 14:28:31.000000000 +0200
48050 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c     2010-01-25 09:50:29.465686681 +0100
48051 @@ -3,7 +3,8 @@
48052  
48053  /* { dg-do assemble } */
48054  /* { dg-require-effective-target arm_neon_ok } */
48055 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48056 +/* { dg-options "-save-temps -O0" } */
48057 +/* { dg-add-options arm_neon } */
48058  
48059  #include "arm_neon.h"
48060  
48061 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c
48062 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c  2007-07-25 14:28:31.000000000 +0200
48063 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c  2010-01-25 09:50:29.465686681 +0100
48064 @@ -3,7 +3,8 @@
48065  
48066  /* { dg-do assemble } */
48067  /* { dg-require-effective-target arm_neon_ok } */
48068 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48069 +/* { dg-options "-save-temps -O0" } */
48070 +/* { dg-add-options arm_neon } */
48071  
48072  #include "arm_neon.h"
48073  
48074 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c
48075 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c   2007-07-25 14:28:31.000000000 +0200
48076 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c   2010-01-25 09:50:29.465686681 +0100
48077 @@ -3,7 +3,8 @@
48078  
48079  /* { dg-do assemble } */
48080  /* { dg-require-effective-target arm_neon_ok } */
48081 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48082 +/* { dg-options "-save-temps -O0" } */
48083 +/* { dg-add-options arm_neon } */
48084  
48085  #include "arm_neon.h"
48086  
48087 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c
48088 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c  2007-07-25 14:28:31.000000000 +0200
48089 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c  2010-01-25 09:50:29.465686681 +0100
48090 @@ -3,7 +3,8 @@
48091  
48092  /* { dg-do assemble } */
48093  /* { dg-require-effective-target arm_neon_ok } */
48094 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48095 +/* { dg-options "-save-temps -O0" } */
48096 +/* { dg-add-options arm_neon } */
48097  
48098  #include "arm_neon.h"
48099  
48100 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c
48101 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c  2007-07-25 14:28:31.000000000 +0200
48102 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c  2010-01-25 09:50:29.465686681 +0100
48103 @@ -3,7 +3,8 @@
48104  
48105  /* { dg-do assemble } */
48106  /* { dg-require-effective-target arm_neon_ok } */
48107 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48108 +/* { dg-options "-save-temps -O0" } */
48109 +/* { dg-add-options arm_neon } */
48110  
48111  #include "arm_neon.h"
48112  
48113 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c
48114 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c  2007-07-25 14:28:31.000000000 +0200
48115 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c  2010-01-25 09:50:29.465686681 +0100
48116 @@ -3,7 +3,8 @@
48117  
48118  /* { dg-do assemble } */
48119  /* { dg-require-effective-target arm_neon_ok } */
48120 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48121 +/* { dg-options "-save-temps -O0" } */
48122 +/* { dg-add-options arm_neon } */
48123  
48124  #include "arm_neon.h"
48125  
48126 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c
48127 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c   2007-07-25 14:28:31.000000000 +0200
48128 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c   2010-01-25 09:50:29.465686681 +0100
48129 @@ -3,7 +3,8 @@
48130  
48131  /* { dg-do assemble } */
48132  /* { dg-require-effective-target arm_neon_ok } */
48133 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48134 +/* { dg-options "-save-temps -O0" } */
48135 +/* { dg-add-options arm_neon } */
48136  
48137  #include "arm_neon.h"
48138  
48139 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c
48140 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c  2007-07-25 14:28:31.000000000 +0200
48141 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c  2010-01-25 09:50:29.465686681 +0100
48142 @@ -3,7 +3,8 @@
48143  
48144  /* { dg-do assemble } */
48145  /* { dg-require-effective-target arm_neon_ok } */
48146 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48147 +/* { dg-options "-save-temps -O0" } */
48148 +/* { dg-add-options arm_neon } */
48149  
48150  #include "arm_neon.h"
48151  
48152 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c
48153 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c  2007-07-25 14:28:31.000000000 +0200
48154 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c  2010-01-25 09:50:29.465686681 +0100
48155 @@ -3,7 +3,8 @@
48156  
48157  /* { dg-do assemble } */
48158  /* { dg-require-effective-target arm_neon_ok } */
48159 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48160 +/* { dg-options "-save-temps -O0" } */
48161 +/* { dg-add-options arm_neon } */
48162  
48163  #include "arm_neon.h"
48164  
48165 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c
48166 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c  2007-07-25 14:28:31.000000000 +0200
48167 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c  2010-01-25 09:50:29.465686681 +0100
48168 @@ -3,7 +3,8 @@
48169  
48170  /* { dg-do assemble } */
48171  /* { dg-require-effective-target arm_neon_ok } */
48172 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48173 +/* { dg-options "-save-temps -O0" } */
48174 +/* { dg-add-options arm_neon } */
48175  
48176  #include "arm_neon.h"
48177  
48178 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c
48179 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c   2007-07-25 14:28:31.000000000 +0200
48180 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c   2010-01-25 09:50:29.465686681 +0100
48181 @@ -3,7 +3,8 @@
48182  
48183  /* { dg-do assemble } */
48184  /* { dg-require-effective-target arm_neon_ok } */
48185 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48186 +/* { dg-options "-save-temps -O0" } */
48187 +/* { dg-add-options arm_neon } */
48188  
48189  #include "arm_neon.h"
48190  
48191 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c
48192 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c  2007-07-25 14:28:31.000000000 +0200
48193 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c  2010-01-25 09:50:29.465686681 +0100
48194 @@ -3,7 +3,8 @@
48195  
48196  /* { dg-do assemble } */
48197  /* { dg-require-effective-target arm_neon_ok } */
48198 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48199 +/* { dg-options "-save-temps -O0" } */
48200 +/* { dg-add-options arm_neon } */
48201  
48202  #include "arm_neon.h"
48203  
48204 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c
48205 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c   2007-07-25 14:28:31.000000000 +0200
48206 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c   2010-01-25 09:50:29.475686346 +0100
48207 @@ -3,7 +3,8 @@
48208  
48209  /* { dg-do assemble } */
48210  /* { dg-require-effective-target arm_neon_ok } */
48211 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48212 +/* { dg-options "-save-temps -O0" } */
48213 +/* { dg-add-options arm_neon } */
48214  
48215  #include "arm_neon.h"
48216  
48217 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c
48218 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c  2007-07-25 14:28:31.000000000 +0200
48219 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c  2010-01-25 09:50:29.475686346 +0100
48220 @@ -3,7 +3,8 @@
48221  
48222  /* { dg-do assemble } */
48223  /* { dg-require-effective-target arm_neon_ok } */
48224 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48225 +/* { dg-options "-save-temps -O0" } */
48226 +/* { dg-add-options arm_neon } */
48227  
48228  #include "arm_neon.h"
48229  
48230 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c
48231 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c  2007-07-25 14:28:31.000000000 +0200
48232 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c  2010-01-25 09:50:29.475686346 +0100
48233 @@ -3,7 +3,8 @@
48234  
48235  /* { dg-do assemble } */
48236  /* { dg-require-effective-target arm_neon_ok } */
48237 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48238 +/* { dg-options "-save-temps -O0" } */
48239 +/* { dg-add-options arm_neon } */
48240  
48241  #include "arm_neon.h"
48242  
48243 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c
48244 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c  2007-07-25 14:28:31.000000000 +0200
48245 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c  2010-01-25 09:50:29.475686346 +0100
48246 @@ -3,7 +3,8 @@
48247  
48248  /* { dg-do assemble } */
48249  /* { dg-require-effective-target arm_neon_ok } */
48250 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48251 +/* { dg-options "-save-temps -O0" } */
48252 +/* { dg-add-options arm_neon } */
48253  
48254  #include "arm_neon.h"
48255  
48256 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c
48257 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c   2007-07-25 14:28:31.000000000 +0200
48258 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c   2010-01-25 09:50:29.475686346 +0100
48259 @@ -3,7 +3,8 @@
48260  
48261  /* { dg-do assemble } */
48262  /* { dg-require-effective-target arm_neon_ok } */
48263 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48264 +/* { dg-options "-save-temps -O0" } */
48265 +/* { dg-add-options arm_neon } */
48266  
48267  #include "arm_neon.h"
48268  
48269 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c
48270 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c  2007-07-25 14:28:31.000000000 +0200
48271 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c  2010-01-25 09:50:29.475686346 +0100
48272 @@ -3,7 +3,8 @@
48273  
48274  /* { dg-do assemble } */
48275  /* { dg-require-effective-target arm_neon_ok } */
48276 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48277 +/* { dg-options "-save-temps -O0" } */
48278 +/* { dg-add-options arm_neon } */
48279  
48280  #include "arm_neon.h"
48281  
48282 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c
48283 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c  2007-07-25 14:28:31.000000000 +0200
48284 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c  2010-01-25 09:50:29.475686346 +0100
48285 @@ -3,7 +3,8 @@
48286  
48287  /* { dg-do assemble } */
48288  /* { dg-require-effective-target arm_neon_ok } */
48289 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48290 +/* { dg-options "-save-temps -O0" } */
48291 +/* { dg-add-options arm_neon } */
48292  
48293  #include "arm_neon.h"
48294  
48295 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c
48296 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c  2007-07-25 14:28:31.000000000 +0200
48297 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c  2010-01-25 09:50:29.475686346 +0100
48298 @@ -3,7 +3,8 @@
48299  
48300  /* { dg-do assemble } */
48301  /* { dg-require-effective-target arm_neon_ok } */
48302 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48303 +/* { dg-options "-save-temps -O0" } */
48304 +/* { dg-add-options arm_neon } */
48305  
48306  #include "arm_neon.h"
48307  
48308 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c
48309 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c   2007-07-25 14:28:31.000000000 +0200
48310 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c   2010-01-25 09:50:29.475686346 +0100
48311 @@ -3,7 +3,8 @@
48312  
48313  /* { dg-do assemble } */
48314  /* { dg-require-effective-target arm_neon_ok } */
48315 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48316 +/* { dg-options "-save-temps -O0" } */
48317 +/* { dg-add-options arm_neon } */
48318  
48319  #include "arm_neon.h"
48320  
48321 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c
48322 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c   2007-07-25 14:28:31.000000000 +0200
48323 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c   2010-01-25 09:50:29.475686346 +0100
48324 @@ -3,7 +3,8 @@
48325  
48326  /* { dg-do assemble } */
48327  /* { dg-require-effective-target arm_neon_ok } */
48328 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48329 +/* { dg-options "-save-temps -O0" } */
48330 +/* { dg-add-options arm_neon } */
48331  
48332  #include "arm_neon.h"
48333  
48334 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c
48335 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c   2007-07-25 14:28:31.000000000 +0200
48336 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c   2010-01-25 09:50:29.475686346 +0100
48337 @@ -3,7 +3,8 @@
48338  
48339  /* { dg-do assemble } */
48340  /* { dg-require-effective-target arm_neon_ok } */
48341 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48342 +/* { dg-options "-save-temps -O0" } */
48343 +/* { dg-add-options arm_neon } */
48344  
48345  #include "arm_neon.h"
48346  
48347 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c
48348 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c   2007-07-25 14:28:31.000000000 +0200
48349 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c   2010-01-25 09:50:29.475686346 +0100
48350 @@ -3,7 +3,8 @@
48351  
48352  /* { dg-do assemble } */
48353  /* { dg-require-effective-target arm_neon_ok } */
48354 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48355 +/* { dg-options "-save-temps -O0" } */
48356 +/* { dg-add-options arm_neon } */
48357  
48358  #include "arm_neon.h"
48359  
48360 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c
48361 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c   2007-07-25 14:28:31.000000000 +0200
48362 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c   2010-01-25 09:50:29.475686346 +0100
48363 @@ -3,7 +3,8 @@
48364  
48365  /* { dg-do assemble } */
48366  /* { dg-require-effective-target arm_neon_ok } */
48367 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48368 +/* { dg-options "-save-temps -O0" } */
48369 +/* { dg-add-options arm_neon } */
48370  
48371  #include "arm_neon.h"
48372  
48373 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c
48374 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c   2007-07-25 14:28:31.000000000 +0200
48375 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c   2010-01-25 09:50:29.475686346 +0100
48376 @@ -3,7 +3,8 @@
48377  
48378  /* { dg-do assemble } */
48379  /* { dg-require-effective-target arm_neon_ok } */
48380 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48381 +/* { dg-options "-save-temps -O0" } */
48382 +/* { dg-add-options arm_neon } */
48383  
48384  #include "arm_neon.h"
48385  
48386 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c
48387 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c    2007-07-25 14:28:31.000000000 +0200
48388 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c    2010-01-25 09:50:29.475686346 +0100
48389 @@ -3,7 +3,8 @@
48390  
48391  /* { dg-do assemble } */
48392  /* { dg-require-effective-target arm_neon_ok } */
48393 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48394 +/* { dg-options "-save-temps -O0" } */
48395 +/* { dg-add-options arm_neon } */
48396  
48397  #include "arm_neon.h"
48398  
48399 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c
48400 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c   2007-07-25 14:28:31.000000000 +0200
48401 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c   2010-01-25 09:50:29.475686346 +0100
48402 @@ -3,7 +3,8 @@
48403  
48404  /* { dg-do assemble } */
48405  /* { dg-require-effective-target arm_neon_ok } */
48406 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48407 +/* { dg-options "-save-temps -O0" } */
48408 +/* { dg-add-options arm_neon } */
48409  
48410  #include "arm_neon.h"
48411  
48412 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c
48413 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c   2007-07-25 14:28:31.000000000 +0200
48414 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c   2010-01-25 09:50:29.475686346 +0100
48415 @@ -3,7 +3,8 @@
48416  
48417  /* { dg-do assemble } */
48418  /* { dg-require-effective-target arm_neon_ok } */
48419 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48420 +/* { dg-options "-save-temps -O0" } */
48421 +/* { dg-add-options arm_neon } */
48422  
48423  #include "arm_neon.h"
48424  
48425 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c
48426 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c   2007-07-25 14:28:31.000000000 +0200
48427 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c   2010-01-25 09:50:29.475686346 +0100
48428 @@ -3,7 +3,8 @@
48429  
48430  /* { dg-do assemble } */
48431  /* { dg-require-effective-target arm_neon_ok } */
48432 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48433 +/* { dg-options "-save-temps -O0" } */
48434 +/* { dg-add-options arm_neon } */
48435  
48436  #include "arm_neon.h"
48437  
48438 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c
48439 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c    2007-07-25 14:28:31.000000000 +0200
48440 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c    2010-01-25 09:50:29.475686346 +0100
48441 @@ -3,7 +3,8 @@
48442  
48443  /* { dg-do assemble } */
48444  /* { dg-require-effective-target arm_neon_ok } */
48445 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48446 +/* { dg-options "-save-temps -O0" } */
48447 +/* { dg-add-options arm_neon } */
48448  
48449  #include "arm_neon.h"
48450  
48451 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c
48452 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c  2007-07-25 14:28:31.000000000 +0200
48453 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c  2010-01-25 09:50:29.475686346 +0100
48454 @@ -3,7 +3,8 @@
48455  
48456  /* { dg-do assemble } */
48457  /* { dg-require-effective-target arm_neon_ok } */
48458 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48459 +/* { dg-options "-save-temps -O0" } */
48460 +/* { dg-add-options arm_neon } */
48461  
48462  #include "arm_neon.h"
48463  
48464 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c
48465 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c  2007-07-25 14:28:31.000000000 +0200
48466 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c  2010-01-25 09:50:29.475686346 +0100
48467 @@ -3,7 +3,8 @@
48468  
48469  /* { dg-do assemble } */
48470  /* { dg-require-effective-target arm_neon_ok } */
48471 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48472 +/* { dg-options "-save-temps -O0" } */
48473 +/* { dg-add-options arm_neon } */
48474  
48475  #include "arm_neon.h"
48476  
48477 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c
48478 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c   2007-07-25 14:28:31.000000000 +0200
48479 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c   2010-01-25 09:50:29.475686346 +0100
48480 @@ -3,7 +3,8 @@
48481  
48482  /* { dg-do assemble } */
48483  /* { dg-require-effective-target arm_neon_ok } */
48484 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48485 +/* { dg-options "-save-temps -O0" } */
48486 +/* { dg-add-options arm_neon } */
48487  
48488  #include "arm_neon.h"
48489  
48490 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c
48491 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c  2007-07-25 14:28:31.000000000 +0200
48492 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c  2010-01-25 09:50:29.475686346 +0100
48493 @@ -3,7 +3,8 @@
48494  
48495  /* { dg-do assemble } */
48496  /* { dg-require-effective-target arm_neon_ok } */
48497 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48498 +/* { dg-options "-save-temps -O0" } */
48499 +/* { dg-add-options arm_neon } */
48500  
48501  #include "arm_neon.h"
48502  
48503 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c
48504 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c  2007-07-25 14:28:31.000000000 +0200
48505 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c  2010-01-25 09:50:29.475686346 +0100
48506 @@ -3,7 +3,8 @@
48507  
48508  /* { dg-do assemble } */
48509  /* { dg-require-effective-target arm_neon_ok } */
48510 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48511 +/* { dg-options "-save-temps -O0" } */
48512 +/* { dg-add-options arm_neon } */
48513  
48514  #include "arm_neon.h"
48515  
48516 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c
48517 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c   2007-07-25 14:28:31.000000000 +0200
48518 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c   2010-01-25 09:50:29.475686346 +0100
48519 @@ -3,7 +3,8 @@
48520  
48521  /* { dg-do assemble } */
48522  /* { dg-require-effective-target arm_neon_ok } */
48523 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48524 +/* { dg-options "-save-temps -O0" } */
48525 +/* { dg-add-options arm_neon } */
48526  
48527  #include "arm_neon.h"
48528  
48529 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c
48530 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c  2007-07-25 14:28:31.000000000 +0200
48531 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c  2010-01-25 09:50:29.475686346 +0100
48532 @@ -3,7 +3,8 @@
48533  
48534  /* { dg-do assemble } */
48535  /* { dg-require-effective-target arm_neon_ok } */
48536 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48537 +/* { dg-options "-save-temps -O0" } */
48538 +/* { dg-add-options arm_neon } */
48539  
48540  #include "arm_neon.h"
48541  
48542 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c
48543 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c  2007-07-25 14:28:31.000000000 +0200
48544 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c  2010-01-25 09:50:29.475686346 +0100
48545 @@ -3,7 +3,8 @@
48546  
48547  /* { dg-do assemble } */
48548  /* { dg-require-effective-target arm_neon_ok } */
48549 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48550 +/* { dg-options "-save-temps -O0" } */
48551 +/* { dg-add-options arm_neon } */
48552  
48553  #include "arm_neon.h"
48554  
48555 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c
48556 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c  2007-07-25 14:28:31.000000000 +0200
48557 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c  2010-01-25 09:50:29.475686346 +0100
48558 @@ -3,7 +3,8 @@
48559  
48560  /* { dg-do assemble } */
48561  /* { dg-require-effective-target arm_neon_ok } */
48562 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48563 +/* { dg-options "-save-temps -O0" } */
48564 +/* { dg-add-options arm_neon } */
48565  
48566  #include "arm_neon.h"
48567  
48568 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c
48569 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c   2007-07-25 14:28:31.000000000 +0200
48570 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c   2010-01-25 09:50:29.475686346 +0100
48571 @@ -3,7 +3,8 @@
48572  
48573  /* { dg-do assemble } */
48574  /* { dg-require-effective-target arm_neon_ok } */
48575 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48576 +/* { dg-options "-save-temps -O0" } */
48577 +/* { dg-add-options arm_neon } */
48578  
48579  #include "arm_neon.h"
48580  
48581 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c
48582 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c  2007-07-25 14:28:31.000000000 +0200
48583 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c  2010-01-25 09:50:29.475686346 +0100
48584 @@ -3,7 +3,8 @@
48585  
48586  /* { dg-do assemble } */
48587  /* { dg-require-effective-target arm_neon_ok } */
48588 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48589 +/* { dg-options "-save-temps -O0" } */
48590 +/* { dg-add-options arm_neon } */
48591  
48592  #include "arm_neon.h"
48593  
48594 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c
48595 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c  2007-07-25 14:28:31.000000000 +0200
48596 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c  2010-01-25 09:50:29.475686346 +0100
48597 @@ -3,7 +3,8 @@
48598  
48599  /* { dg-do assemble } */
48600  /* { dg-require-effective-target arm_neon_ok } */
48601 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48602 +/* { dg-options "-save-temps -O0" } */
48603 +/* { dg-add-options arm_neon } */
48604  
48605  #include "arm_neon.h"
48606  
48607 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c
48608 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c   2007-07-25 14:28:31.000000000 +0200
48609 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c   2010-01-25 09:50:29.475686346 +0100
48610 @@ -3,7 +3,8 @@
48611  
48612  /* { dg-do assemble } */
48613  /* { dg-require-effective-target arm_neon_ok } */
48614 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48615 +/* { dg-options "-save-temps -O0" } */
48616 +/* { dg-add-options arm_neon } */
48617  
48618  #include "arm_neon.h"
48619  
48620 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c
48621 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c  2007-07-25 14:28:31.000000000 +0200
48622 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c  2010-01-25 09:50:29.475686346 +0100
48623 @@ -3,7 +3,8 @@
48624  
48625  /* { dg-do assemble } */
48626  /* { dg-require-effective-target arm_neon_ok } */
48627 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48628 +/* { dg-options "-save-temps -O0" } */
48629 +/* { dg-add-options arm_neon } */
48630  
48631  #include "arm_neon.h"
48632  
48633 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c
48634 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c  2007-07-25 14:28:31.000000000 +0200
48635 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c  2010-01-25 09:50:29.475686346 +0100
48636 @@ -3,7 +3,8 @@
48637  
48638  /* { dg-do assemble } */
48639  /* { dg-require-effective-target arm_neon_ok } */
48640 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48641 +/* { dg-options "-save-temps -O0" } */
48642 +/* { dg-add-options arm_neon } */
48643  
48644  #include "arm_neon.h"
48645  
48646 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c
48647 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c   2007-07-25 14:28:31.000000000 +0200
48648 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c   2010-01-25 09:50:29.475686346 +0100
48649 @@ -3,7 +3,8 @@
48650  
48651  /* { dg-do assemble } */
48652  /* { dg-require-effective-target arm_neon_ok } */
48653 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48654 +/* { dg-options "-save-temps -O0" } */
48655 +/* { dg-add-options arm_neon } */
48656  
48657  #include "arm_neon.h"
48658  
48659 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c
48660 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c  2007-07-25 14:28:31.000000000 +0200
48661 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c  2010-01-25 09:50:29.475686346 +0100
48662 @@ -3,7 +3,8 @@
48663  
48664  /* { dg-do assemble } */
48665  /* { dg-require-effective-target arm_neon_ok } */
48666 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48667 +/* { dg-options "-save-temps -O0" } */
48668 +/* { dg-add-options arm_neon } */
48669  
48670  #include "arm_neon.h"
48671  
48672 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c
48673 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c  2007-07-25 14:28:31.000000000 +0200
48674 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c  2010-01-25 09:50:29.475686346 +0100
48675 @@ -3,7 +3,8 @@
48676  
48677  /* { dg-do assemble } */
48678  /* { dg-require-effective-target arm_neon_ok } */
48679 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48680 +/* { dg-options "-save-temps -O0" } */
48681 +/* { dg-add-options arm_neon } */
48682  
48683  #include "arm_neon.h"
48684  
48685 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c
48686 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c  2007-07-25 14:28:31.000000000 +0200
48687 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c  2010-01-25 09:50:29.475686346 +0100
48688 @@ -3,7 +3,8 @@
48689  
48690  /* { dg-do assemble } */
48691  /* { dg-require-effective-target arm_neon_ok } */
48692 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48693 +/* { dg-options "-save-temps -O0" } */
48694 +/* { dg-add-options arm_neon } */
48695  
48696  #include "arm_neon.h"
48697  
48698 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c
48699 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c   2007-07-25 14:28:31.000000000 +0200
48700 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c   2010-01-25 09:50:29.475686346 +0100
48701 @@ -3,7 +3,8 @@
48702  
48703  /* { dg-do assemble } */
48704  /* { dg-require-effective-target arm_neon_ok } */
48705 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48706 +/* { dg-options "-save-temps -O0" } */
48707 +/* { dg-add-options arm_neon } */
48708  
48709  #include "arm_neon.h"
48710  
48711 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c
48712 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c  2007-07-25 14:28:31.000000000 +0200
48713 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c  2010-01-25 09:50:29.475686346 +0100
48714 @@ -3,7 +3,8 @@
48715  
48716  /* { dg-do assemble } */
48717  /* { dg-require-effective-target arm_neon_ok } */
48718 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48719 +/* { dg-options "-save-temps -O0" } */
48720 +/* { dg-add-options arm_neon } */
48721  
48722  #include "arm_neon.h"
48723  
48724 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c
48725 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c  2007-07-25 14:28:31.000000000 +0200
48726 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c  2010-01-25 09:50:29.475686346 +0100
48727 @@ -3,7 +3,8 @@
48728  
48729  /* { dg-do assemble } */
48730  /* { dg-require-effective-target arm_neon_ok } */
48731 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48732 +/* { dg-options "-save-temps -O0" } */
48733 +/* { dg-add-options arm_neon } */
48734  
48735  #include "arm_neon.h"
48736  
48737 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c
48738 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c   2007-07-25 14:28:31.000000000 +0200
48739 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c   2010-01-25 09:50:29.475686346 +0100
48740 @@ -3,7 +3,8 @@
48741  
48742  /* { dg-do assemble } */
48743  /* { dg-require-effective-target arm_neon_ok } */
48744 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48745 +/* { dg-options "-save-temps -O0" } */
48746 +/* { dg-add-options arm_neon } */
48747  
48748  #include "arm_neon.h"
48749  
48750 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c
48751 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c  2007-07-25 14:28:31.000000000 +0200
48752 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c  2010-01-25 09:50:29.475686346 +0100
48753 @@ -3,7 +3,8 @@
48754  
48755  /* { dg-do assemble } */
48756  /* { dg-require-effective-target arm_neon_ok } */
48757 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48758 +/* { dg-options "-save-temps -O0" } */
48759 +/* { dg-add-options arm_neon } */
48760  
48761  #include "arm_neon.h"
48762  
48763 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c
48764 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c  2007-07-25 14:28:31.000000000 +0200
48765 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c  2010-01-25 09:50:29.475686346 +0100
48766 @@ -3,7 +3,8 @@
48767  
48768  /* { dg-do assemble } */
48769  /* { dg-require-effective-target arm_neon_ok } */
48770 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48771 +/* { dg-options "-save-temps -O0" } */
48772 +/* { dg-add-options arm_neon } */
48773  
48774  #include "arm_neon.h"
48775  
48776 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c
48777 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c   2007-07-25 14:28:31.000000000 +0200
48778 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c   2010-01-25 09:50:29.475686346 +0100
48779 @@ -3,7 +3,8 @@
48780  
48781  /* { dg-do assemble } */
48782  /* { dg-require-effective-target arm_neon_ok } */
48783 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48784 +/* { dg-options "-save-temps -O0" } */
48785 +/* { dg-add-options arm_neon } */
48786  
48787  #include "arm_neon.h"
48788  
48789 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c
48790 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c  2007-07-25 14:28:31.000000000 +0200
48791 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c  2010-01-25 09:50:29.475686346 +0100
48792 @@ -3,7 +3,8 @@
48793  
48794  /* { dg-do assemble } */
48795  /* { dg-require-effective-target arm_neon_ok } */
48796 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48797 +/* { dg-options "-save-temps -O0" } */
48798 +/* { dg-add-options arm_neon } */
48799  
48800  #include "arm_neon.h"
48801  
48802 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c
48803 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c  2007-07-25 14:28:31.000000000 +0200
48804 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c  2010-01-25 09:50:29.475686346 +0100
48805 @@ -3,7 +3,8 @@
48806  
48807  /* { dg-do assemble } */
48808  /* { dg-require-effective-target arm_neon_ok } */
48809 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48810 +/* { dg-options "-save-temps -O0" } */
48811 +/* { dg-add-options arm_neon } */
48812  
48813  #include "arm_neon.h"
48814  
48815 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c
48816 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c  2007-07-25 14:28:31.000000000 +0200
48817 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c  2010-01-25 09:50:29.475686346 +0100
48818 @@ -3,7 +3,8 @@
48819  
48820  /* { dg-do assemble } */
48821  /* { dg-require-effective-target arm_neon_ok } */
48822 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48823 +/* { dg-options "-save-temps -O0" } */
48824 +/* { dg-add-options arm_neon } */
48825  
48826  #include "arm_neon.h"
48827  
48828 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c
48829 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c   2007-07-25 14:28:31.000000000 +0200
48830 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c   2010-01-25 09:50:29.475686346 +0100
48831 @@ -3,7 +3,8 @@
48832  
48833  /* { dg-do assemble } */
48834  /* { dg-require-effective-target arm_neon_ok } */
48835 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48836 +/* { dg-options "-save-temps -O0" } */
48837 +/* { dg-add-options arm_neon } */
48838  
48839  #include "arm_neon.h"
48840  
48841 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c
48842 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c   2007-07-25 14:28:31.000000000 +0200
48843 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c   2010-01-25 09:50:29.475686346 +0100
48844 @@ -3,7 +3,8 @@
48845  
48846  /* { dg-do assemble } */
48847  /* { dg-require-effective-target arm_neon_ok } */
48848 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48849 +/* { dg-options "-save-temps -O0" } */
48850 +/* { dg-add-options arm_neon } */
48851  
48852  #include "arm_neon.h"
48853  
48854 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c
48855 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c   2007-07-25 14:28:31.000000000 +0200
48856 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c   2010-01-25 09:50:29.475686346 +0100
48857 @@ -3,7 +3,8 @@
48858  
48859  /* { dg-do assemble } */
48860  /* { dg-require-effective-target arm_neon_ok } */
48861 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48862 +/* { dg-options "-save-temps -O0" } */
48863 +/* { dg-add-options arm_neon } */
48864  
48865  #include "arm_neon.h"
48866  
48867 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c
48868 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c    2007-07-25 14:28:31.000000000 +0200
48869 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c    2010-01-25 09:50:29.475686346 +0100
48870 @@ -3,7 +3,8 @@
48871  
48872  /* { dg-do assemble } */
48873  /* { dg-require-effective-target arm_neon_ok } */
48874 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48875 +/* { dg-options "-save-temps -O0" } */
48876 +/* { dg-add-options arm_neon } */
48877  
48878  #include "arm_neon.h"
48879  
48880 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c
48881 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c   2007-07-25 14:28:31.000000000 +0200
48882 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c   2010-01-25 09:50:29.475686346 +0100
48883 @@ -3,7 +3,8 @@
48884  
48885  /* { dg-do assemble } */
48886  /* { dg-require-effective-target arm_neon_ok } */
48887 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48888 +/* { dg-options "-save-temps -O0" } */
48889 +/* { dg-add-options arm_neon } */
48890  
48891  #include "arm_neon.h"
48892  
48893 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c
48894 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c   2007-07-25 14:28:31.000000000 +0200
48895 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c   2010-01-25 09:50:29.475686346 +0100
48896 @@ -3,7 +3,8 @@
48897  
48898  /* { dg-do assemble } */
48899  /* { dg-require-effective-target arm_neon_ok } */
48900 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48901 +/* { dg-options "-save-temps -O0" } */
48902 +/* { dg-add-options arm_neon } */
48903  
48904  #include "arm_neon.h"
48905  
48906 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c
48907 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c   2007-07-25 14:28:31.000000000 +0200
48908 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c   2010-01-25 09:50:29.475686346 +0100
48909 @@ -3,7 +3,8 @@
48910  
48911  /* { dg-do assemble } */
48912  /* { dg-require-effective-target arm_neon_ok } */
48913 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48914 +/* { dg-options "-save-temps -O0" } */
48915 +/* { dg-add-options arm_neon } */
48916  
48917  #include "arm_neon.h"
48918  
48919 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c
48920 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c   2007-07-25 14:28:31.000000000 +0200
48921 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c   2010-01-25 09:50:29.475686346 +0100
48922 @@ -3,7 +3,8 @@
48923  
48924  /* { dg-do assemble } */
48925  /* { dg-require-effective-target arm_neon_ok } */
48926 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48927 +/* { dg-options "-save-temps -O0" } */
48928 +/* { dg-add-options arm_neon } */
48929  
48930  #include "arm_neon.h"
48931  
48932 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c
48933 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c   2007-07-25 14:28:31.000000000 +0200
48934 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c   2010-01-25 09:50:29.475686346 +0100
48935 @@ -3,7 +3,8 @@
48936  
48937  /* { dg-do assemble } */
48938  /* { dg-require-effective-target arm_neon_ok } */
48939 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48940 +/* { dg-options "-save-temps -O0" } */
48941 +/* { dg-add-options arm_neon } */
48942  
48943  #include "arm_neon.h"
48944  
48945 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c
48946 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c   2007-07-25 14:28:31.000000000 +0200
48947 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c   2010-01-25 09:50:29.475686346 +0100
48948 @@ -3,7 +3,8 @@
48949  
48950  /* { dg-do assemble } */
48951  /* { dg-require-effective-target arm_neon_ok } */
48952 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48953 +/* { dg-options "-save-temps -O0" } */
48954 +/* { dg-add-options arm_neon } */
48955  
48956  #include "arm_neon.h"
48957  
48958 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c
48959 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c    2007-07-25 14:28:31.000000000 +0200
48960 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c    2010-01-25 09:50:29.475686346 +0100
48961 @@ -3,7 +3,8 @@
48962  
48963  /* { dg-do assemble } */
48964  /* { dg-require-effective-target arm_neon_ok } */
48965 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48966 +/* { dg-options "-save-temps -O0" } */
48967 +/* { dg-add-options arm_neon } */
48968  
48969  #include "arm_neon.h"
48970  
48971 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c
48972 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c  2007-07-25 14:28:31.000000000 +0200
48973 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c  2010-01-25 09:50:29.475686346 +0100
48974 @@ -3,7 +3,8 @@
48975  
48976  /* { dg-do assemble } */
48977  /* { dg-require-effective-target arm_neon_ok } */
48978 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48979 +/* { dg-options "-save-temps -O0" } */
48980 +/* { dg-add-options arm_neon } */
48981  
48982  #include "arm_neon.h"
48983  
48984 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c
48985 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c  2007-07-25 14:28:31.000000000 +0200
48986 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c  2010-01-25 09:50:29.475686346 +0100
48987 @@ -3,7 +3,8 @@
48988  
48989  /* { dg-do assemble } */
48990  /* { dg-require-effective-target arm_neon_ok } */
48991 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
48992 +/* { dg-options "-save-temps -O0" } */
48993 +/* { dg-add-options arm_neon } */
48994  
48995  #include "arm_neon.h"
48996  
48997 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c
48998 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c   2007-07-25 14:28:31.000000000 +0200
48999 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c   2010-01-25 09:50:29.475686346 +0100
49000 @@ -3,7 +3,8 @@
49001  
49002  /* { dg-do assemble } */
49003  /* { dg-require-effective-target arm_neon_ok } */
49004 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49005 +/* { dg-options "-save-temps -O0" } */
49006 +/* { dg-add-options arm_neon } */
49007  
49008  #include "arm_neon.h"
49009  
49010 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c
49011 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c  2007-07-25 14:28:31.000000000 +0200
49012 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c  2010-01-25 09:50:29.475686346 +0100
49013 @@ -3,7 +3,8 @@
49014  
49015  /* { dg-do assemble } */
49016  /* { dg-require-effective-target arm_neon_ok } */
49017 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49018 +/* { dg-options "-save-temps -O0" } */
49019 +/* { dg-add-options arm_neon } */
49020  
49021  #include "arm_neon.h"
49022  
49023 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c
49024 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c  2007-07-25 14:28:31.000000000 +0200
49025 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c  2010-01-25 09:50:29.475686346 +0100
49026 @@ -3,7 +3,8 @@
49027  
49028  /* { dg-do assemble } */
49029  /* { dg-require-effective-target arm_neon_ok } */
49030 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49031 +/* { dg-options "-save-temps -O0" } */
49032 +/* { dg-add-options arm_neon } */
49033  
49034  #include "arm_neon.h"
49035  
49036 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c
49037 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c  2007-07-25 14:28:31.000000000 +0200
49038 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c  2010-01-25 09:50:29.475686346 +0100
49039 @@ -3,7 +3,8 @@
49040  
49041  /* { dg-do assemble } */
49042  /* { dg-require-effective-target arm_neon_ok } */
49043 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49044 +/* { dg-options "-save-temps -O0" } */
49045 +/* { dg-add-options arm_neon } */
49046  
49047  #include "arm_neon.h"
49048  
49049 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c
49050 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c   2007-07-25 14:28:31.000000000 +0200
49051 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c   2010-01-25 09:50:29.475686346 +0100
49052 @@ -3,7 +3,8 @@
49053  
49054  /* { dg-do assemble } */
49055  /* { dg-require-effective-target arm_neon_ok } */
49056 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49057 +/* { dg-options "-save-temps -O0" } */
49058 +/* { dg-add-options arm_neon } */
49059  
49060  #include "arm_neon.h"
49061  
49062 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c
49063 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c  2007-07-25 14:28:31.000000000 +0200
49064 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c  2010-01-25 09:50:29.475686346 +0100
49065 @@ -3,7 +3,8 @@
49066  
49067  /* { dg-do assemble } */
49068  /* { dg-require-effective-target arm_neon_ok } */
49069 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49070 +/* { dg-options "-save-temps -O0" } */
49071 +/* { dg-add-options arm_neon } */
49072  
49073  #include "arm_neon.h"
49074  
49075 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c
49076 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c  2007-07-25 14:28:31.000000000 +0200
49077 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c  2010-01-25 09:50:29.475686346 +0100
49078 @@ -3,7 +3,8 @@
49079  
49080  /* { dg-do assemble } */
49081  /* { dg-require-effective-target arm_neon_ok } */
49082 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49083 +/* { dg-options "-save-temps -O0" } */
49084 +/* { dg-add-options arm_neon } */
49085  
49086  #include "arm_neon.h"
49087  
49088 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c
49089 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c   2007-07-25 14:28:31.000000000 +0200
49090 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c   2010-01-25 09:50:29.475686346 +0100
49091 @@ -3,7 +3,8 @@
49092  
49093  /* { dg-do assemble } */
49094  /* { dg-require-effective-target arm_neon_ok } */
49095 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49096 +/* { dg-options "-save-temps -O0" } */
49097 +/* { dg-add-options arm_neon } */
49098  
49099  #include "arm_neon.h"
49100  
49101 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c
49102 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c  2007-07-25 14:28:31.000000000 +0200
49103 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c  2010-01-25 09:50:29.475686346 +0100
49104 @@ -3,7 +3,8 @@
49105  
49106  /* { dg-do assemble } */
49107  /* { dg-require-effective-target arm_neon_ok } */
49108 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49109 +/* { dg-options "-save-temps -O0" } */
49110 +/* { dg-add-options arm_neon } */
49111  
49112  #include "arm_neon.h"
49113  
49114 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c
49115 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c  2007-07-25 14:28:31.000000000 +0200
49116 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c  2010-01-25 09:50:29.475686346 +0100
49117 @@ -3,7 +3,8 @@
49118  
49119  /* { dg-do assemble } */
49120  /* { dg-require-effective-target arm_neon_ok } */
49121 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49122 +/* { dg-options "-save-temps -O0" } */
49123 +/* { dg-add-options arm_neon } */
49124  
49125  #include "arm_neon.h"
49126  
49127 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c
49128 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c   2007-07-25 14:28:31.000000000 +0200
49129 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c   2010-01-25 09:50:29.475686346 +0100
49130 @@ -3,7 +3,8 @@
49131  
49132  /* { dg-do assemble } */
49133  /* { dg-require-effective-target arm_neon_ok } */
49134 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49135 +/* { dg-options "-save-temps -O0" } */
49136 +/* { dg-add-options arm_neon } */
49137  
49138  #include "arm_neon.h"
49139  
49140 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c
49141 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c  2007-07-25 14:28:31.000000000 +0200
49142 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c  2010-01-25 09:50:29.475686346 +0100
49143 @@ -3,7 +3,8 @@
49144  
49145  /* { dg-do assemble } */
49146  /* { dg-require-effective-target arm_neon_ok } */
49147 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49148 +/* { dg-options "-save-temps -O0" } */
49149 +/* { dg-add-options arm_neon } */
49150  
49151  #include "arm_neon.h"
49152  
49153 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c
49154 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c  2007-07-25 14:28:31.000000000 +0200
49155 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c  2010-01-25 09:50:29.485687478 +0100
49156 @@ -3,7 +3,8 @@
49157  
49158  /* { dg-do assemble } */
49159  /* { dg-require-effective-target arm_neon_ok } */
49160 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49161 +/* { dg-options "-save-temps -O0" } */
49162 +/* { dg-add-options arm_neon } */
49163  
49164  #include "arm_neon.h"
49165  
49166 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c
49167 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c  2007-07-25 14:28:31.000000000 +0200
49168 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c  2010-01-25 09:50:29.485687478 +0100
49169 @@ -3,7 +3,8 @@
49170  
49171  /* { dg-do assemble } */
49172  /* { dg-require-effective-target arm_neon_ok } */
49173 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49174 +/* { dg-options "-save-temps -O0" } */
49175 +/* { dg-add-options arm_neon } */
49176  
49177  #include "arm_neon.h"
49178  
49179 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c
49180 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c   2007-07-25 14:28:31.000000000 +0200
49181 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c   2010-01-25 09:50:29.485687478 +0100
49182 @@ -3,7 +3,8 @@
49183  
49184  /* { dg-do assemble } */
49185  /* { dg-require-effective-target arm_neon_ok } */
49186 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49187 +/* { dg-options "-save-temps -O0" } */
49188 +/* { dg-add-options arm_neon } */
49189  
49190  #include "arm_neon.h"
49191  
49192 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c
49193 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c  2007-07-25 14:28:31.000000000 +0200
49194 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c  2010-01-25 09:50:29.485687478 +0100
49195 @@ -3,7 +3,8 @@
49196  
49197  /* { dg-do assemble } */
49198  /* { dg-require-effective-target arm_neon_ok } */
49199 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49200 +/* { dg-options "-save-temps -O0" } */
49201 +/* { dg-add-options arm_neon } */
49202  
49203  #include "arm_neon.h"
49204  
49205 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c
49206 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c  2007-07-25 14:28:31.000000000 +0200
49207 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c  2010-01-25 09:50:29.485687478 +0100
49208 @@ -3,7 +3,8 @@
49209  
49210  /* { dg-do assemble } */
49211  /* { dg-require-effective-target arm_neon_ok } */
49212 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49213 +/* { dg-options "-save-temps -O0" } */
49214 +/* { dg-add-options arm_neon } */
49215  
49216  #include "arm_neon.h"
49217  
49218 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c
49219 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c   2007-07-25 14:28:31.000000000 +0200
49220 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c   2010-01-25 09:50:29.485687478 +0100
49221 @@ -3,7 +3,8 @@
49222  
49223  /* { dg-do assemble } */
49224  /* { dg-require-effective-target arm_neon_ok } */
49225 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49226 +/* { dg-options "-save-temps -O0" } */
49227 +/* { dg-add-options arm_neon } */
49228  
49229  #include "arm_neon.h"
49230  
49231 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c
49232 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c  2007-07-25 14:28:31.000000000 +0200
49233 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c  2010-01-25 09:50:29.485687478 +0100
49234 @@ -3,7 +3,8 @@
49235  
49236  /* { dg-do assemble } */
49237  /* { dg-require-effective-target arm_neon_ok } */
49238 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49239 +/* { dg-options "-save-temps -O0" } */
49240 +/* { dg-add-options arm_neon } */
49241  
49242  #include "arm_neon.h"
49243  
49244 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c
49245 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c  2007-07-25 14:28:31.000000000 +0200
49246 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c  2010-01-25 09:50:29.485687478 +0100
49247 @@ -3,7 +3,8 @@
49248  
49249  /* { dg-do assemble } */
49250  /* { dg-require-effective-target arm_neon_ok } */
49251 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49252 +/* { dg-options "-save-temps -O0" } */
49253 +/* { dg-add-options arm_neon } */
49254  
49255  #include "arm_neon.h"
49256  
49257 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c
49258 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c   2007-07-25 14:28:31.000000000 +0200
49259 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c   2010-01-25 09:50:29.485687478 +0100
49260 @@ -3,7 +3,8 @@
49261  
49262  /* { dg-do assemble } */
49263  /* { dg-require-effective-target arm_neon_ok } */
49264 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49265 +/* { dg-options "-save-temps -O0" } */
49266 +/* { dg-add-options arm_neon } */
49267  
49268  #include "arm_neon.h"
49269  
49270 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c
49271 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c  2007-07-25 14:28:31.000000000 +0200
49272 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c  2010-01-25 09:50:29.485687478 +0100
49273 @@ -3,7 +3,8 @@
49274  
49275  /* { dg-do assemble } */
49276  /* { dg-require-effective-target arm_neon_ok } */
49277 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49278 +/* { dg-options "-save-temps -O0" } */
49279 +/* { dg-add-options arm_neon } */
49280  
49281  #include "arm_neon.h"
49282  
49283 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c
49284 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c  2007-07-25 14:28:31.000000000 +0200
49285 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c  2010-01-25 09:50:29.485687478 +0100
49286 @@ -3,7 +3,8 @@
49287  
49288  /* { dg-do assemble } */
49289  /* { dg-require-effective-target arm_neon_ok } */
49290 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49291 +/* { dg-options "-save-temps -O0" } */
49292 +/* { dg-add-options arm_neon } */
49293  
49294  #include "arm_neon.h"
49295  
49296 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c
49297 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c  2007-07-25 14:28:31.000000000 +0200
49298 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c  2010-01-25 09:50:29.485687478 +0100
49299 @@ -3,7 +3,8 @@
49300  
49301  /* { dg-do assemble } */
49302  /* { dg-require-effective-target arm_neon_ok } */
49303 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49304 +/* { dg-options "-save-temps -O0" } */
49305 +/* { dg-add-options arm_neon } */
49306  
49307  #include "arm_neon.h"
49308  
49309 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c
49310 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c   2007-07-25 14:28:31.000000000 +0200
49311 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c   2010-01-25 09:50:29.485687478 +0100
49312 @@ -3,7 +3,8 @@
49313  
49314  /* { dg-do assemble } */
49315  /* { dg-require-effective-target arm_neon_ok } */
49316 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49317 +/* { dg-options "-save-temps -O0" } */
49318 +/* { dg-add-options arm_neon } */
49319  
49320  #include "arm_neon.h"
49321  
49322 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c
49323 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c  2007-07-25 14:28:31.000000000 +0200
49324 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c  2010-01-25 09:50:29.485687478 +0100
49325 @@ -3,7 +3,8 @@
49326  
49327  /* { dg-do assemble } */
49328  /* { dg-require-effective-target arm_neon_ok } */
49329 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49330 +/* { dg-options "-save-temps -O0" } */
49331 +/* { dg-add-options arm_neon } */
49332  
49333  #include "arm_neon.h"
49334  
49335 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c
49336 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c  2007-07-25 14:28:31.000000000 +0200
49337 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c  2010-01-25 09:50:29.485687478 +0100
49338 @@ -3,7 +3,8 @@
49339  
49340  /* { dg-do assemble } */
49341  /* { dg-require-effective-target arm_neon_ok } */
49342 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49343 +/* { dg-options "-save-temps -O0" } */
49344 +/* { dg-add-options arm_neon } */
49345  
49346  #include "arm_neon.h"
49347  
49348 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c
49349 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c   2007-07-25 14:28:31.000000000 +0200
49350 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c   2010-01-25 09:50:29.485687478 +0100
49351 @@ -3,7 +3,8 @@
49352  
49353  /* { dg-do assemble } */
49354  /* { dg-require-effective-target arm_neon_ok } */
49355 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49356 +/* { dg-options "-save-temps -O0" } */
49357 +/* { dg-add-options arm_neon } */
49358  
49359  #include "arm_neon.h"
49360  
49361 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c
49362 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c   2007-07-25 14:28:31.000000000 +0200
49363 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c   2010-01-25 09:50:29.485687478 +0100
49364 @@ -3,7 +3,8 @@
49365  
49366  /* { dg-do assemble } */
49367  /* { dg-require-effective-target arm_neon_ok } */
49368 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49369 +/* { dg-options "-save-temps -O0" } */
49370 +/* { dg-add-options arm_neon } */
49371  
49372  #include "arm_neon.h"
49373  
49374 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c
49375 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c   2007-07-25 14:28:31.000000000 +0200
49376 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c   2010-01-25 09:50:29.485687478 +0100
49377 @@ -3,7 +3,8 @@
49378  
49379  /* { dg-do assemble } */
49380  /* { dg-require-effective-target arm_neon_ok } */
49381 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49382 +/* { dg-options "-save-temps -O0" } */
49383 +/* { dg-add-options arm_neon } */
49384  
49385  #include "arm_neon.h"
49386  
49387 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c
49388 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c    2007-07-25 14:28:31.000000000 +0200
49389 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c    2010-01-25 09:50:29.485687478 +0100
49390 @@ -3,7 +3,8 @@
49391  
49392  /* { dg-do assemble } */
49393  /* { dg-require-effective-target arm_neon_ok } */
49394 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49395 +/* { dg-options "-save-temps -O0" } */
49396 +/* { dg-add-options arm_neon } */
49397  
49398  #include "arm_neon.h"
49399  
49400 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c
49401 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c   2007-07-25 14:28:31.000000000 +0200
49402 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c   2010-01-25 09:50:29.485687478 +0100
49403 @@ -3,7 +3,8 @@
49404  
49405  /* { dg-do assemble } */
49406  /* { dg-require-effective-target arm_neon_ok } */
49407 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49408 +/* { dg-options "-save-temps -O0" } */
49409 +/* { dg-add-options arm_neon } */
49410  
49411  #include "arm_neon.h"
49412  
49413 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c
49414 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c   2007-07-25 14:28:31.000000000 +0200
49415 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c   2010-01-25 09:50:29.485687478 +0100
49416 @@ -3,7 +3,8 @@
49417  
49418  /* { dg-do assemble } */
49419  /* { dg-require-effective-target arm_neon_ok } */
49420 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49421 +/* { dg-options "-save-temps -O0" } */
49422 +/* { dg-add-options arm_neon } */
49423  
49424  #include "arm_neon.h"
49425  
49426 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c
49427 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c   2007-07-25 14:28:31.000000000 +0200
49428 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c   2010-01-25 09:50:29.485687478 +0100
49429 @@ -3,7 +3,8 @@
49430  
49431  /* { dg-do assemble } */
49432  /* { dg-require-effective-target arm_neon_ok } */
49433 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49434 +/* { dg-options "-save-temps -O0" } */
49435 +/* { dg-add-options arm_neon } */
49436  
49437  #include "arm_neon.h"
49438  
49439 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c
49440 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c    2007-07-25 14:28:31.000000000 +0200
49441 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c    2010-01-25 09:50:29.485687478 +0100
49442 @@ -3,7 +3,8 @@
49443  
49444  /* { dg-do assemble } */
49445  /* { dg-require-effective-target arm_neon_ok } */
49446 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49447 +/* { dg-options "-save-temps -O0" } */
49448 +/* { dg-add-options arm_neon } */
49449  
49450  #include "arm_neon.h"
49451  
49452 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c
49453 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c   2007-07-25 14:28:31.000000000 +0200
49454 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c   2010-01-25 09:50:29.485687478 +0100
49455 @@ -3,7 +3,8 @@
49456  
49457  /* { dg-do assemble } */
49458  /* { dg-require-effective-target arm_neon_ok } */
49459 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49460 +/* { dg-options "-save-temps -O0" } */
49461 +/* { dg-add-options arm_neon } */
49462  
49463  #include "arm_neon.h"
49464  
49465 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c
49466 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c   2007-07-25 14:28:31.000000000 +0200
49467 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c   2010-01-25 09:50:29.485687478 +0100
49468 @@ -3,7 +3,8 @@
49469  
49470  /* { dg-do assemble } */
49471  /* { dg-require-effective-target arm_neon_ok } */
49472 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49473 +/* { dg-options "-save-temps -O0" } */
49474 +/* { dg-add-options arm_neon } */
49475  
49476  #include "arm_neon.h"
49477  
49478 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c
49479 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c   2007-07-25 14:28:31.000000000 +0200
49480 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c   2010-01-25 09:50:29.485687478 +0100
49481 @@ -3,7 +3,8 @@
49482  
49483  /* { dg-do assemble } */
49484  /* { dg-require-effective-target arm_neon_ok } */
49485 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49486 +/* { dg-options "-save-temps -O0" } */
49487 +/* { dg-add-options arm_neon } */
49488  
49489  #include "arm_neon.h"
49490  
49491 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c
49492 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c   2007-07-25 14:28:31.000000000 +0200
49493 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c   2010-01-25 09:50:29.485687478 +0100
49494 @@ -3,7 +3,8 @@
49495  
49496  /* { dg-do assemble } */
49497  /* { dg-require-effective-target arm_neon_ok } */
49498 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49499 +/* { dg-options "-save-temps -O0" } */
49500 +/* { dg-add-options arm_neon } */
49501  
49502  #include "arm_neon.h"
49503  
49504 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c
49505 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c   2007-07-25 14:28:31.000000000 +0200
49506 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c   2010-01-25 09:50:29.485687478 +0100
49507 @@ -3,7 +3,8 @@
49508  
49509  /* { dg-do assemble } */
49510  /* { dg-require-effective-target arm_neon_ok } */
49511 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49512 +/* { dg-options "-save-temps -O0" } */
49513 +/* { dg-add-options arm_neon } */
49514  
49515  #include "arm_neon.h"
49516  
49517 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c
49518 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c    2007-07-25 14:28:31.000000000 +0200
49519 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c    2010-01-25 09:50:29.485687478 +0100
49520 @@ -3,7 +3,8 @@
49521  
49522  /* { dg-do assemble } */
49523  /* { dg-require-effective-target arm_neon_ok } */
49524 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49525 +/* { dg-options "-save-temps -O0" } */
49526 +/* { dg-add-options arm_neon } */
49527  
49528  #include "arm_neon.h"
49529  
49530 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c
49531 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c   2007-07-25 14:28:31.000000000 +0200
49532 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c   2010-01-25 09:50:29.485687478 +0100
49533 @@ -3,7 +3,8 @@
49534  
49535  /* { dg-do assemble } */
49536  /* { dg-require-effective-target arm_neon_ok } */
49537 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49538 +/* { dg-options "-save-temps -O0" } */
49539 +/* { dg-add-options arm_neon } */
49540  
49541  #include "arm_neon.h"
49542  
49543 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c
49544 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c   2007-07-25 14:28:31.000000000 +0200
49545 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c   2010-01-25 09:50:29.485687478 +0100
49546 @@ -3,7 +3,8 @@
49547  
49548  /* { dg-do assemble } */
49549  /* { dg-require-effective-target arm_neon_ok } */
49550 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49551 +/* { dg-options "-save-temps -O0" } */
49552 +/* { dg-add-options arm_neon } */
49553  
49554  #include "arm_neon.h"
49555  
49556 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c
49557 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c    2007-07-25 14:28:31.000000000 +0200
49558 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c    2010-01-25 09:50:29.485687478 +0100
49559 @@ -3,7 +3,8 @@
49560  
49561  /* { dg-do assemble } */
49562  /* { dg-require-effective-target arm_neon_ok } */
49563 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49564 +/* { dg-options "-save-temps -O0" } */
49565 +/* { dg-add-options arm_neon } */
49566  
49567  #include "arm_neon.h"
49568  
49569 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c
49570 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c   2007-07-25 14:28:31.000000000 +0200
49571 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c   2010-01-25 09:50:29.485687478 +0100
49572 @@ -3,7 +3,8 @@
49573  
49574  /* { dg-do assemble } */
49575  /* { dg-require-effective-target arm_neon_ok } */
49576 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49577 +/* { dg-options "-save-temps -O0" } */
49578 +/* { dg-add-options arm_neon } */
49579  
49580  #include "arm_neon.h"
49581  
49582 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c
49583 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c   2007-07-25 14:28:31.000000000 +0200
49584 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c   2010-01-25 09:50:29.485687478 +0100
49585 @@ -3,7 +3,8 @@
49586  
49587  /* { dg-do assemble } */
49588  /* { dg-require-effective-target arm_neon_ok } */
49589 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49590 +/* { dg-options "-save-temps -O0" } */
49591 +/* { dg-add-options arm_neon } */
49592  
49593  #include "arm_neon.h"
49594  
49595 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c
49596 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c   2007-07-25 14:28:31.000000000 +0200
49597 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c   2010-01-25 09:50:29.485687478 +0100
49598 @@ -3,7 +3,8 @@
49599  
49600  /* { dg-do assemble } */
49601  /* { dg-require-effective-target arm_neon_ok } */
49602 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49603 +/* { dg-options "-save-temps -O0" } */
49604 +/* { dg-add-options arm_neon } */
49605  
49606  #include "arm_neon.h"
49607  
49608 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c
49609 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c    2007-07-25 14:28:31.000000000 +0200
49610 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c    2010-01-25 09:50:29.485687478 +0100
49611 @@ -3,7 +3,8 @@
49612  
49613  /* { dg-do assemble } */
49614  /* { dg-require-effective-target arm_neon_ok } */
49615 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49616 +/* { dg-options "-save-temps -O0" } */
49617 +/* { dg-add-options arm_neon } */
49618  
49619  #include "arm_neon.h"
49620  
49621 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c
49622 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c   2007-07-25 14:28:31.000000000 +0200
49623 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c   2010-01-25 09:50:29.485687478 +0100
49624 @@ -3,7 +3,8 @@
49625  
49626  /* { dg-do assemble } */
49627  /* { dg-require-effective-target arm_neon_ok } */
49628 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49629 +/* { dg-options "-save-temps -O0" } */
49630 +/* { dg-add-options arm_neon } */
49631  
49632  #include "arm_neon.h"
49633  
49634 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c
49635 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c   2007-07-25 14:28:31.000000000 +0200
49636 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c   2010-01-25 09:50:29.485687478 +0100
49637 @@ -3,7 +3,8 @@
49638  
49639  /* { dg-do assemble } */
49640  /* { dg-require-effective-target arm_neon_ok } */
49641 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49642 +/* { dg-options "-save-temps -O0" } */
49643 +/* { dg-add-options arm_neon } */
49644  
49645  #include "arm_neon.h"
49646  
49647 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c
49648 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c    2007-07-25 14:28:31.000000000 +0200
49649 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c    2010-01-25 09:50:29.485687478 +0100
49650 @@ -3,7 +3,8 @@
49651  
49652  /* { dg-do assemble } */
49653  /* { dg-require-effective-target arm_neon_ok } */
49654 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49655 +/* { dg-options "-save-temps -O0" } */
49656 +/* { dg-add-options arm_neon } */
49657  
49658  #include "arm_neon.h"
49659  
49660 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c
49661 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c   2007-07-25 14:28:31.000000000 +0200
49662 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c   2010-01-25 09:50:29.485687478 +0100
49663 @@ -3,7 +3,8 @@
49664  
49665  /* { dg-do assemble } */
49666  /* { dg-require-effective-target arm_neon_ok } */
49667 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49668 +/* { dg-options "-save-temps -O0" } */
49669 +/* { dg-add-options arm_neon } */
49670  
49671  #include "arm_neon.h"
49672  
49673 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c
49674 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c   2007-07-25 14:28:31.000000000 +0200
49675 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c   2010-01-25 09:50:29.485687478 +0100
49676 @@ -3,7 +3,8 @@
49677  
49678  /* { dg-do assemble } */
49679  /* { dg-require-effective-target arm_neon_ok } */
49680 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49681 +/* { dg-options "-save-temps -O0" } */
49682 +/* { dg-add-options arm_neon } */
49683  
49684  #include "arm_neon.h"
49685  
49686 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c
49687 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c    2007-07-25 14:28:31.000000000 +0200
49688 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c    2010-01-25 09:50:29.485687478 +0100
49689 @@ -3,7 +3,8 @@
49690  
49691  /* { dg-do assemble } */
49692  /* { dg-require-effective-target arm_neon_ok } */
49693 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49694 +/* { dg-options "-save-temps -O0" } */
49695 +/* { dg-add-options arm_neon } */
49696  
49697  #include "arm_neon.h"
49698  
49699 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c
49700 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c   2007-07-25 14:28:31.000000000 +0200
49701 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c   2010-01-25 09:50:29.485687478 +0100
49702 @@ -3,7 +3,8 @@
49703  
49704  /* { dg-do assemble } */
49705  /* { dg-require-effective-target arm_neon_ok } */
49706 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49707 +/* { dg-options "-save-temps -O0" } */
49708 +/* { dg-add-options arm_neon } */
49709  
49710  #include "arm_neon.h"
49711  
49712 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c
49713 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c   2007-07-25 14:28:31.000000000 +0200
49714 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c   2010-01-25 09:50:29.485687478 +0100
49715 @@ -3,7 +3,8 @@
49716  
49717  /* { dg-do assemble } */
49718  /* { dg-require-effective-target arm_neon_ok } */
49719 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49720 +/* { dg-options "-save-temps -O0" } */
49721 +/* { dg-add-options arm_neon } */
49722  
49723  #include "arm_neon.h"
49724  
49725 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c
49726 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c   2007-07-25 14:28:31.000000000 +0200
49727 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c   2010-01-25 09:50:29.485687478 +0100
49728 @@ -3,7 +3,8 @@
49729  
49730  /* { dg-do assemble } */
49731  /* { dg-require-effective-target arm_neon_ok } */
49732 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49733 +/* { dg-options "-save-temps -O0" } */
49734 +/* { dg-add-options arm_neon } */
49735  
49736  #include "arm_neon.h"
49737  
49738 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c
49739 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c    2007-07-25 14:28:31.000000000 +0200
49740 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c    2010-01-25 09:50:29.485687478 +0100
49741 @@ -3,7 +3,8 @@
49742  
49743  /* { dg-do assemble } */
49744  /* { dg-require-effective-target arm_neon_ok } */
49745 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49746 +/* { dg-options "-save-temps -O0" } */
49747 +/* { dg-add-options arm_neon } */
49748  
49749  #include "arm_neon.h"
49750  
49751 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c
49752 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c   2007-07-25 14:28:31.000000000 +0200
49753 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c   2010-01-25 09:50:29.485687478 +0100
49754 @@ -3,7 +3,8 @@
49755  
49756  /* { dg-do assemble } */
49757  /* { dg-require-effective-target arm_neon_ok } */
49758 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49759 +/* { dg-options "-save-temps -O0" } */
49760 +/* { dg-add-options arm_neon } */
49761  
49762  #include "arm_neon.h"
49763  
49764 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c
49765 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c   2007-07-25 14:28:31.000000000 +0200
49766 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c   2010-01-25 09:50:29.485687478 +0100
49767 @@ -3,7 +3,8 @@
49768  
49769  /* { dg-do assemble } */
49770  /* { dg-require-effective-target arm_neon_ok } */
49771 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49772 +/* { dg-options "-save-temps -O0" } */
49773 +/* { dg-add-options arm_neon } */
49774  
49775  #include "arm_neon.h"
49776  
49777 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c
49778 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c    2007-07-25 14:28:31.000000000 +0200
49779 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c    2010-01-25 09:50:29.485687478 +0100
49780 @@ -3,7 +3,8 @@
49781  
49782  /* { dg-do assemble } */
49783  /* { dg-require-effective-target arm_neon_ok } */
49784 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49785 +/* { dg-options "-save-temps -O0" } */
49786 +/* { dg-add-options arm_neon } */
49787  
49788  #include "arm_neon.h"
49789  
49790 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c
49791 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c   2007-07-25 14:28:31.000000000 +0200
49792 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c   2010-01-25 09:50:29.485687478 +0100
49793 @@ -3,7 +3,8 @@
49794  
49795  /* { dg-do assemble } */
49796  /* { dg-require-effective-target arm_neon_ok } */
49797 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49798 +/* { dg-options "-save-temps -O0" } */
49799 +/* { dg-add-options arm_neon } */
49800  
49801  #include "arm_neon.h"
49802  
49803 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c
49804 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c   2007-07-25 14:28:31.000000000 +0200
49805 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c   2010-01-25 09:50:29.485687478 +0100
49806 @@ -3,7 +3,8 @@
49807  
49808  /* { dg-do assemble } */
49809  /* { dg-require-effective-target arm_neon_ok } */
49810 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49811 +/* { dg-options "-save-temps -O0" } */
49812 +/* { dg-add-options arm_neon } */
49813  
49814  #include "arm_neon.h"
49815  
49816 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c
49817 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c    2007-07-25 14:28:31.000000000 +0200
49818 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c    2010-01-25 09:50:29.485687478 +0100
49819 @@ -3,7 +3,8 @@
49820  
49821  /* { dg-do assemble } */
49822  /* { dg-require-effective-target arm_neon_ok } */
49823 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49824 +/* { dg-options "-save-temps -O0" } */
49825 +/* { dg-add-options arm_neon } */
49826  
49827  #include "arm_neon.h"
49828  
49829 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c
49830 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c   2007-07-25 14:28:31.000000000 +0200
49831 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c   2010-01-25 09:50:29.485687478 +0100
49832 @@ -3,7 +3,8 @@
49833  
49834  /* { dg-do assemble } */
49835  /* { dg-require-effective-target arm_neon_ok } */
49836 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49837 +/* { dg-options "-save-temps -O0" } */
49838 +/* { dg-add-options arm_neon } */
49839  
49840  #include "arm_neon.h"
49841  
49842 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c
49843 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c   2007-07-25 14:28:31.000000000 +0200
49844 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c   2010-01-25 09:50:29.485687478 +0100
49845 @@ -3,7 +3,8 @@
49846  
49847  /* { dg-do assemble } */
49848  /* { dg-require-effective-target arm_neon_ok } */
49849 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49850 +/* { dg-options "-save-temps -O0" } */
49851 +/* { dg-add-options arm_neon } */
49852  
49853  #include "arm_neon.h"
49854  
49855 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c
49856 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c   2007-07-25 14:28:31.000000000 +0200
49857 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c   2010-01-25 09:50:29.485687478 +0100
49858 @@ -3,7 +3,8 @@
49859  
49860  /* { dg-do assemble } */
49861  /* { dg-require-effective-target arm_neon_ok } */
49862 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49863 +/* { dg-options "-save-temps -O0" } */
49864 +/* { dg-add-options arm_neon } */
49865  
49866  #include "arm_neon.h"
49867  
49868 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c
49869 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c    2007-07-25 14:28:31.000000000 +0200
49870 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c    2010-01-25 09:50:29.485687478 +0100
49871 @@ -3,7 +3,8 @@
49872  
49873  /* { dg-do assemble } */
49874  /* { dg-require-effective-target arm_neon_ok } */
49875 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49876 +/* { dg-options "-save-temps -O0" } */
49877 +/* { dg-add-options arm_neon } */
49878  
49879  #include "arm_neon.h"
49880  
49881 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c
49882 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c    2007-07-25 14:28:31.000000000 +0200
49883 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c    2010-01-25 09:50:29.485687478 +0100
49884 @@ -3,7 +3,8 @@
49885  
49886  /* { dg-do assemble } */
49887  /* { dg-require-effective-target arm_neon_ok } */
49888 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49889 +/* { dg-options "-save-temps -O0" } */
49890 +/* { dg-add-options arm_neon } */
49891  
49892  #include "arm_neon.h"
49893  
49894 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c
49895 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c    2007-07-25 14:28:31.000000000 +0200
49896 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c    2010-01-25 09:50:29.485687478 +0100
49897 @@ -3,7 +3,8 @@
49898  
49899  /* { dg-do assemble } */
49900  /* { dg-require-effective-target arm_neon_ok } */
49901 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49902 +/* { dg-options "-save-temps -O0" } */
49903 +/* { dg-add-options arm_neon } */
49904  
49905  #include "arm_neon.h"
49906  
49907 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c
49908 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c     2007-07-25 14:28:31.000000000 +0200
49909 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c     2010-01-25 09:50:29.485687478 +0100
49910 @@ -3,7 +3,8 @@
49911  
49912  /* { dg-do assemble } */
49913  /* { dg-require-effective-target arm_neon_ok } */
49914 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49915 +/* { dg-options "-save-temps -O0" } */
49916 +/* { dg-add-options arm_neon } */
49917  
49918  #include "arm_neon.h"
49919  
49920 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c
49921 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c    2007-07-25 14:28:31.000000000 +0200
49922 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c    2010-01-25 09:50:29.485687478 +0100
49923 @@ -3,7 +3,8 @@
49924  
49925  /* { dg-do assemble } */
49926  /* { dg-require-effective-target arm_neon_ok } */
49927 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49928 +/* { dg-options "-save-temps -O0" } */
49929 +/* { dg-add-options arm_neon } */
49930  
49931  #include "arm_neon.h"
49932  
49933 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c
49934 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c    2007-07-25 14:28:31.000000000 +0200
49935 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c    2010-01-25 09:50:29.485687478 +0100
49936 @@ -3,7 +3,8 @@
49937  
49938  /* { dg-do assemble } */
49939  /* { dg-require-effective-target arm_neon_ok } */
49940 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49941 +/* { dg-options "-save-temps -O0" } */
49942 +/* { dg-add-options arm_neon } */
49943  
49944  #include "arm_neon.h"
49945  
49946 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c
49947 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c    2007-07-25 14:28:31.000000000 +0200
49948 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c    2010-01-25 09:50:29.485687478 +0100
49949 @@ -3,7 +3,8 @@
49950  
49951  /* { dg-do assemble } */
49952  /* { dg-require-effective-target arm_neon_ok } */
49953 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49954 +/* { dg-options "-save-temps -O0" } */
49955 +/* { dg-add-options arm_neon } */
49956  
49957  #include "arm_neon.h"
49958  
49959 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c
49960 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c    2007-07-25 14:28:31.000000000 +0200
49961 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c    2010-01-25 09:50:29.485687478 +0100
49962 @@ -3,7 +3,8 @@
49963  
49964  /* { dg-do assemble } */
49965  /* { dg-require-effective-target arm_neon_ok } */
49966 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49967 +/* { dg-options "-save-temps -O0" } */
49968 +/* { dg-add-options arm_neon } */
49969  
49970  #include "arm_neon.h"
49971  
49972 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c
49973 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c    2007-07-25 14:28:31.000000000 +0200
49974 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c    2010-01-25 09:50:29.485687478 +0100
49975 @@ -3,7 +3,8 @@
49976  
49977  /* { dg-do assemble } */
49978  /* { dg-require-effective-target arm_neon_ok } */
49979 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49980 +/* { dg-options "-save-temps -O0" } */
49981 +/* { dg-add-options arm_neon } */
49982  
49983  #include "arm_neon.h"
49984  
49985 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c
49986 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c    2007-07-25 14:28:31.000000000 +0200
49987 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c    2010-01-25 09:50:29.485687478 +0100
49988 @@ -3,7 +3,8 @@
49989  
49990  /* { dg-do assemble } */
49991  /* { dg-require-effective-target arm_neon_ok } */
49992 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
49993 +/* { dg-options "-save-temps -O0" } */
49994 +/* { dg-add-options arm_neon } */
49995  
49996  #include "arm_neon.h"
49997  
49998 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c
49999 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c     2007-07-25 14:28:31.000000000 +0200
50000 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c     2010-01-25 09:50:29.485687478 +0100
50001 @@ -3,7 +3,8 @@
50002  
50003  /* { dg-do assemble } */
50004  /* { dg-require-effective-target arm_neon_ok } */
50005 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50006 +/* { dg-options "-save-temps -O0" } */
50007 +/* { dg-add-options arm_neon } */
50008  
50009  #include "arm_neon.h"
50010  
50011 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c
50012 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c   2007-07-25 14:28:31.000000000 +0200
50013 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c   2010-01-25 09:50:29.485687478 +0100
50014 @@ -3,7 +3,8 @@
50015  
50016  /* { dg-do assemble } */
50017  /* { dg-require-effective-target arm_neon_ok } */
50018 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50019 +/* { dg-options "-save-temps -O0" } */
50020 +/* { dg-add-options arm_neon } */
50021  
50022  #include "arm_neon.h"
50023  
50024 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c
50025 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c   2007-07-25 14:28:31.000000000 +0200
50026 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c   2010-01-25 09:50:29.485687478 +0100
50027 @@ -3,7 +3,8 @@
50028  
50029  /* { dg-do assemble } */
50030  /* { dg-require-effective-target arm_neon_ok } */
50031 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50032 +/* { dg-options "-save-temps -O0" } */
50033 +/* { dg-add-options arm_neon } */
50034  
50035  #include "arm_neon.h"
50036  
50037 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c
50038 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c    2007-07-25 14:28:31.000000000 +0200
50039 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c    2010-01-25 09:50:29.485687478 +0100
50040 @@ -3,7 +3,8 @@
50041  
50042  /* { dg-do assemble } */
50043  /* { dg-require-effective-target arm_neon_ok } */
50044 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50045 +/* { dg-options "-save-temps -O0" } */
50046 +/* { dg-add-options arm_neon } */
50047  
50048  #include "arm_neon.h"
50049  
50050 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c
50051 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c   2007-07-25 14:28:31.000000000 +0200
50052 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c   2010-01-25 09:50:29.485687478 +0100
50053 @@ -3,7 +3,8 @@
50054  
50055  /* { dg-do assemble } */
50056  /* { dg-require-effective-target arm_neon_ok } */
50057 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50058 +/* { dg-options "-save-temps -O0" } */
50059 +/* { dg-add-options arm_neon } */
50060  
50061  #include "arm_neon.h"
50062  
50063 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c
50064 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c   2007-07-25 14:28:31.000000000 +0200
50065 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c   2010-01-25 09:50:29.485687478 +0100
50066 @@ -3,7 +3,8 @@
50067  
50068  /* { dg-do assemble } */
50069  /* { dg-require-effective-target arm_neon_ok } */
50070 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50071 +/* { dg-options "-save-temps -O0" } */
50072 +/* { dg-add-options arm_neon } */
50073  
50074  #include "arm_neon.h"
50075  
50076 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c
50077 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c   2007-07-25 14:28:31.000000000 +0200
50078 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c   2010-01-25 09:50:29.495687004 +0100
50079 @@ -3,7 +3,8 @@
50080  
50081  /* { dg-do assemble } */
50082  /* { dg-require-effective-target arm_neon_ok } */
50083 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50084 +/* { dg-options "-save-temps -O0" } */
50085 +/* { dg-add-options arm_neon } */
50086  
50087  #include "arm_neon.h"
50088  
50089 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c
50090 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c    2007-07-25 14:28:31.000000000 +0200
50091 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c    2010-01-25 09:50:29.495687004 +0100
50092 @@ -3,7 +3,8 @@
50093  
50094  /* { dg-do assemble } */
50095  /* { dg-require-effective-target arm_neon_ok } */
50096 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50097 +/* { dg-options "-save-temps -O0" } */
50098 +/* { dg-add-options arm_neon } */
50099  
50100  #include "arm_neon.h"
50101  
50102 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c
50103 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c   2007-07-25 14:28:31.000000000 +0200
50104 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c   2010-01-25 09:50:29.495687004 +0100
50105 @@ -3,7 +3,8 @@
50106  
50107  /* { dg-do assemble } */
50108  /* { dg-require-effective-target arm_neon_ok } */
50109 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50110 +/* { dg-options "-save-temps -O0" } */
50111 +/* { dg-add-options arm_neon } */
50112  
50113  #include "arm_neon.h"
50114  
50115 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c
50116 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c   2007-07-25 14:28:31.000000000 +0200
50117 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c   2010-01-25 09:50:29.495687004 +0100
50118 @@ -3,7 +3,8 @@
50119  
50120  /* { dg-do assemble } */
50121  /* { dg-require-effective-target arm_neon_ok } */
50122 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50123 +/* { dg-options "-save-temps -O0" } */
50124 +/* { dg-add-options arm_neon } */
50125  
50126  #include "arm_neon.h"
50127  
50128 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c
50129 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c    2007-07-25 14:28:31.000000000 +0200
50130 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c    2010-01-25 09:50:29.495687004 +0100
50131 @@ -3,7 +3,8 @@
50132  
50133  /* { dg-do assemble } */
50134  /* { dg-require-effective-target arm_neon_ok } */
50135 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50136 +/* { dg-options "-save-temps -O0" } */
50137 +/* { dg-add-options arm_neon } */
50138  
50139  #include "arm_neon.h"
50140  
50141 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c
50142 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c   2007-07-25 14:28:31.000000000 +0200
50143 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c   2010-01-25 09:50:29.495687004 +0100
50144 @@ -3,7 +3,8 @@
50145  
50146  /* { dg-do assemble } */
50147  /* { dg-require-effective-target arm_neon_ok } */
50148 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50149 +/* { dg-options "-save-temps -O0" } */
50150 +/* { dg-add-options arm_neon } */
50151  
50152  #include "arm_neon.h"
50153  
50154 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c
50155 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c   2007-07-25 14:28:31.000000000 +0200
50156 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c   2010-01-25 09:50:29.495687004 +0100
50157 @@ -3,7 +3,8 @@
50158  
50159  /* { dg-do assemble } */
50160  /* { dg-require-effective-target arm_neon_ok } */
50161 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50162 +/* { dg-options "-save-temps -O0" } */
50163 +/* { dg-add-options arm_neon } */
50164  
50165  #include "arm_neon.h"
50166  
50167 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c
50168 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c    2007-07-25 14:28:31.000000000 +0200
50169 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c    2010-01-25 09:50:29.495687004 +0100
50170 @@ -3,7 +3,8 @@
50171  
50172  /* { dg-do assemble } */
50173  /* { dg-require-effective-target arm_neon_ok } */
50174 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50175 +/* { dg-options "-save-temps -O0" } */
50176 +/* { dg-add-options arm_neon } */
50177  
50178  #include "arm_neon.h"
50179  
50180 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c
50181 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c   2007-07-25 14:28:31.000000000 +0200
50182 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c   2010-01-25 09:50:29.495687004 +0100
50183 @@ -3,7 +3,8 @@
50184  
50185  /* { dg-do assemble } */
50186  /* { dg-require-effective-target arm_neon_ok } */
50187 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50188 +/* { dg-options "-save-temps -O0" } */
50189 +/* { dg-add-options arm_neon } */
50190  
50191  #include "arm_neon.h"
50192  
50193 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c
50194 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c   2007-07-25 14:28:31.000000000 +0200
50195 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c   2010-01-25 09:50:29.495687004 +0100
50196 @@ -3,7 +3,8 @@
50197  
50198  /* { dg-do assemble } */
50199  /* { dg-require-effective-target arm_neon_ok } */
50200 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50201 +/* { dg-options "-save-temps -O0" } */
50202 +/* { dg-add-options arm_neon } */
50203  
50204  #include "arm_neon.h"
50205  
50206 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c
50207 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c   2007-07-25 14:28:31.000000000 +0200
50208 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c   2010-01-25 09:50:29.495687004 +0100
50209 @@ -3,7 +3,8 @@
50210  
50211  /* { dg-do assemble } */
50212  /* { dg-require-effective-target arm_neon_ok } */
50213 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50214 +/* { dg-options "-save-temps -O0" } */
50215 +/* { dg-add-options arm_neon } */
50216  
50217  #include "arm_neon.h"
50218  
50219 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c
50220 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c    2007-07-25 14:28:31.000000000 +0200
50221 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c    2010-01-25 09:50:29.495687004 +0100
50222 @@ -3,7 +3,8 @@
50223  
50224  /* { dg-do assemble } */
50225  /* { dg-require-effective-target arm_neon_ok } */
50226 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50227 +/* { dg-options "-save-temps -O0" } */
50228 +/* { dg-add-options arm_neon } */
50229  
50230  #include "arm_neon.h"
50231  
50232 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c
50233 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c   2007-07-25 14:28:31.000000000 +0200
50234 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c   2010-01-25 09:50:29.495687004 +0100
50235 @@ -3,7 +3,8 @@
50236  
50237  /* { dg-do assemble } */
50238  /* { dg-require-effective-target arm_neon_ok } */
50239 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50240 +/* { dg-options "-save-temps -O0" } */
50241 +/* { dg-add-options arm_neon } */
50242  
50243  #include "arm_neon.h"
50244  
50245 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c
50246 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c   2007-07-25 14:28:31.000000000 +0200
50247 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c   2010-01-25 09:50:29.495687004 +0100
50248 @@ -3,7 +3,8 @@
50249  
50250  /* { dg-do assemble } */
50251  /* { dg-require-effective-target arm_neon_ok } */
50252 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50253 +/* { dg-options "-save-temps -O0" } */
50254 +/* { dg-add-options arm_neon } */
50255  
50256  #include "arm_neon.h"
50257  
50258 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c
50259 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c    2007-07-25 14:28:31.000000000 +0200
50260 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c    2010-01-25 09:50:29.495687004 +0100
50261 @@ -3,7 +3,8 @@
50262  
50263  /* { dg-do assemble } */
50264  /* { dg-require-effective-target arm_neon_ok } */
50265 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50266 +/* { dg-options "-save-temps -O0" } */
50267 +/* { dg-add-options arm_neon } */
50268  
50269  #include "arm_neon.h"
50270  
50271 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c
50272 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c   2007-07-25 14:28:31.000000000 +0200
50273 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c   2010-01-25 09:50:29.495687004 +0100
50274 @@ -3,7 +3,8 @@
50275  
50276  /* { dg-do assemble } */
50277  /* { dg-require-effective-target arm_neon_ok } */
50278 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50279 +/* { dg-options "-save-temps -O0" } */
50280 +/* { dg-add-options arm_neon } */
50281  
50282  #include "arm_neon.h"
50283  
50284 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c
50285 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c   2007-07-25 14:28:31.000000000 +0200
50286 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c   2010-01-25 09:50:29.495687004 +0100
50287 @@ -3,7 +3,8 @@
50288  
50289  /* { dg-do assemble } */
50290  /* { dg-require-effective-target arm_neon_ok } */
50291 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50292 +/* { dg-options "-save-temps -O0" } */
50293 +/* { dg-add-options arm_neon } */
50294  
50295  #include "arm_neon.h"
50296  
50297 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c
50298 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c    2007-07-25 14:28:31.000000000 +0200
50299 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c    2010-01-25 09:50:29.495687004 +0100
50300 @@ -3,7 +3,8 @@
50301  
50302  /* { dg-do assemble } */
50303  /* { dg-require-effective-target arm_neon_ok } */
50304 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50305 +/* { dg-options "-save-temps -O0" } */
50306 +/* { dg-add-options arm_neon } */
50307  
50308  #include "arm_neon.h"
50309  
50310 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c
50311 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c   2007-07-25 14:28:31.000000000 +0200
50312 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c   2010-01-25 09:50:29.495687004 +0100
50313 @@ -3,7 +3,8 @@
50314  
50315  /* { dg-do assemble } */
50316  /* { dg-require-effective-target arm_neon_ok } */
50317 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50318 +/* { dg-options "-save-temps -O0" } */
50319 +/* { dg-add-options arm_neon } */
50320  
50321  #include "arm_neon.h"
50322  
50323 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c
50324 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c   2007-07-25 14:28:31.000000000 +0200
50325 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c   2010-01-25 09:50:29.495687004 +0100
50326 @@ -3,7 +3,8 @@
50327  
50328  /* { dg-do assemble } */
50329  /* { dg-require-effective-target arm_neon_ok } */
50330 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50331 +/* { dg-options "-save-temps -O0" } */
50332 +/* { dg-add-options arm_neon } */
50333  
50334  #include "arm_neon.h"
50335  
50336 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c
50337 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c   2007-07-25 14:28:31.000000000 +0200
50338 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c   2010-01-25 09:50:29.495687004 +0100
50339 @@ -3,7 +3,8 @@
50340  
50341  /* { dg-do assemble } */
50342  /* { dg-require-effective-target arm_neon_ok } */
50343 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50344 +/* { dg-options "-save-temps -O0" } */
50345 +/* { dg-add-options arm_neon } */
50346  
50347  #include "arm_neon.h"
50348  
50349 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c
50350 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c    2007-07-25 14:28:31.000000000 +0200
50351 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c    2010-01-25 09:50:29.495687004 +0100
50352 @@ -3,7 +3,8 @@
50353  
50354  /* { dg-do assemble } */
50355  /* { dg-require-effective-target arm_neon_ok } */
50356 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50357 +/* { dg-options "-save-temps -O0" } */
50358 +/* { dg-add-options arm_neon } */
50359  
50360  #include "arm_neon.h"
50361  
50362 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c
50363 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c   2007-07-25 14:28:31.000000000 +0200
50364 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c   2010-01-25 09:50:29.495687004 +0100
50365 @@ -3,7 +3,8 @@
50366  
50367  /* { dg-do assemble } */
50368  /* { dg-require-effective-target arm_neon_ok } */
50369 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50370 +/* { dg-options "-save-temps -O0" } */
50371 +/* { dg-add-options arm_neon } */
50372  
50373  #include "arm_neon.h"
50374  
50375 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c
50376 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c   2007-07-25 14:28:31.000000000 +0200
50377 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c   2010-01-25 09:50:29.495687004 +0100
50378 @@ -3,7 +3,8 @@
50379  
50380  /* { dg-do assemble } */
50381  /* { dg-require-effective-target arm_neon_ok } */
50382 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50383 +/* { dg-options "-save-temps -O0" } */
50384 +/* { dg-add-options arm_neon } */
50385  
50386  #include "arm_neon.h"
50387  
50388 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c
50389 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c    2007-07-25 14:28:31.000000000 +0200
50390 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c    2010-01-25 09:50:29.495687004 +0100
50391 @@ -3,7 +3,8 @@
50392  
50393  /* { dg-do assemble } */
50394  /* { dg-require-effective-target arm_neon_ok } */
50395 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50396 +/* { dg-options "-save-temps -O0" } */
50397 +/* { dg-add-options arm_neon } */
50398  
50399  #include "arm_neon.h"
50400  
50401 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c
50402 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c    2007-07-25 14:28:31.000000000 +0200
50403 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c    2010-01-25 09:50:29.495687004 +0100
50404 @@ -3,7 +3,8 @@
50405  
50406  /* { dg-do assemble } */
50407  /* { dg-require-effective-target arm_neon_ok } */
50408 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50409 +/* { dg-options "-save-temps -O0" } */
50410 +/* { dg-add-options arm_neon } */
50411  
50412  #include "arm_neon.h"
50413  
50414 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c
50415 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c    2007-07-25 14:28:31.000000000 +0200
50416 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c    2010-01-25 09:50:29.495687004 +0100
50417 @@ -3,7 +3,8 @@
50418  
50419  /* { dg-do assemble } */
50420  /* { dg-require-effective-target arm_neon_ok } */
50421 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50422 +/* { dg-options "-save-temps -O0" } */
50423 +/* { dg-add-options arm_neon } */
50424  
50425  #include "arm_neon.h"
50426  
50427 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c
50428 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c     2007-07-25 14:28:31.000000000 +0200
50429 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c     2010-01-25 09:50:29.495687004 +0100
50430 @@ -3,7 +3,8 @@
50431  
50432  /* { dg-do assemble } */
50433  /* { dg-require-effective-target arm_neon_ok } */
50434 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50435 +/* { dg-options "-save-temps -O0" } */
50436 +/* { dg-add-options arm_neon } */
50437  
50438  #include "arm_neon.h"
50439  
50440 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c
50441 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c    2007-07-25 14:28:31.000000000 +0200
50442 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c    2010-01-25 09:50:29.495687004 +0100
50443 @@ -3,7 +3,8 @@
50444  
50445  /* { dg-do assemble } */
50446  /* { dg-require-effective-target arm_neon_ok } */
50447 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50448 +/* { dg-options "-save-temps -O0" } */
50449 +/* { dg-add-options arm_neon } */
50450  
50451  #include "arm_neon.h"
50452  
50453 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c
50454 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c    2007-07-25 14:28:31.000000000 +0200
50455 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c    2010-01-25 09:50:29.495687004 +0100
50456 @@ -3,7 +3,8 @@
50457  
50458  /* { dg-do assemble } */
50459  /* { dg-require-effective-target arm_neon_ok } */
50460 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50461 +/* { dg-options "-save-temps -O0" } */
50462 +/* { dg-add-options arm_neon } */
50463  
50464  #include "arm_neon.h"
50465  
50466 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c
50467 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c    2007-07-25 14:28:31.000000000 +0200
50468 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c    2010-01-25 09:50:29.495687004 +0100
50469 @@ -3,7 +3,8 @@
50470  
50471  /* { dg-do assemble } */
50472  /* { dg-require-effective-target arm_neon_ok } */
50473 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50474 +/* { dg-options "-save-temps -O0" } */
50475 +/* { dg-add-options arm_neon } */
50476  
50477  #include "arm_neon.h"
50478  
50479 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c
50480 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c     2007-07-25 14:28:31.000000000 +0200
50481 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c     2010-01-25 09:50:29.495687004 +0100
50482 @@ -3,7 +3,8 @@
50483  
50484  /* { dg-do assemble } */
50485  /* { dg-require-effective-target arm_neon_ok } */
50486 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50487 +/* { dg-options "-save-temps -O0" } */
50488 +/* { dg-add-options arm_neon } */
50489  
50490  #include "arm_neon.h"
50491  
50492 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c
50493 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c    2007-07-25 14:28:31.000000000 +0200
50494 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c    2010-01-25 09:50:29.495687004 +0100
50495 @@ -3,7 +3,8 @@
50496  
50497  /* { dg-do assemble } */
50498  /* { dg-require-effective-target arm_neon_ok } */
50499 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50500 +/* { dg-options "-save-temps -O0" } */
50501 +/* { dg-add-options arm_neon } */
50502  
50503  #include "arm_neon.h"
50504  
50505 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c
50506 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c    2007-07-25 14:28:31.000000000 +0200
50507 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c    2010-01-25 09:50:29.495687004 +0100
50508 @@ -3,7 +3,8 @@
50509  
50510  /* { dg-do assemble } */
50511  /* { dg-require-effective-target arm_neon_ok } */
50512 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50513 +/* { dg-options "-save-temps -O0" } */
50514 +/* { dg-add-options arm_neon } */
50515  
50516  #include "arm_neon.h"
50517  
50518 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c
50519 --- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c    2007-07-25 14:28:31.000000000 +0200
50520 +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c    2010-01-25 09:50:29.495687004 +0100
50521 @@ -3,7 +3,8 @@
50522  
50523  /* { dg-do assemble } */
50524  /* { dg-require-effective-target arm_neon_ok } */
50525 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50526 +/* { dg-options "-save-temps -O0" } */
50527 +/* { dg-add-options arm_neon } */
50528  
50529  #include "arm_neon.h"
50530  
50531 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c b/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c
50532 --- a/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c      2007-07-25 14:28:31.000000000 +0200
50533 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c      2010-01-25 09:50:29.495687004 +0100
50534 @@ -3,7 +3,8 @@
50535  
50536  /* { dg-do assemble } */
50537  /* { dg-require-effective-target arm_neon_ok } */
50538 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50539 +/* { dg-options "-save-temps -O0" } */
50540 +/* { dg-add-options arm_neon } */
50541  
50542  #include "arm_neon.h"
50543  
50544 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c
50545 --- a/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c     2007-07-25 14:28:31.000000000 +0200
50546 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c     2010-01-25 09:50:29.495687004 +0100
50547 @@ -3,7 +3,8 @@
50548  
50549  /* { dg-do assemble } */
50550  /* { dg-require-effective-target arm_neon_ok } */
50551 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50552 +/* { dg-options "-save-temps -O0" } */
50553 +/* { dg-add-options arm_neon } */
50554  
50555  #include "arm_neon.h"
50556  
50557 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c
50558 --- a/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c     2007-07-25 14:28:31.000000000 +0200
50559 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c     2010-01-25 09:50:29.495687004 +0100
50560 @@ -3,7 +3,8 @@
50561  
50562  /* { dg-do assemble } */
50563  /* { dg-require-effective-target arm_neon_ok } */
50564 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50565 +/* { dg-options "-save-temps -O0" } */
50566 +/* { dg-add-options arm_neon } */
50567  
50568  #include "arm_neon.h"
50569  
50570 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c
50571 --- a/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c     2007-07-25 14:28:31.000000000 +0200
50572 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c     2010-01-25 09:50:29.495687004 +0100
50573 @@ -3,7 +3,8 @@
50574  
50575  /* { dg-do assemble } */
50576  /* { dg-require-effective-target arm_neon_ok } */
50577 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50578 +/* { dg-options "-save-temps -O0" } */
50579 +/* { dg-add-options arm_neon } */
50580  
50581  #include "arm_neon.h"
50582  
50583 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c b/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c
50584 --- a/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c      2007-07-25 14:28:31.000000000 +0200
50585 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c      2010-01-25 09:50:29.495687004 +0100
50586 @@ -3,7 +3,8 @@
50587  
50588  /* { dg-do assemble } */
50589  /* { dg-require-effective-target arm_neon_ok } */
50590 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50591 +/* { dg-options "-save-temps -O0" } */
50592 +/* { dg-add-options arm_neon } */
50593  
50594  #include "arm_neon.h"
50595  
50596 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c b/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c
50597 --- a/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c      2007-07-25 14:28:31.000000000 +0200
50598 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c      2010-01-25 09:50:29.495687004 +0100
50599 @@ -3,7 +3,8 @@
50600  
50601  /* { dg-do assemble } */
50602  /* { dg-require-effective-target arm_neon_ok } */
50603 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50604 +/* { dg-options "-save-temps -O0" } */
50605 +/* { dg-add-options arm_neon } */
50606  
50607  #include "arm_neon.h"
50608  
50609 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c b/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c
50610 --- a/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c     2007-07-25 14:28:31.000000000 +0200
50611 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c     2010-01-25 09:50:29.495687004 +0100
50612 @@ -3,7 +3,8 @@
50613  
50614  /* { dg-do assemble } */
50615  /* { dg-require-effective-target arm_neon_ok } */
50616 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50617 +/* { dg-options "-save-temps -O0" } */
50618 +/* { dg-add-options arm_neon } */
50619  
50620  #include "arm_neon.h"
50621  
50622 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c b/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c
50623 --- a/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c      2007-07-25 14:28:31.000000000 +0200
50624 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c      2010-01-25 09:50:29.495687004 +0100
50625 @@ -3,7 +3,8 @@
50626  
50627  /* { dg-do assemble } */
50628  /* { dg-require-effective-target arm_neon_ok } */
50629 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50630 +/* { dg-options "-save-temps -O0" } */
50631 +/* { dg-add-options arm_neon } */
50632  
50633  #include "arm_neon.h"
50634  
50635 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c
50636 --- a/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c    2007-07-25 14:28:31.000000000 +0200
50637 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c    2010-01-25 09:50:29.495687004 +0100
50638 @@ -3,7 +3,8 @@
50639  
50640  /* { dg-do assemble } */
50641  /* { dg-require-effective-target arm_neon_ok } */
50642 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50643 +/* { dg-options "-save-temps -O0" } */
50644 +/* { dg-add-options arm_neon } */
50645  
50646  #include "arm_neon.h"
50647  
50648 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c
50649 --- a/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c     2007-07-25 14:28:31.000000000 +0200
50650 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c     2010-01-25 09:50:29.495687004 +0100
50651 @@ -3,7 +3,8 @@
50652  
50653  /* { dg-do assemble } */
50654  /* { dg-require-effective-target arm_neon_ok } */
50655 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50656 +/* { dg-options "-save-temps -O0" } */
50657 +/* { dg-add-options arm_neon } */
50658  
50659  #include "arm_neon.h"
50660  
50661 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c
50662 --- a/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c    2007-07-25 14:28:31.000000000 +0200
50663 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c    2010-01-25 09:50:29.495687004 +0100
50664 @@ -3,7 +3,8 @@
50665  
50666  /* { dg-do assemble } */
50667  /* { dg-require-effective-target arm_neon_ok } */
50668 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50669 +/* { dg-options "-save-temps -O0" } */
50670 +/* { dg-add-options arm_neon } */
50671  
50672  #include "arm_neon.h"
50673  
50674 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c
50675 --- a/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c     2007-07-25 14:28:31.000000000 +0200
50676 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c     2010-01-25 09:50:29.495687004 +0100
50677 @@ -3,7 +3,8 @@
50678  
50679  /* { dg-do assemble } */
50680  /* { dg-require-effective-target arm_neon_ok } */
50681 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50682 +/* { dg-options "-save-temps -O0" } */
50683 +/* { dg-add-options arm_neon } */
50684  
50685  #include "arm_neon.h"
50686  
50687 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c
50688 --- a/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c    2007-07-25 14:28:31.000000000 +0200
50689 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c    2010-01-25 09:50:29.495687004 +0100
50690 @@ -3,7 +3,8 @@
50691  
50692  /* { dg-do assemble } */
50693  /* { dg-require-effective-target arm_neon_ok } */
50694 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50695 +/* { dg-options "-save-temps -O0" } */
50696 +/* { dg-add-options arm_neon } */
50697  
50698  #include "arm_neon.h"
50699  
50700 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c
50701 --- a/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c     2007-07-25 14:28:31.000000000 +0200
50702 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c     2010-01-25 09:50:29.495687004 +0100
50703 @@ -3,7 +3,8 @@
50704  
50705  /* { dg-do assemble } */
50706  /* { dg-require-effective-target arm_neon_ok } */
50707 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50708 +/* { dg-options "-save-temps -O0" } */
50709 +/* { dg-add-options arm_neon } */
50710  
50711  #include "arm_neon.h"
50712  
50713 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c b/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c
50714 --- a/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c     2007-07-25 14:28:31.000000000 +0200
50715 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c     2010-01-25 09:50:29.495687004 +0100
50716 @@ -3,7 +3,8 @@
50717  
50718  /* { dg-do assemble } */
50719  /* { dg-require-effective-target arm_neon_ok } */
50720 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50721 +/* { dg-options "-save-temps -O0" } */
50722 +/* { dg-add-options arm_neon } */
50723  
50724  #include "arm_neon.h"
50725  
50726 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c b/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c
50727 --- a/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c      2007-07-25 14:28:31.000000000 +0200
50728 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c      2010-01-25 09:50:29.495687004 +0100
50729 @@ -3,7 +3,8 @@
50730  
50731  /* { dg-do assemble } */
50732  /* { dg-require-effective-target arm_neon_ok } */
50733 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50734 +/* { dg-options "-save-temps -O0" } */
50735 +/* { dg-add-options arm_neon } */
50736  
50737  #include "arm_neon.h"
50738  
50739 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c b/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c
50740 --- a/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c     2007-07-25 14:28:31.000000000 +0200
50741 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c     2010-01-25 09:50:29.495687004 +0100
50742 @@ -3,7 +3,8 @@
50743  
50744  /* { dg-do assemble } */
50745  /* { dg-require-effective-target arm_neon_ok } */
50746 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50747 +/* { dg-options "-save-temps -O0" } */
50748 +/* { dg-add-options arm_neon } */
50749  
50750  #include "arm_neon.h"
50751  
50752 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c b/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c
50753 --- a/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c      2007-07-25 14:28:31.000000000 +0200
50754 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c      2010-01-25 09:50:29.495687004 +0100
50755 @@ -3,7 +3,8 @@
50756  
50757  /* { dg-do assemble } */
50758  /* { dg-require-effective-target arm_neon_ok } */
50759 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50760 +/* { dg-options "-save-temps -O0" } */
50761 +/* { dg-add-options arm_neon } */
50762  
50763  #include "arm_neon.h"
50764  
50765 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c b/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c
50766 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c     2007-07-25 14:28:31.000000000 +0200
50767 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c     2010-01-25 09:50:29.495687004 +0100
50768 @@ -3,7 +3,8 @@
50769  
50770  /* { dg-do assemble } */
50771  /* { dg-require-effective-target arm_neon_ok } */
50772 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50773 +/* { dg-options "-save-temps -O0" } */
50774 +/* { dg-add-options arm_neon } */
50775  
50776  #include "arm_neon.h"
50777  
50778 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c b/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c
50779 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c     2007-07-25 14:28:31.000000000 +0200
50780 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c     2010-01-25 09:50:29.495687004 +0100
50781 @@ -3,7 +3,8 @@
50782  
50783  /* { dg-do assemble } */
50784  /* { dg-require-effective-target arm_neon_ok } */
50785 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50786 +/* { dg-options "-save-temps -O0" } */
50787 +/* { dg-add-options arm_neon } */
50788  
50789  #include "arm_neon.h"
50790  
50791 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c b/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c
50792 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c      2007-07-25 14:28:31.000000000 +0200
50793 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c      2010-01-25 09:50:29.495687004 +0100
50794 @@ -3,7 +3,8 @@
50795  
50796  /* { dg-do assemble } */
50797  /* { dg-require-effective-target arm_neon_ok } */
50798 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50799 +/* { dg-options "-save-temps -O0" } */
50800 +/* { dg-add-options arm_neon } */
50801  
50802  #include "arm_neon.h"
50803  
50804 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c
50805 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c    2007-07-25 14:28:31.000000000 +0200
50806 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c    2010-01-25 09:50:29.495687004 +0100
50807 @@ -3,7 +3,8 @@
50808  
50809  /* { dg-do assemble } */
50810  /* { dg-require-effective-target arm_neon_ok } */
50811 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50812 +/* { dg-options "-save-temps -O0" } */
50813 +/* { dg-add-options arm_neon } */
50814  
50815  #include "arm_neon.h"
50816  
50817 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c
50818 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c    2007-07-25 14:28:31.000000000 +0200
50819 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c    2010-01-25 09:50:29.495687004 +0100
50820 @@ -3,7 +3,8 @@
50821  
50822  /* { dg-do assemble } */
50823  /* { dg-require-effective-target arm_neon_ok } */
50824 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50825 +/* { dg-options "-save-temps -O0" } */
50826 +/* { dg-add-options arm_neon } */
50827  
50828  #include "arm_neon.h"
50829  
50830 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c
50831 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c     2007-07-25 14:28:31.000000000 +0200
50832 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c     2010-01-25 09:50:29.495687004 +0100
50833 @@ -3,7 +3,8 @@
50834  
50835  /* { dg-do assemble } */
50836  /* { dg-require-effective-target arm_neon_ok } */
50837 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50838 +/* { dg-options "-save-temps -O0" } */
50839 +/* { dg-add-options arm_neon } */
50840  
50841  #include "arm_neon.h"
50842  
50843 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c
50844 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c    2007-07-25 14:28:31.000000000 +0200
50845 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c    2010-01-25 09:50:29.495687004 +0100
50846 @@ -3,7 +3,8 @@
50847  
50848  /* { dg-do assemble } */
50849  /* { dg-require-effective-target arm_neon_ok } */
50850 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50851 +/* { dg-options "-save-temps -O0" } */
50852 +/* { dg-add-options arm_neon } */
50853  
50854  #include "arm_neon.h"
50855  
50856 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c
50857 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c    2007-07-25 14:28:31.000000000 +0200
50858 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c    2010-01-25 09:50:29.495687004 +0100
50859 @@ -3,7 +3,8 @@
50860  
50861  /* { dg-do assemble } */
50862  /* { dg-require-effective-target arm_neon_ok } */
50863 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50864 +/* { dg-options "-save-temps -O0" } */
50865 +/* { dg-add-options arm_neon } */
50866  
50867  #include "arm_neon.h"
50868  
50869 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c
50870 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c     2007-07-25 14:28:31.000000000 +0200
50871 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c     2010-01-25 09:50:29.495687004 +0100
50872 @@ -3,7 +3,8 @@
50873  
50874  /* { dg-do assemble } */
50875  /* { dg-require-effective-target arm_neon_ok } */
50876 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50877 +/* { dg-options "-save-temps -O0" } */
50878 +/* { dg-add-options arm_neon } */
50879  
50880  #include "arm_neon.h"
50881  
50882 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c
50883 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c    2007-07-25 14:28:31.000000000 +0200
50884 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c    2010-01-25 09:50:29.495687004 +0100
50885 @@ -3,7 +3,8 @@
50886  
50887  /* { dg-do assemble } */
50888  /* { dg-require-effective-target arm_neon_ok } */
50889 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50890 +/* { dg-options "-save-temps -O0" } */
50891 +/* { dg-add-options arm_neon } */
50892  
50893  #include "arm_neon.h"
50894  
50895 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c
50896 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c    2007-07-25 14:28:31.000000000 +0200
50897 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c    2010-01-25 09:50:29.495687004 +0100
50898 @@ -3,7 +3,8 @@
50899  
50900  /* { dg-do assemble } */
50901  /* { dg-require-effective-target arm_neon_ok } */
50902 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50903 +/* { dg-options "-save-temps -O0" } */
50904 +/* { dg-add-options arm_neon } */
50905  
50906  #include "arm_neon.h"
50907  
50908 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c
50909 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c     2007-07-25 14:28:31.000000000 +0200
50910 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c     2010-01-25 09:50:29.495687004 +0100
50911 @@ -3,7 +3,8 @@
50912  
50913  /* { dg-do assemble } */
50914  /* { dg-require-effective-target arm_neon_ok } */
50915 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50916 +/* { dg-options "-save-temps -O0" } */
50917 +/* { dg-add-options arm_neon } */
50918  
50919  #include "arm_neon.h"
50920  
50921 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c b/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c
50922 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c     2007-07-25 14:28:31.000000000 +0200
50923 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c     2010-01-25 09:50:29.495687004 +0100
50924 @@ -3,7 +3,8 @@
50925  
50926  /* { dg-do assemble } */
50927  /* { dg-require-effective-target arm_neon_ok } */
50928 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50929 +/* { dg-options "-save-temps -O0" } */
50930 +/* { dg-add-options arm_neon } */
50931  
50932  #include "arm_neon.h"
50933  
50934 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c b/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c
50935 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c     2007-07-25 14:28:31.000000000 +0200
50936 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c     2010-01-25 09:50:29.495687004 +0100
50937 @@ -3,7 +3,8 @@
50938  
50939  /* { dg-do assemble } */
50940  /* { dg-require-effective-target arm_neon_ok } */
50941 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50942 +/* { dg-options "-save-temps -O0" } */
50943 +/* { dg-add-options arm_neon } */
50944  
50945  #include "arm_neon.h"
50946  
50947 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c b/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c
50948 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c      2007-07-25 14:28:31.000000000 +0200
50949 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c      2010-01-25 09:50:29.495687004 +0100
50950 @@ -3,7 +3,8 @@
50951  
50952  /* { dg-do assemble } */
50953  /* { dg-require-effective-target arm_neon_ok } */
50954 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50955 +/* { dg-options "-save-temps -O0" } */
50956 +/* { dg-add-options arm_neon } */
50957  
50958  #include "arm_neon.h"
50959  
50960 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c b/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c
50961 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c     2007-07-25 14:28:31.000000000 +0200
50962 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c     2010-01-25 09:50:29.495687004 +0100
50963 @@ -3,7 +3,8 @@
50964  
50965  /* { dg-do assemble } */
50966  /* { dg-require-effective-target arm_neon_ok } */
50967 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50968 +/* { dg-options "-save-temps -O0" } */
50969 +/* { dg-add-options arm_neon } */
50970  
50971  #include "arm_neon.h"
50972  
50973 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c b/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c
50974 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c     2007-07-25 14:28:31.000000000 +0200
50975 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c     2010-01-25 09:50:29.495687004 +0100
50976 @@ -3,7 +3,8 @@
50977  
50978  /* { dg-do assemble } */
50979  /* { dg-require-effective-target arm_neon_ok } */
50980 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50981 +/* { dg-options "-save-temps -O0" } */
50982 +/* { dg-add-options arm_neon } */
50983  
50984  #include "arm_neon.h"
50985  
50986 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c b/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c
50987 --- a/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c      2007-07-25 14:28:31.000000000 +0200
50988 +++ b/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c      2010-01-25 09:50:29.495687004 +0100
50989 @@ -3,7 +3,8 @@
50990  
50991  /* { dg-do assemble } */
50992  /* { dg-require-effective-target arm_neon_ok } */
50993 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
50994 +/* { dg-options "-save-temps -O0" } */
50995 +/* { dg-add-options arm_neon } */
50996  
50997  #include "arm_neon.h"
50998  
50999 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c
51000 --- a/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c    2007-07-25 14:28:31.000000000 +0200
51001 +++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c    2010-01-25 09:50:29.495687004 +0100
51002 @@ -3,7 +3,8 @@
51003  
51004  /* { dg-do assemble } */
51005  /* { dg-require-effective-target arm_neon_ok } */
51006 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51007 +/* { dg-options "-save-temps -O0" } */
51008 +/* { dg-add-options arm_neon } */
51009  
51010  #include "arm_neon.h"
51011  
51012 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c
51013 --- a/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c    2007-07-25 14:28:31.000000000 +0200
51014 +++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c    2010-01-25 09:50:29.495687004 +0100
51015 @@ -3,7 +3,8 @@
51016  
51017  /* { dg-do assemble } */
51018  /* { dg-require-effective-target arm_neon_ok } */
51019 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51020 +/* { dg-options "-save-temps -O0" } */
51021 +/* { dg-add-options arm_neon } */
51022  
51023  #include "arm_neon.h"
51024  
51025 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c
51026 --- a/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c     2007-07-25 14:28:31.000000000 +0200
51027 +++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c     2010-01-25 09:50:29.495687004 +0100
51028 @@ -3,7 +3,8 @@
51029  
51030  /* { dg-do assemble } */
51031  /* { dg-require-effective-target arm_neon_ok } */
51032 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51033 +/* { dg-options "-save-temps -O0" } */
51034 +/* { dg-add-options arm_neon } */
51035  
51036  #include "arm_neon.h"
51037  
51038 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c
51039 --- a/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c    2007-07-25 14:28:31.000000000 +0200
51040 +++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c    2010-01-25 09:50:29.505686669 +0100
51041 @@ -3,7 +3,8 @@
51042  
51043  /* { dg-do assemble } */
51044  /* { dg-require-effective-target arm_neon_ok } */
51045 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51046 +/* { dg-options "-save-temps -O0" } */
51047 +/* { dg-add-options arm_neon } */
51048  
51049  #include "arm_neon.h"
51050  
51051 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c
51052 --- a/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c    2007-07-25 14:28:31.000000000 +0200
51053 +++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c    2010-01-25 09:50:29.505686669 +0100
51054 @@ -3,7 +3,8 @@
51055  
51056  /* { dg-do assemble } */
51057  /* { dg-require-effective-target arm_neon_ok } */
51058 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51059 +/* { dg-options "-save-temps -O0" } */
51060 +/* { dg-add-options arm_neon } */
51061  
51062  #include "arm_neon.h"
51063  
51064 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c
51065 --- a/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c     2007-07-25 14:28:31.000000000 +0200
51066 +++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c     2010-01-25 09:50:29.505686669 +0100
51067 @@ -3,7 +3,8 @@
51068  
51069  /* { dg-do assemble } */
51070  /* { dg-require-effective-target arm_neon_ok } */
51071 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51072 +/* { dg-options "-save-temps -O0" } */
51073 +/* { dg-add-options arm_neon } */
51074  
51075  #include "arm_neon.h"
51076  
51077 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c b/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c
51078 --- a/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c     2007-07-25 14:28:31.000000000 +0200
51079 +++ b/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c     2010-01-25 09:50:29.505686669 +0100
51080 @@ -3,7 +3,8 @@
51081  
51082  /* { dg-do assemble } */
51083  /* { dg-require-effective-target arm_neon_ok } */
51084 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51085 +/* { dg-options "-save-temps -O0" } */
51086 +/* { dg-add-options arm_neon } */
51087  
51088  #include "arm_neon.h"
51089  
51090 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c b/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c
51091 --- a/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c     2007-07-25 14:28:31.000000000 +0200
51092 +++ b/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c     2010-01-25 09:50:29.505686669 +0100
51093 @@ -3,7 +3,8 @@
51094  
51095  /* { dg-do assemble } */
51096  /* { dg-require-effective-target arm_neon_ok } */
51097 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51098 +/* { dg-options "-save-temps -O0" } */
51099 +/* { dg-add-options arm_neon } */
51100  
51101  #include "arm_neon.h"
51102  
51103 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c b/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c
51104 --- a/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c      2007-07-25 14:28:31.000000000 +0200
51105 +++ b/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c      2010-01-25 09:50:29.505686669 +0100
51106 @@ -3,7 +3,8 @@
51107  
51108  /* { dg-do assemble } */
51109  /* { dg-require-effective-target arm_neon_ok } */
51110 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51111 +/* { dg-options "-save-temps -O0" } */
51112 +/* { dg-add-options arm_neon } */
51113  
51114  #include "arm_neon.h"
51115  
51116 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c
51117 --- a/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c     2007-07-25 14:28:31.000000000 +0200
51118 +++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c     2010-01-25 09:50:29.505686669 +0100
51119 @@ -3,7 +3,8 @@
51120  
51121  /* { dg-do assemble } */
51122  /* { dg-require-effective-target arm_neon_ok } */
51123 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51124 +/* { dg-options "-save-temps -O0" } */
51125 +/* { dg-add-options arm_neon } */
51126  
51127  #include "arm_neon.h"
51128  
51129 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c
51130 --- a/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c     2007-07-25 14:28:31.000000000 +0200
51131 +++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c     2010-01-25 09:50:29.505686669 +0100
51132 @@ -3,7 +3,8 @@
51133  
51134  /* { dg-do assemble } */
51135  /* { dg-require-effective-target arm_neon_ok } */
51136 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51137 +/* { dg-options "-save-temps -O0" } */
51138 +/* { dg-add-options arm_neon } */
51139  
51140  #include "arm_neon.h"
51141  
51142 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c
51143 --- a/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c      2007-07-25 14:28:31.000000000 +0200
51144 +++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c      2010-01-25 09:50:29.505686669 +0100
51145 @@ -3,7 +3,8 @@
51146  
51147  /* { dg-do assemble } */
51148  /* { dg-require-effective-target arm_neon_ok } */
51149 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51150 +/* { dg-options "-save-temps -O0" } */
51151 +/* { dg-add-options arm_neon } */
51152  
51153  #include "arm_neon.h"
51154  
51155 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c
51156 --- a/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c     2007-07-25 14:28:31.000000000 +0200
51157 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c     2010-01-25 09:50:29.505686669 +0100
51158 @@ -3,7 +3,8 @@
51159  
51160  /* { dg-do assemble } */
51161  /* { dg-require-effective-target arm_neon_ok } */
51162 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51163 +/* { dg-options "-save-temps -O0" } */
51164 +/* { dg-add-options arm_neon } */
51165  
51166  #include "arm_neon.h"
51167  
51168 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c
51169 --- a/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c     2007-07-25 14:28:31.000000000 +0200
51170 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c     2010-01-25 09:50:29.505686669 +0100
51171 @@ -3,7 +3,8 @@
51172  
51173  /* { dg-do assemble } */
51174  /* { dg-require-effective-target arm_neon_ok } */
51175 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51176 +/* { dg-options "-save-temps -O0" } */
51177 +/* { dg-add-options arm_neon } */
51178  
51179  #include "arm_neon.h"
51180  
51181 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c
51182 --- a/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c     2007-07-25 14:28:31.000000000 +0200
51183 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c     2010-01-25 09:50:29.505686669 +0100
51184 @@ -3,7 +3,8 @@
51185  
51186  /* { dg-do assemble } */
51187  /* { dg-require-effective-target arm_neon_ok } */
51188 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51189 +/* { dg-options "-save-temps -O0" } */
51190 +/* { dg-add-options arm_neon } */
51191  
51192  #include "arm_neon.h"
51193  
51194 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c
51195 --- a/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c      2007-07-25 14:28:31.000000000 +0200
51196 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c      2010-01-25 09:50:29.505686669 +0100
51197 @@ -3,7 +3,8 @@
51198  
51199  /* { dg-do assemble } */
51200  /* { dg-require-effective-target arm_neon_ok } */
51201 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51202 +/* { dg-options "-save-temps -O0" } */
51203 +/* { dg-add-options arm_neon } */
51204  
51205  #include "arm_neon.h"
51206  
51207 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c
51208 --- a/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c     2007-07-25 14:28:31.000000000 +0200
51209 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c     2010-01-25 09:50:29.505686669 +0100
51210 @@ -3,7 +3,8 @@
51211  
51212  /* { dg-do assemble } */
51213  /* { dg-require-effective-target arm_neon_ok } */
51214 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51215 +/* { dg-options "-save-temps -O0" } */
51216 +/* { dg-add-options arm_neon } */
51217  
51218  #include "arm_neon.h"
51219  
51220 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c
51221 --- a/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c     2007-07-25 14:28:31.000000000 +0200
51222 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c     2010-01-25 09:50:29.505686669 +0100
51223 @@ -3,7 +3,8 @@
51224  
51225  /* { dg-do assemble } */
51226  /* { dg-require-effective-target arm_neon_ok } */
51227 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51228 +/* { dg-options "-save-temps -O0" } */
51229 +/* { dg-add-options arm_neon } */
51230  
51231  #include "arm_neon.h"
51232  
51233 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c
51234 --- a/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c     2007-07-25 14:28:31.000000000 +0200
51235 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c     2010-01-25 09:50:29.505686669 +0100
51236 @@ -3,7 +3,8 @@
51237  
51238  /* { dg-do assemble } */
51239  /* { dg-require-effective-target arm_neon_ok } */
51240 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51241 +/* { dg-options "-save-temps -O0" } */
51242 +/* { dg-add-options arm_neon } */
51243  
51244  #include "arm_neon.h"
51245  
51246 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c
51247 --- a/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c      2007-07-25 14:28:31.000000000 +0200
51248 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c      2010-01-25 09:50:29.505686669 +0100
51249 @@ -3,7 +3,8 @@
51250  
51251  /* { dg-do assemble } */
51252  /* { dg-require-effective-target arm_neon_ok } */
51253 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51254 +/* { dg-options "-save-temps -O0" } */
51255 +/* { dg-add-options arm_neon } */
51256  
51257  #include "arm_neon.h"
51258  
51259 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshls16.c b/gcc/testsuite/gcc.target/arm/neon/vRshls16.c
51260 --- a/gcc/testsuite/gcc.target/arm/neon/vRshls16.c      2007-07-25 14:28:31.000000000 +0200
51261 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshls16.c      2010-01-25 09:50:29.505686669 +0100
51262 @@ -3,7 +3,8 @@
51263  
51264  /* { dg-do assemble } */
51265  /* { dg-require-effective-target arm_neon_ok } */
51266 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51267 +/* { dg-options "-save-temps -O0" } */
51268 +/* { dg-add-options arm_neon } */
51269  
51270  #include "arm_neon.h"
51271  
51272 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshls32.c b/gcc/testsuite/gcc.target/arm/neon/vRshls32.c
51273 --- a/gcc/testsuite/gcc.target/arm/neon/vRshls32.c      2007-07-25 14:28:31.000000000 +0200
51274 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshls32.c      2010-01-25 09:50:29.505686669 +0100
51275 @@ -3,7 +3,8 @@
51276  
51277  /* { dg-do assemble } */
51278  /* { dg-require-effective-target arm_neon_ok } */
51279 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51280 +/* { dg-options "-save-temps -O0" } */
51281 +/* { dg-add-options arm_neon } */
51282  
51283  #include "arm_neon.h"
51284  
51285 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshls64.c b/gcc/testsuite/gcc.target/arm/neon/vRshls64.c
51286 --- a/gcc/testsuite/gcc.target/arm/neon/vRshls64.c      2007-07-25 14:28:31.000000000 +0200
51287 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshls64.c      2010-01-25 09:50:29.505686669 +0100
51288 @@ -3,7 +3,8 @@
51289  
51290  /* { dg-do assemble } */
51291  /* { dg-require-effective-target arm_neon_ok } */
51292 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51293 +/* { dg-options "-save-temps -O0" } */
51294 +/* { dg-add-options arm_neon } */
51295  
51296  #include "arm_neon.h"
51297  
51298 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshls8.c b/gcc/testsuite/gcc.target/arm/neon/vRshls8.c
51299 --- a/gcc/testsuite/gcc.target/arm/neon/vRshls8.c       2007-07-25 14:28:31.000000000 +0200
51300 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshls8.c       2010-01-25 09:50:29.505686669 +0100
51301 @@ -3,7 +3,8 @@
51302  
51303  /* { dg-do assemble } */
51304  /* { dg-require-effective-target arm_neon_ok } */
51305 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51306 +/* { dg-options "-save-temps -O0" } */
51307 +/* { dg-add-options arm_neon } */
51308  
51309  #include "arm_neon.h"
51310  
51311 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c b/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c
51312 --- a/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c      2007-07-25 14:28:31.000000000 +0200
51313 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c      2010-01-25 09:50:29.505686669 +0100
51314 @@ -3,7 +3,8 @@
51315  
51316  /* { dg-do assemble } */
51317  /* { dg-require-effective-target arm_neon_ok } */
51318 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51319 +/* { dg-options "-save-temps -O0" } */
51320 +/* { dg-add-options arm_neon } */
51321  
51322  #include "arm_neon.h"
51323  
51324 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c b/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c
51325 --- a/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c      2007-07-25 14:28:31.000000000 +0200
51326 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c      2010-01-25 09:50:29.505686669 +0100
51327 @@ -3,7 +3,8 @@
51328  
51329  /* { dg-do assemble } */
51330  /* { dg-require-effective-target arm_neon_ok } */
51331 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51332 +/* { dg-options "-save-temps -O0" } */
51333 +/* { dg-add-options arm_neon } */
51334  
51335  #include "arm_neon.h"
51336  
51337 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c b/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c
51338 --- a/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c      2007-07-25 14:28:31.000000000 +0200
51339 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c      2010-01-25 09:50:29.505686669 +0100
51340 @@ -3,7 +3,8 @@
51341  
51342  /* { dg-do assemble } */
51343  /* { dg-require-effective-target arm_neon_ok } */
51344 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51345 +/* { dg-options "-save-temps -O0" } */
51346 +/* { dg-add-options arm_neon } */
51347  
51348  #include "arm_neon.h"
51349  
51350 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c b/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c
51351 --- a/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c       2007-07-25 14:28:31.000000000 +0200
51352 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c       2010-01-25 09:50:29.505686669 +0100
51353 @@ -3,7 +3,8 @@
51354  
51355  /* { dg-do assemble } */
51356  /* { dg-require-effective-target arm_neon_ok } */
51357 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51358 +/* { dg-options "-save-temps -O0" } */
51359 +/* { dg-add-options arm_neon } */
51360  
51361  #include "arm_neon.h"
51362  
51363 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c
51364 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c   2007-07-25 14:28:31.000000000 +0200
51365 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c   2010-01-25 09:50:29.505686669 +0100
51366 @@ -3,7 +3,8 @@
51367  
51368  /* { dg-do assemble } */
51369  /* { dg-require-effective-target arm_neon_ok } */
51370 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51371 +/* { dg-options "-save-temps -O0" } */
51372 +/* { dg-add-options arm_neon } */
51373  
51374  #include "arm_neon.h"
51375  
51376 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c
51377 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c   2007-07-25 14:28:31.000000000 +0200
51378 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c   2010-01-25 09:50:29.505686669 +0100
51379 @@ -3,7 +3,8 @@
51380  
51381  /* { dg-do assemble } */
51382  /* { dg-require-effective-target arm_neon_ok } */
51383 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51384 +/* { dg-options "-save-temps -O0" } */
51385 +/* { dg-add-options arm_neon } */
51386  
51387  #include "arm_neon.h"
51388  
51389 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c
51390 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c   2007-07-25 14:28:31.000000000 +0200
51391 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c   2010-01-25 09:50:29.505686669 +0100
51392 @@ -3,7 +3,8 @@
51393  
51394  /* { dg-do assemble } */
51395  /* { dg-require-effective-target arm_neon_ok } */
51396 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51397 +/* { dg-options "-save-temps -O0" } */
51398 +/* { dg-add-options arm_neon } */
51399  
51400  #include "arm_neon.h"
51401  
51402 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c
51403 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c   2007-07-25 14:28:31.000000000 +0200
51404 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c   2010-01-25 09:50:29.505686669 +0100
51405 @@ -3,7 +3,8 @@
51406  
51407  /* { dg-do assemble } */
51408  /* { dg-require-effective-target arm_neon_ok } */
51409 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51410 +/* { dg-options "-save-temps -O0" } */
51411 +/* { dg-add-options arm_neon } */
51412  
51413  #include "arm_neon.h"
51414  
51415 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c
51416 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c   2007-07-25 14:28:31.000000000 +0200
51417 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c   2010-01-25 09:50:29.505686669 +0100
51418 @@ -3,7 +3,8 @@
51419  
51420  /* { dg-do assemble } */
51421  /* { dg-require-effective-target arm_neon_ok } */
51422 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51423 +/* { dg-options "-save-temps -O0" } */
51424 +/* { dg-add-options arm_neon } */
51425  
51426  #include "arm_neon.h"
51427  
51428 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c
51429 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c   2007-07-25 14:28:31.000000000 +0200
51430 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c   2010-01-25 09:50:29.505686669 +0100
51431 @@ -3,7 +3,8 @@
51432  
51433  /* { dg-do assemble } */
51434  /* { dg-require-effective-target arm_neon_ok } */
51435 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51436 +/* { dg-options "-save-temps -O0" } */
51437 +/* { dg-add-options arm_neon } */
51438  
51439  #include "arm_neon.h"
51440  
51441 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c
51442 --- a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c    2007-07-25 14:28:31.000000000 +0200
51443 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c    2010-01-25 09:50:29.505686669 +0100
51444 @@ -3,7 +3,8 @@
51445  
51446  /* { dg-do assemble } */
51447  /* { dg-require-effective-target arm_neon_ok } */
51448 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51449 +/* { dg-options "-save-temps -O0" } */
51450 +/* { dg-add-options arm_neon } */
51451  
51452  #include "arm_neon.h"
51453  
51454 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c
51455 --- a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c    2007-07-25 14:28:31.000000000 +0200
51456 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c    2010-01-25 09:50:29.505686669 +0100
51457 @@ -3,7 +3,8 @@
51458  
51459  /* { dg-do assemble } */
51460  /* { dg-require-effective-target arm_neon_ok } */
51461 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51462 +/* { dg-options "-save-temps -O0" } */
51463 +/* { dg-add-options arm_neon } */
51464  
51465  #include "arm_neon.h"
51466  
51467 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c
51468 --- a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c    2007-07-25 14:28:31.000000000 +0200
51469 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c    2010-01-25 09:50:29.505686669 +0100
51470 @@ -3,7 +3,8 @@
51471  
51472  /* { dg-do assemble } */
51473  /* { dg-require-effective-target arm_neon_ok } */
51474 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51475 +/* { dg-options "-save-temps -O0" } */
51476 +/* { dg-add-options arm_neon } */
51477  
51478  #include "arm_neon.h"
51479  
51480 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c
51481 --- a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c     2007-07-25 14:28:31.000000000 +0200
51482 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c     2010-01-25 09:50:29.505686669 +0100
51483 @@ -3,7 +3,8 @@
51484  
51485  /* { dg-do assemble } */
51486  /* { dg-require-effective-target arm_neon_ok } */
51487 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51488 +/* { dg-options "-save-temps -O0" } */
51489 +/* { dg-add-options arm_neon } */
51490  
51491  #include "arm_neon.h"
51492  
51493 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c
51494 --- a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c    2007-07-25 14:28:31.000000000 +0200
51495 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c    2010-01-25 09:50:29.505686669 +0100
51496 @@ -3,7 +3,8 @@
51497  
51498  /* { dg-do assemble } */
51499  /* { dg-require-effective-target arm_neon_ok } */
51500 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51501 +/* { dg-options "-save-temps -O0" } */
51502 +/* { dg-add-options arm_neon } */
51503  
51504  #include "arm_neon.h"
51505  
51506 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c
51507 --- a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c    2007-07-25 14:28:31.000000000 +0200
51508 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c    2010-01-25 09:50:29.505686669 +0100
51509 @@ -3,7 +3,8 @@
51510  
51511  /* { dg-do assemble } */
51512  /* { dg-require-effective-target arm_neon_ok } */
51513 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51514 +/* { dg-options "-save-temps -O0" } */
51515 +/* { dg-add-options arm_neon } */
51516  
51517  #include "arm_neon.h"
51518  
51519 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c
51520 --- a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c    2007-07-25 14:28:31.000000000 +0200
51521 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c    2010-01-25 09:50:29.505686669 +0100
51522 @@ -3,7 +3,8 @@
51523  
51524  /* { dg-do assemble } */
51525  /* { dg-require-effective-target arm_neon_ok } */
51526 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51527 +/* { dg-options "-save-temps -O0" } */
51528 +/* { dg-add-options arm_neon } */
51529  
51530  #include "arm_neon.h"
51531  
51532 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c
51533 --- a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c     2007-07-25 14:28:31.000000000 +0200
51534 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c     2010-01-25 09:50:29.505686669 +0100
51535 @@ -3,7 +3,8 @@
51536  
51537  /* { dg-do assemble } */
51538  /* { dg-require-effective-target arm_neon_ok } */
51539 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51540 +/* { dg-options "-save-temps -O0" } */
51541 +/* { dg-add-options arm_neon } */
51542  
51543  #include "arm_neon.h"
51544  
51545 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c
51546 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
51547 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c   2010-01-25 09:50:29.505686669 +0100
51548 @@ -3,7 +3,8 @@
51549  
51550  /* { dg-do assemble } */
51551  /* { dg-require-effective-target arm_neon_ok } */
51552 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51553 +/* { dg-options "-save-temps -O0" } */
51554 +/* { dg-add-options arm_neon } */
51555  
51556  #include "arm_neon.h"
51557  
51558 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c
51559 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
51560 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c   2010-01-25 09:50:29.505686669 +0100
51561 @@ -3,7 +3,8 @@
51562  
51563  /* { dg-do assemble } */
51564  /* { dg-require-effective-target arm_neon_ok } */
51565 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51566 +/* { dg-options "-save-temps -O0" } */
51567 +/* { dg-add-options arm_neon } */
51568  
51569  #include "arm_neon.h"
51570  
51571 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c
51572 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c   2007-07-25 14:28:31.000000000 +0200
51573 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c   2010-01-25 09:50:29.505686669 +0100
51574 @@ -3,7 +3,8 @@
51575  
51576  /* { dg-do assemble } */
51577  /* { dg-require-effective-target arm_neon_ok } */
51578 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51579 +/* { dg-options "-save-temps -O0" } */
51580 +/* { dg-add-options arm_neon } */
51581  
51582  #include "arm_neon.h"
51583  
51584 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c
51585 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c    2007-07-25 14:28:31.000000000 +0200
51586 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c    2010-01-25 09:50:29.505686669 +0100
51587 @@ -3,7 +3,8 @@
51588  
51589  /* { dg-do assemble } */
51590  /* { dg-require-effective-target arm_neon_ok } */
51591 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51592 +/* { dg-options "-save-temps -O0" } */
51593 +/* { dg-add-options arm_neon } */
51594  
51595  #include "arm_neon.h"
51596  
51597 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c
51598 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
51599 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c   2010-01-25 09:50:29.505686669 +0100
51600 @@ -3,7 +3,8 @@
51601  
51602  /* { dg-do assemble } */
51603  /* { dg-require-effective-target arm_neon_ok } */
51604 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51605 +/* { dg-options "-save-temps -O0" } */
51606 +/* { dg-add-options arm_neon } */
51607  
51608  #include "arm_neon.h"
51609  
51610 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c
51611 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
51612 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c   2010-01-25 09:50:29.505686669 +0100
51613 @@ -3,7 +3,8 @@
51614  
51615  /* { dg-do assemble } */
51616  /* { dg-require-effective-target arm_neon_ok } */
51617 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51618 +/* { dg-options "-save-temps -O0" } */
51619 +/* { dg-add-options arm_neon } */
51620  
51621  #include "arm_neon.h"
51622  
51623 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c
51624 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c   2007-07-25 14:28:31.000000000 +0200
51625 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c   2010-01-25 09:50:29.505686669 +0100
51626 @@ -3,7 +3,8 @@
51627  
51628  /* { dg-do assemble } */
51629  /* { dg-require-effective-target arm_neon_ok } */
51630 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51631 +/* { dg-options "-save-temps -O0" } */
51632 +/* { dg-add-options arm_neon } */
51633  
51634  #include "arm_neon.h"
51635  
51636 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c
51637 --- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c    2007-07-25 14:28:31.000000000 +0200
51638 +++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c    2010-01-25 09:50:29.505686669 +0100
51639 @@ -3,7 +3,8 @@
51640  
51641  /* { dg-do assemble } */
51642  /* { dg-require-effective-target arm_neon_ok } */
51643 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51644 +/* { dg-options "-save-temps -O0" } */
51645 +/* { dg-add-options arm_neon } */
51646  
51647  #include "arm_neon.h"
51648  
51649 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c b/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c
51650 --- a/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c    2007-07-25 14:28:31.000000000 +0200
51651 +++ b/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c    2010-01-25 09:50:29.505686669 +0100
51652 @@ -3,7 +3,8 @@
51653  
51654  /* { dg-do assemble } */
51655  /* { dg-require-effective-target arm_neon_ok } */
51656 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51657 +/* { dg-options "-save-temps -O0" } */
51658 +/* { dg-add-options arm_neon } */
51659  
51660  #include "arm_neon.h"
51661  
51662 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c b/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c
51663 --- a/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c   2007-07-25 14:28:31.000000000 +0200
51664 +++ b/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c   2010-01-25 09:50:29.505686669 +0100
51665 @@ -3,7 +3,8 @@
51666  
51667  /* { dg-do assemble } */
51668  /* { dg-require-effective-target arm_neon_ok } */
51669 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51670 +/* { dg-options "-save-temps -O0" } */
51671 +/* { dg-add-options arm_neon } */
51672  
51673  #include "arm_neon.h"
51674  
51675 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c b/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c
51676 --- a/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c   2007-07-25 14:28:31.000000000 +0200
51677 +++ b/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c   2010-01-25 09:50:29.505686669 +0100
51678 @@ -3,7 +3,8 @@
51679  
51680  /* { dg-do assemble } */
51681  /* { dg-require-effective-target arm_neon_ok } */
51682 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51683 +/* { dg-options "-save-temps -O0" } */
51684 +/* { dg-add-options arm_neon } */
51685  
51686  #include "arm_neon.h"
51687  
51688 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c b/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c
51689 --- a/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c    2007-07-25 14:28:31.000000000 +0200
51690 +++ b/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c    2010-01-25 09:50:29.505686669 +0100
51691 @@ -3,7 +3,8 @@
51692  
51693  /* { dg-do assemble } */
51694  /* { dg-require-effective-target arm_neon_ok } */
51695 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51696 +/* { dg-options "-save-temps -O0" } */
51697 +/* { dg-add-options arm_neon } */
51698  
51699  #include "arm_neon.h"
51700  
51701 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c b/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c
51702 --- a/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c    2007-07-25 14:28:31.000000000 +0200
51703 +++ b/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c    2010-01-25 09:50:29.505686669 +0100
51704 @@ -3,7 +3,8 @@
51705  
51706  /* { dg-do assemble } */
51707  /* { dg-require-effective-target arm_neon_ok } */
51708 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51709 +/* { dg-options "-save-temps -O0" } */
51710 +/* { dg-add-options arm_neon } */
51711  
51712  #include "arm_neon.h"
51713  
51714 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c b/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c
51715 --- a/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c   2007-07-25 14:28:31.000000000 +0200
51716 +++ b/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c   2010-01-25 09:50:29.505686669 +0100
51717 @@ -3,7 +3,8 @@
51718  
51719  /* { dg-do assemble } */
51720  /* { dg-require-effective-target arm_neon_ok } */
51721 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51722 +/* { dg-options "-save-temps -O0" } */
51723 +/* { dg-add-options arm_neon } */
51724  
51725  #include "arm_neon.h"
51726  
51727 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c
51728 --- a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c    2007-07-25 14:28:31.000000000 +0200
51729 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c    2010-01-25 09:50:29.505686669 +0100
51730 @@ -3,7 +3,8 @@
51731  
51732  /* { dg-do assemble } */
51733  /* { dg-require-effective-target arm_neon_ok } */
51734 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51735 +/* { dg-options "-save-temps -O0" } */
51736 +/* { dg-add-options arm_neon } */
51737  
51738  #include "arm_neon.h"
51739  
51740 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c
51741 --- a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c    2007-07-25 14:28:31.000000000 +0200
51742 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c    2010-01-25 09:50:29.505686669 +0100
51743 @@ -3,7 +3,8 @@
51744  
51745  /* { dg-do assemble } */
51746  /* { dg-require-effective-target arm_neon_ok } */
51747 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51748 +/* { dg-options "-save-temps -O0" } */
51749 +/* { dg-add-options arm_neon } */
51750  
51751  #include "arm_neon.h"
51752  
51753 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c
51754 --- a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c    2007-07-25 14:28:31.000000000 +0200
51755 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c    2010-01-25 09:50:29.505686669 +0100
51756 @@ -3,7 +3,8 @@
51757  
51758  /* { dg-do assemble } */
51759  /* { dg-require-effective-target arm_neon_ok } */
51760 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51761 +/* { dg-options "-save-temps -O0" } */
51762 +/* { dg-add-options arm_neon } */
51763  
51764  #include "arm_neon.h"
51765  
51766 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c
51767 --- a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c     2007-07-25 14:28:31.000000000 +0200
51768 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c     2010-01-25 09:50:29.505686669 +0100
51769 @@ -3,7 +3,8 @@
51770  
51771  /* { dg-do assemble } */
51772  /* { dg-require-effective-target arm_neon_ok } */
51773 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51774 +/* { dg-options "-save-temps -O0" } */
51775 +/* { dg-add-options arm_neon } */
51776  
51777  #include "arm_neon.h"
51778  
51779 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c
51780 --- a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c    2007-07-25 14:28:31.000000000 +0200
51781 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c    2010-01-25 09:50:29.505686669 +0100
51782 @@ -3,7 +3,8 @@
51783  
51784  /* { dg-do assemble } */
51785  /* { dg-require-effective-target arm_neon_ok } */
51786 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51787 +/* { dg-options "-save-temps -O0" } */
51788 +/* { dg-add-options arm_neon } */
51789  
51790  #include "arm_neon.h"
51791  
51792 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c
51793 --- a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c    2007-07-25 14:28:31.000000000 +0200
51794 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c    2010-01-25 09:50:29.505686669 +0100
51795 @@ -3,7 +3,8 @@
51796  
51797  /* { dg-do assemble } */
51798  /* { dg-require-effective-target arm_neon_ok } */
51799 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51800 +/* { dg-options "-save-temps -O0" } */
51801 +/* { dg-add-options arm_neon } */
51802  
51803  #include "arm_neon.h"
51804  
51805 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c
51806 --- a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c    2007-07-25 14:28:31.000000000 +0200
51807 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c    2010-01-25 09:50:29.505686669 +0100
51808 @@ -3,7 +3,8 @@
51809  
51810  /* { dg-do assemble } */
51811  /* { dg-require-effective-target arm_neon_ok } */
51812 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51813 +/* { dg-options "-save-temps -O0" } */
51814 +/* { dg-add-options arm_neon } */
51815  
51816  #include "arm_neon.h"
51817  
51818 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c
51819 --- a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c     2007-07-25 14:28:31.000000000 +0200
51820 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c     2010-01-25 09:50:29.505686669 +0100
51821 @@ -3,7 +3,8 @@
51822  
51823  /* { dg-do assemble } */
51824  /* { dg-require-effective-target arm_neon_ok } */
51825 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51826 +/* { dg-options "-save-temps -O0" } */
51827 +/* { dg-add-options arm_neon } */
51828  
51829  #include "arm_neon.h"
51830  
51831 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c
51832 --- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
51833 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c   2010-01-25 09:50:29.505686669 +0100
51834 @@ -3,7 +3,8 @@
51835  
51836  /* { dg-do assemble } */
51837  /* { dg-require-effective-target arm_neon_ok } */
51838 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51839 +/* { dg-options "-save-temps -O0" } */
51840 +/* { dg-add-options arm_neon } */
51841  
51842  #include "arm_neon.h"
51843  
51844 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c
51845 --- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
51846 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c   2010-01-25 09:50:29.505686669 +0100
51847 @@ -3,7 +3,8 @@
51848  
51849  /* { dg-do assemble } */
51850  /* { dg-require-effective-target arm_neon_ok } */
51851 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51852 +/* { dg-options "-save-temps -O0" } */
51853 +/* { dg-add-options arm_neon } */
51854  
51855  #include "arm_neon.h"
51856  
51857 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c
51858 --- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c   2007-07-25 14:28:31.000000000 +0200
51859 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c   2010-01-25 09:50:29.505686669 +0100
51860 @@ -3,7 +3,8 @@
51861  
51862  /* { dg-do assemble } */
51863  /* { dg-require-effective-target arm_neon_ok } */
51864 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51865 +/* { dg-options "-save-temps -O0" } */
51866 +/* { dg-add-options arm_neon } */
51867  
51868  #include "arm_neon.h"
51869  
51870 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c
51871 --- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c    2007-07-25 14:28:31.000000000 +0200
51872 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c    2010-01-25 09:50:29.505686669 +0100
51873 @@ -3,7 +3,8 @@
51874  
51875  /* { dg-do assemble } */
51876  /* { dg-require-effective-target arm_neon_ok } */
51877 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51878 +/* { dg-options "-save-temps -O0" } */
51879 +/* { dg-add-options arm_neon } */
51880  
51881  #include "arm_neon.h"
51882  
51883 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c
51884 --- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
51885 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c   2010-01-25 09:50:29.505686669 +0100
51886 @@ -3,7 +3,8 @@
51887  
51888  /* { dg-do assemble } */
51889  /* { dg-require-effective-target arm_neon_ok } */
51890 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51891 +/* { dg-options "-save-temps -O0" } */
51892 +/* { dg-add-options arm_neon } */
51893  
51894  #include "arm_neon.h"
51895  
51896 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c
51897 --- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
51898 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c   2010-01-25 09:50:29.505686669 +0100
51899 @@ -3,7 +3,8 @@
51900  
51901  /* { dg-do assemble } */
51902  /* { dg-require-effective-target arm_neon_ok } */
51903 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51904 +/* { dg-options "-save-temps -O0" } */
51905 +/* { dg-add-options arm_neon } */
51906  
51907  #include "arm_neon.h"
51908  
51909 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c
51910 --- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c   2007-07-25 14:28:31.000000000 +0200
51911 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c   2010-01-25 09:50:29.505686669 +0100
51912 @@ -3,7 +3,8 @@
51913  
51914  /* { dg-do assemble } */
51915  /* { dg-require-effective-target arm_neon_ok } */
51916 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51917 +/* { dg-options "-save-temps -O0" } */
51918 +/* { dg-add-options arm_neon } */
51919  
51920  #include "arm_neon.h"
51921  
51922 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c
51923 --- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c    2007-07-25 14:28:31.000000000 +0200
51924 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c    2010-01-25 09:50:29.505686669 +0100
51925 @@ -3,7 +3,8 @@
51926  
51927  /* { dg-do assemble } */
51928  /* { dg-require-effective-target arm_neon_ok } */
51929 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51930 +/* { dg-options "-save-temps -O0" } */
51931 +/* { dg-add-options arm_neon } */
51932  
51933  #include "arm_neon.h"
51934  
51935 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c b/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c
51936 --- a/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c    2007-07-25 14:28:31.000000000 +0200
51937 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c    2010-01-25 09:50:29.505686669 +0100
51938 @@ -3,7 +3,8 @@
51939  
51940  /* { dg-do assemble } */
51941  /* { dg-require-effective-target arm_neon_ok } */
51942 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51943 +/* { dg-options "-save-temps -O0" } */
51944 +/* { dg-add-options arm_neon } */
51945  
51946  #include "arm_neon.h"
51947  
51948 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c b/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c
51949 --- a/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c    2007-07-25 14:28:31.000000000 +0200
51950 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c    2010-01-25 09:50:29.505686669 +0100
51951 @@ -3,7 +3,8 @@
51952  
51953  /* { dg-do assemble } */
51954  /* { dg-require-effective-target arm_neon_ok } */
51955 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51956 +/* { dg-options "-save-temps -O0" } */
51957 +/* { dg-add-options arm_neon } */
51958  
51959  #include "arm_neon.h"
51960  
51961 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c b/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c
51962 --- a/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c    2007-07-25 14:28:31.000000000 +0200
51963 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c    2010-01-25 09:50:29.505686669 +0100
51964 @@ -3,7 +3,8 @@
51965  
51966  /* { dg-do assemble } */
51967  /* { dg-require-effective-target arm_neon_ok } */
51968 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51969 +/* { dg-options "-save-temps -O0" } */
51970 +/* { dg-add-options arm_neon } */
51971  
51972  #include "arm_neon.h"
51973  
51974 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c b/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c
51975 --- a/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c    2007-07-25 14:28:31.000000000 +0200
51976 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c    2010-01-25 09:50:29.515686194 +0100
51977 @@ -3,7 +3,8 @@
51978  
51979  /* { dg-do assemble } */
51980  /* { dg-require-effective-target arm_neon_ok } */
51981 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51982 +/* { dg-options "-save-temps -O0" } */
51983 +/* { dg-add-options arm_neon } */
51984  
51985  #include "arm_neon.h"
51986  
51987 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c b/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c
51988 --- a/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c    2007-07-25 14:28:31.000000000 +0200
51989 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c    2010-01-25 09:50:29.515686194 +0100
51990 @@ -3,7 +3,8 @@
51991  
51992  /* { dg-do assemble } */
51993  /* { dg-require-effective-target arm_neon_ok } */
51994 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
51995 +/* { dg-options "-save-temps -O0" } */
51996 +/* { dg-add-options arm_neon } */
51997  
51998  #include "arm_neon.h"
51999  
52000 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c b/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c
52001 --- a/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c    2007-07-25 14:28:31.000000000 +0200
52002 +++ b/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c    2010-01-25 09:50:29.515686194 +0100
52003 @@ -3,7 +3,8 @@
52004  
52005  /* { dg-do assemble } */
52006  /* { dg-require-effective-target arm_neon_ok } */
52007 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52008 +/* { dg-options "-save-temps -O0" } */
52009 +/* { dg-add-options arm_neon } */
52010  
52011  #include "arm_neon.h"
52012  
52013 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c
52014 --- a/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c  2007-07-25 14:28:31.000000000 +0200
52015 +++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c  2010-01-25 09:50:29.515686194 +0100
52016 @@ -3,7 +3,8 @@
52017  
52018  /* { dg-do assemble } */
52019  /* { dg-require-effective-target arm_neon_ok } */
52020 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52021 +/* { dg-options "-save-temps -O0" } */
52022 +/* { dg-add-options arm_neon } */
52023  
52024  #include "arm_neon.h"
52025  
52026 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c
52027 --- a/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c  2007-07-25 14:28:31.000000000 +0200
52028 +++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c  2010-01-25 09:50:29.515686194 +0100
52029 @@ -3,7 +3,8 @@
52030  
52031  /* { dg-do assemble } */
52032  /* { dg-require-effective-target arm_neon_ok } */
52033 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52034 +/* { dg-options "-save-temps -O0" } */
52035 +/* { dg-add-options arm_neon } */
52036  
52037  #include "arm_neon.h"
52038  
52039 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c
52040 --- a/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c   2007-07-25 14:28:31.000000000 +0200
52041 +++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c   2010-01-25 09:50:29.515686194 +0100
52042 @@ -3,7 +3,8 @@
52043  
52044  /* { dg-do assemble } */
52045  /* { dg-require-effective-target arm_neon_ok } */
52046 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52047 +/* { dg-options "-save-temps -O0" } */
52048 +/* { dg-add-options arm_neon } */
52049  
52050  #include "arm_neon.h"
52051  
52052 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c
52053 --- a/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c  2007-07-25 14:28:31.000000000 +0200
52054 +++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c  2010-01-25 09:50:29.515686194 +0100
52055 @@ -3,7 +3,8 @@
52056  
52057  /* { dg-do assemble } */
52058  /* { dg-require-effective-target arm_neon_ok } */
52059 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52060 +/* { dg-options "-save-temps -O0" } */
52061 +/* { dg-add-options arm_neon } */
52062  
52063  #include "arm_neon.h"
52064  
52065 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c
52066 --- a/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c  2007-07-25 14:28:31.000000000 +0200
52067 +++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c  2010-01-25 09:50:29.515686194 +0100
52068 @@ -3,7 +3,8 @@
52069  
52070  /* { dg-do assemble } */
52071  /* { dg-require-effective-target arm_neon_ok } */
52072 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52073 +/* { dg-options "-save-temps -O0" } */
52074 +/* { dg-add-options arm_neon } */
52075  
52076  #include "arm_neon.h"
52077  
52078 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c
52079 --- a/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c  2007-07-25 14:28:31.000000000 +0200
52080 +++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c  2010-01-25 09:50:29.515686194 +0100
52081 @@ -3,7 +3,8 @@
52082  
52083  /* { dg-do assemble } */
52084  /* { dg-require-effective-target arm_neon_ok } */
52085 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52086 +/* { dg-options "-save-temps -O0" } */
52087 +/* { dg-add-options arm_neon } */
52088  
52089  #include "arm_neon.h"
52090  
52091 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c
52092 --- a/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c   2007-07-25 14:28:31.000000000 +0200
52093 +++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c   2010-01-25 09:50:29.515686194 +0100
52094 @@ -3,7 +3,8 @@
52095  
52096  /* { dg-do assemble } */
52097  /* { dg-require-effective-target arm_neon_ok } */
52098 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52099 +/* { dg-options "-save-temps -O0" } */
52100 +/* { dg-add-options arm_neon } */
52101  
52102  #include "arm_neon.h"
52103  
52104 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c
52105 --- a/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c  2007-07-25 14:28:31.000000000 +0200
52106 +++ b/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c  2010-01-25 09:50:29.515686194 +0100
52107 @@ -3,7 +3,8 @@
52108  
52109  /* { dg-do assemble } */
52110  /* { dg-require-effective-target arm_neon_ok } */
52111 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52112 +/* { dg-options "-save-temps -O0" } */
52113 +/* { dg-add-options arm_neon } */
52114  
52115  #include "arm_neon.h"
52116  
52117 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c
52118 --- a/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c  2007-07-25 14:28:31.000000000 +0200
52119 +++ b/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c  2010-01-25 09:50:29.515686194 +0100
52120 @@ -3,7 +3,8 @@
52121  
52122  /* { dg-do assemble } */
52123  /* { dg-require-effective-target arm_neon_ok } */
52124 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52125 +/* { dg-options "-save-temps -O0" } */
52126 +/* { dg-add-options arm_neon } */
52127  
52128  #include "arm_neon.h"
52129  
52130 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c
52131 --- a/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c  2007-07-25 14:28:31.000000000 +0200
52132 +++ b/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c  2010-01-25 09:50:29.515686194 +0100
52133 @@ -3,7 +3,8 @@
52134  
52135  /* { dg-do assemble } */
52136  /* { dg-require-effective-target arm_neon_ok } */
52137 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52138 +/* { dg-options "-save-temps -O0" } */
52139 +/* { dg-add-options arm_neon } */
52140  
52141  #include "arm_neon.h"
52142  
52143 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c
52144 --- a/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c   2007-07-25 14:28:31.000000000 +0200
52145 +++ b/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c   2010-01-25 09:50:29.515686194 +0100
52146 @@ -3,7 +3,8 @@
52147  
52148  /* { dg-do assemble } */
52149  /* { dg-require-effective-target arm_neon_ok } */
52150 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52151 +/* { dg-options "-save-temps -O0" } */
52152 +/* { dg-add-options arm_neon } */
52153  
52154  #include "arm_neon.h"
52155  
52156 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c
52157 --- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c 2007-07-25 14:28:31.000000000 +0200
52158 +++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c 2010-01-25 09:50:29.515686194 +0100
52159 @@ -3,7 +3,8 @@
52160  
52161  /* { dg-do assemble } */
52162  /* { dg-require-effective-target arm_neon_ok } */
52163 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52164 +/* { dg-options "-save-temps -O0" } */
52165 +/* { dg-add-options arm_neon } */
52166  
52167  #include "arm_neon.h"
52168  
52169 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c
52170 --- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c 2007-07-25 14:28:31.000000000 +0200
52171 +++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c 2010-01-25 09:50:29.515686194 +0100
52172 @@ -3,7 +3,8 @@
52173  
52174  /* { dg-do assemble } */
52175  /* { dg-require-effective-target arm_neon_ok } */
52176 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52177 +/* { dg-options "-save-temps -O0" } */
52178 +/* { dg-add-options arm_neon } */
52179  
52180  #include "arm_neon.h"
52181  
52182 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c
52183 --- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c  2007-07-25 14:28:31.000000000 +0200
52184 +++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c  2010-01-25 09:50:29.515686194 +0100
52185 @@ -3,7 +3,8 @@
52186  
52187  /* { dg-do assemble } */
52188  /* { dg-require-effective-target arm_neon_ok } */
52189 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52190 +/* { dg-options "-save-temps -O0" } */
52191 +/* { dg-add-options arm_neon } */
52192  
52193  #include "arm_neon.h"
52194  
52195 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c
52196 --- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c 2007-07-25 14:28:31.000000000 +0200
52197 +++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c 2010-01-25 09:50:29.515686194 +0100
52198 @@ -3,7 +3,8 @@
52199  
52200  /* { dg-do assemble } */
52201  /* { dg-require-effective-target arm_neon_ok } */
52202 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52203 +/* { dg-options "-save-temps -O0" } */
52204 +/* { dg-add-options arm_neon } */
52205  
52206  #include "arm_neon.h"
52207  
52208 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c
52209 --- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c 2007-07-25 14:28:31.000000000 +0200
52210 +++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c 2010-01-25 09:50:29.515686194 +0100
52211 @@ -3,7 +3,8 @@
52212  
52213  /* { dg-do assemble } */
52214  /* { dg-require-effective-target arm_neon_ok } */
52215 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52216 +/* { dg-options "-save-temps -O0" } */
52217 +/* { dg-add-options arm_neon } */
52218  
52219  #include "arm_neon.h"
52220  
52221 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c
52222 --- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c 2007-07-25 14:28:31.000000000 +0200
52223 +++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c 2010-01-25 09:50:29.515686194 +0100
52224 @@ -3,7 +3,8 @@
52225  
52226  /* { dg-do assemble } */
52227  /* { dg-require-effective-target arm_neon_ok } */
52228 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52229 +/* { dg-options "-save-temps -O0" } */
52230 +/* { dg-add-options arm_neon } */
52231  
52232  #include "arm_neon.h"
52233  
52234 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c
52235 --- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c  2007-07-25 14:28:31.000000000 +0200
52236 +++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c  2010-01-25 09:50:29.515686194 +0100
52237 @@ -3,7 +3,8 @@
52238  
52239  /* { dg-do assemble } */
52240  /* { dg-require-effective-target arm_neon_ok } */
52241 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52242 +/* { dg-options "-save-temps -O0" } */
52243 +/* { dg-add-options arm_neon } */
52244  
52245  #include "arm_neon.h"
52246  
52247 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c
52248 --- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c 2007-07-25 14:28:31.000000000 +0200
52249 +++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c 2010-01-25 09:50:29.515686194 +0100
52250 @@ -3,7 +3,8 @@
52251  
52252  /* { dg-do assemble } */
52253  /* { dg-require-effective-target arm_neon_ok } */
52254 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52255 +/* { dg-options "-save-temps -O0" } */
52256 +/* { dg-add-options arm_neon } */
52257  
52258  #include "arm_neon.h"
52259  
52260 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c
52261 --- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c 2007-07-25 14:28:31.000000000 +0200
52262 +++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c 2010-01-25 09:50:29.515686194 +0100
52263 @@ -3,7 +3,8 @@
52264  
52265  /* { dg-do assemble } */
52266  /* { dg-require-effective-target arm_neon_ok } */
52267 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52268 +/* { dg-options "-save-temps -O0" } */
52269 +/* { dg-add-options arm_neon } */
52270  
52271  #include "arm_neon.h"
52272  
52273 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c
52274 --- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c 2007-07-25 14:28:31.000000000 +0200
52275 +++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c 2010-01-25 09:50:29.515686194 +0100
52276 @@ -3,7 +3,8 @@
52277  
52278  /* { dg-do assemble } */
52279  /* { dg-require-effective-target arm_neon_ok } */
52280 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52281 +/* { dg-options "-save-temps -O0" } */
52282 +/* { dg-add-options arm_neon } */
52283  
52284  #include "arm_neon.h"
52285  
52286 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c
52287 --- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c  2007-07-25 14:28:31.000000000 +0200
52288 +++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c  2010-01-25 09:50:29.515686194 +0100
52289 @@ -3,7 +3,8 @@
52290  
52291  /* { dg-do assemble } */
52292  /* { dg-require-effective-target arm_neon_ok } */
52293 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52294 +/* { dg-options "-save-temps -O0" } */
52295 +/* { dg-add-options arm_neon } */
52296  
52297  #include "arm_neon.h"
52298  
52299 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c
52300 --- a/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c    2007-07-25 14:28:31.000000000 +0200
52301 +++ b/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c    2010-01-25 09:50:29.515686194 +0100
52302 @@ -3,7 +3,8 @@
52303  
52304  /* { dg-do assemble } */
52305  /* { dg-require-effective-target arm_neon_ok } */
52306 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52307 +/* { dg-options "-save-temps -O0" } */
52308 +/* { dg-add-options arm_neon } */
52309  
52310  #include "arm_neon.h"
52311  
52312 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c
52313 --- a/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c    2007-07-25 14:28:31.000000000 +0200
52314 +++ b/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c    2010-01-25 09:50:29.515686194 +0100
52315 @@ -3,7 +3,8 @@
52316  
52317  /* { dg-do assemble } */
52318  /* { dg-require-effective-target arm_neon_ok } */
52319 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52320 +/* { dg-options "-save-temps -O0" } */
52321 +/* { dg-add-options arm_neon } */
52322  
52323  #include "arm_neon.h"
52324  
52325 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c
52326 --- a/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c     2007-07-25 14:28:31.000000000 +0200
52327 +++ b/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c     2010-01-25 09:50:29.515686194 +0100
52328 @@ -3,7 +3,8 @@
52329  
52330  /* { dg-do assemble } */
52331  /* { dg-require-effective-target arm_neon_ok } */
52332 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52333 +/* { dg-options "-save-temps -O0" } */
52334 +/* { dg-add-options arm_neon } */
52335  
52336  #include "arm_neon.h"
52337  
52338 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c
52339 --- a/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c    2007-07-25 14:28:31.000000000 +0200
52340 +++ b/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c    2010-01-25 09:50:29.515686194 +0100
52341 @@ -3,7 +3,8 @@
52342  
52343  /* { dg-do assemble } */
52344  /* { dg-require-effective-target arm_neon_ok } */
52345 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52346 +/* { dg-options "-save-temps -O0" } */
52347 +/* { dg-add-options arm_neon } */
52348  
52349  #include "arm_neon.h"
52350  
52351 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c
52352 --- a/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c    2007-07-25 14:28:31.000000000 +0200
52353 +++ b/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c    2010-01-25 09:50:29.515686194 +0100
52354 @@ -3,7 +3,8 @@
52355  
52356  /* { dg-do assemble } */
52357  /* { dg-require-effective-target arm_neon_ok } */
52358 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52359 +/* { dg-options "-save-temps -O0" } */
52360 +/* { dg-add-options arm_neon } */
52361  
52362  #include "arm_neon.h"
52363  
52364 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c
52365 --- a/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c     2007-07-25 14:28:31.000000000 +0200
52366 +++ b/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c     2010-01-25 09:50:29.515686194 +0100
52367 @@ -3,7 +3,8 @@
52368  
52369  /* { dg-do assemble } */
52370  /* { dg-require-effective-target arm_neon_ok } */
52371 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52372 +/* { dg-options "-save-temps -O0" } */
52373 +/* { dg-add-options arm_neon } */
52374  
52375  #include "arm_neon.h"
52376  
52377 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c
52378 --- a/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c     2007-07-25 14:28:31.000000000 +0200
52379 +++ b/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c     2010-01-25 09:50:29.515686194 +0100
52380 @@ -3,7 +3,8 @@
52381  
52382  /* { dg-do assemble } */
52383  /* { dg-require-effective-target arm_neon_ok } */
52384 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52385 +/* { dg-options "-save-temps -O0" } */
52386 +/* { dg-add-options arm_neon } */
52387  
52388  #include "arm_neon.h"
52389  
52390 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c
52391 --- a/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c     2007-07-25 14:28:31.000000000 +0200
52392 +++ b/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c     2010-01-25 09:50:29.515686194 +0100
52393 @@ -3,7 +3,8 @@
52394  
52395  /* { dg-do assemble } */
52396  /* { dg-require-effective-target arm_neon_ok } */
52397 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52398 +/* { dg-options "-save-temps -O0" } */
52399 +/* { dg-add-options arm_neon } */
52400  
52401  #include "arm_neon.h"
52402  
52403 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c
52404 --- a/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c     2007-07-25 14:28:31.000000000 +0200
52405 +++ b/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c     2010-01-25 09:50:29.515686194 +0100
52406 @@ -3,7 +3,8 @@
52407  
52408  /* { dg-do assemble } */
52409  /* { dg-require-effective-target arm_neon_ok } */
52410 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52411 +/* { dg-options "-save-temps -O0" } */
52412 +/* { dg-add-options arm_neon } */
52413  
52414  #include "arm_neon.h"
52415  
52416 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c
52417 --- a/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c      2007-07-25 14:28:31.000000000 +0200
52418 +++ b/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c      2010-01-25 09:50:29.515686194 +0100
52419 @@ -3,7 +3,8 @@
52420  
52421  /* { dg-do assemble } */
52422  /* { dg-require-effective-target arm_neon_ok } */
52423 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52424 +/* { dg-options "-save-temps -O0" } */
52425 +/* { dg-add-options arm_neon } */
52426  
52427  #include "arm_neon.h"
52428  
52429 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c
52430 --- a/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c     2007-07-25 14:28:31.000000000 +0200
52431 +++ b/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c     2010-01-25 09:50:29.515686194 +0100
52432 @@ -3,7 +3,8 @@
52433  
52434  /* { dg-do assemble } */
52435  /* { dg-require-effective-target arm_neon_ok } */
52436 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52437 +/* { dg-options "-save-temps -O0" } */
52438 +/* { dg-add-options arm_neon } */
52439  
52440  #include "arm_neon.h"
52441  
52442 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c
52443 --- a/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c     2007-07-25 14:28:31.000000000 +0200
52444 +++ b/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c     2010-01-25 09:50:29.515686194 +0100
52445 @@ -3,7 +3,8 @@
52446  
52447  /* { dg-do assemble } */
52448  /* { dg-require-effective-target arm_neon_ok } */
52449 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52450 +/* { dg-options "-save-temps -O0" } */
52451 +/* { dg-add-options arm_neon } */
52452  
52453  #include "arm_neon.h"
52454  
52455 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c
52456 --- a/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c     2007-07-25 14:28:31.000000000 +0200
52457 +++ b/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c     2010-01-25 09:50:29.515686194 +0100
52458 @@ -3,7 +3,8 @@
52459  
52460  /* { dg-do assemble } */
52461  /* { dg-require-effective-target arm_neon_ok } */
52462 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52463 +/* { dg-options "-save-temps -O0" } */
52464 +/* { dg-add-options arm_neon } */
52465  
52466  #include "arm_neon.h"
52467  
52468 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c
52469 --- a/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c      2007-07-25 14:28:31.000000000 +0200
52470 +++ b/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c      2010-01-25 09:50:29.515686194 +0100
52471 @@ -3,7 +3,8 @@
52472  
52473  /* { dg-do assemble } */
52474  /* { dg-require-effective-target arm_neon_ok } */
52475 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52476 +/* { dg-options "-save-temps -O0" } */
52477 +/* { dg-add-options arm_neon } */
52478  
52479  #include "arm_neon.h"
52480  
52481 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c
52482 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c    2007-07-25 14:28:31.000000000 +0200
52483 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c    2010-01-25 09:50:29.515686194 +0100
52484 @@ -3,7 +3,8 @@
52485  
52486  /* { dg-do assemble } */
52487  /* { dg-require-effective-target arm_neon_ok } */
52488 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52489 +/* { dg-options "-save-temps -O0" } */
52490 +/* { dg-add-options arm_neon } */
52491  
52492  #include "arm_neon.h"
52493  
52494 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c
52495 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c    2007-07-25 14:28:31.000000000 +0200
52496 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c    2010-01-25 09:50:29.515686194 +0100
52497 @@ -3,7 +3,8 @@
52498  
52499  /* { dg-do assemble } */
52500  /* { dg-require-effective-target arm_neon_ok } */
52501 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52502 +/* { dg-options "-save-temps -O0" } */
52503 +/* { dg-add-options arm_neon } */
52504  
52505  #include "arm_neon.h"
52506  
52507 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c
52508 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c    2007-07-25 14:28:31.000000000 +0200
52509 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c    2010-01-25 09:50:29.515686194 +0100
52510 @@ -3,7 +3,8 @@
52511  
52512  /* { dg-do assemble } */
52513  /* { dg-require-effective-target arm_neon_ok } */
52514 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52515 +/* { dg-options "-save-temps -O0" } */
52516 +/* { dg-add-options arm_neon } */
52517  
52518  #include "arm_neon.h"
52519  
52520 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c
52521 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c     2007-07-25 14:28:31.000000000 +0200
52522 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c     2010-01-25 09:50:29.515686194 +0100
52523 @@ -3,7 +3,8 @@
52524  
52525  /* { dg-do assemble } */
52526  /* { dg-require-effective-target arm_neon_ok } */
52527 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52528 +/* { dg-options "-save-temps -O0" } */
52529 +/* { dg-add-options arm_neon } */
52530  
52531  #include "arm_neon.h"
52532  
52533 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c
52534 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c    2007-07-25 14:28:31.000000000 +0200
52535 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c    2010-01-25 09:50:29.515686194 +0100
52536 @@ -3,7 +3,8 @@
52537  
52538  /* { dg-do assemble } */
52539  /* { dg-require-effective-target arm_neon_ok } */
52540 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52541 +/* { dg-options "-save-temps -O0" } */
52542 +/* { dg-add-options arm_neon } */
52543  
52544  #include "arm_neon.h"
52545  
52546 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c
52547 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c    2007-07-25 14:28:31.000000000 +0200
52548 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c    2010-01-25 09:50:29.515686194 +0100
52549 @@ -3,7 +3,8 @@
52550  
52551  /* { dg-do assemble } */
52552  /* { dg-require-effective-target arm_neon_ok } */
52553 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52554 +/* { dg-options "-save-temps -O0" } */
52555 +/* { dg-add-options arm_neon } */
52556  
52557  #include "arm_neon.h"
52558  
52559 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c
52560 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c    2007-07-25 14:28:31.000000000 +0200
52561 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c    2010-01-25 09:50:29.515686194 +0100
52562 @@ -3,7 +3,8 @@
52563  
52564  /* { dg-do assemble } */
52565  /* { dg-require-effective-target arm_neon_ok } */
52566 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52567 +/* { dg-options "-save-temps -O0" } */
52568 +/* { dg-add-options arm_neon } */
52569  
52570  #include "arm_neon.h"
52571  
52572 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c
52573 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c     2007-07-25 14:28:31.000000000 +0200
52574 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c     2010-01-25 09:50:29.515686194 +0100
52575 @@ -3,7 +3,8 @@
52576  
52577  /* { dg-do assemble } */
52578  /* { dg-require-effective-target arm_neon_ok } */
52579 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52580 +/* { dg-options "-save-temps -O0" } */
52581 +/* { dg-add-options arm_neon } */
52582  
52583  #include "arm_neon.h"
52584  
52585 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c b/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c
52586 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c      2007-07-25 14:28:31.000000000 +0200
52587 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c      2010-01-25 09:50:29.515686194 +0100
52588 @@ -3,7 +3,8 @@
52589  
52590  /* { dg-do assemble } */
52591  /* { dg-require-effective-target arm_neon_ok } */
52592 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52593 +/* { dg-options "-save-temps -O0" } */
52594 +/* { dg-add-options arm_neon } */
52595  
52596  #include "arm_neon.h"
52597  
52598 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c b/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c
52599 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c      2007-07-25 14:28:31.000000000 +0200
52600 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c      2010-01-25 09:50:29.515686194 +0100
52601 @@ -3,7 +3,8 @@
52602  
52603  /* { dg-do assemble } */
52604  /* { dg-require-effective-target arm_neon_ok } */
52605 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52606 +/* { dg-options "-save-temps -O0" } */
52607 +/* { dg-add-options arm_neon } */
52608  
52609  #include "arm_neon.h"
52610  
52611 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c b/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c
52612 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c      2007-07-25 14:28:31.000000000 +0200
52613 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c      2010-01-25 09:50:29.515686194 +0100
52614 @@ -3,7 +3,8 @@
52615  
52616  /* { dg-do assemble } */
52617  /* { dg-require-effective-target arm_neon_ok } */
52618 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52619 +/* { dg-options "-save-temps -O0" } */
52620 +/* { dg-add-options arm_neon } */
52621  
52622  #include "arm_neon.h"
52623  
52624 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c b/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c
52625 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c       2007-07-25 14:28:31.000000000 +0200
52626 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c       2010-01-25 09:50:29.515686194 +0100
52627 @@ -3,7 +3,8 @@
52628  
52629  /* { dg-do assemble } */
52630  /* { dg-require-effective-target arm_neon_ok } */
52631 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52632 +/* { dg-options "-save-temps -O0" } */
52633 +/* { dg-add-options arm_neon } */
52634  
52635  #include "arm_neon.h"
52636  
52637 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c b/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c
52638 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c      2007-07-25 14:28:31.000000000 +0200
52639 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c      2010-01-25 09:50:29.515686194 +0100
52640 @@ -3,7 +3,8 @@
52641  
52642  /* { dg-do assemble } */
52643  /* { dg-require-effective-target arm_neon_ok } */
52644 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52645 +/* { dg-options "-save-temps -O0" } */
52646 +/* { dg-add-options arm_neon } */
52647  
52648  #include "arm_neon.h"
52649  
52650 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c b/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c
52651 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c      2007-07-25 14:28:31.000000000 +0200
52652 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c      2010-01-25 09:50:29.515686194 +0100
52653 @@ -3,7 +3,8 @@
52654  
52655  /* { dg-do assemble } */
52656  /* { dg-require-effective-target arm_neon_ok } */
52657 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52658 +/* { dg-options "-save-temps -O0" } */
52659 +/* { dg-add-options arm_neon } */
52660  
52661  #include "arm_neon.h"
52662  
52663 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c b/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c
52664 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c      2007-07-25 14:28:31.000000000 +0200
52665 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c      2010-01-25 09:50:29.515686194 +0100
52666 @@ -3,7 +3,8 @@
52667  
52668  /* { dg-do assemble } */
52669  /* { dg-require-effective-target arm_neon_ok } */
52670 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52671 +/* { dg-options "-save-temps -O0" } */
52672 +/* { dg-add-options arm_neon } */
52673  
52674  #include "arm_neon.h"
52675  
52676 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c b/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c
52677 --- a/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c       2007-07-25 14:28:31.000000000 +0200
52678 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c       2010-01-25 09:50:29.515686194 +0100
52679 @@ -3,7 +3,8 @@
52680  
52681  /* { dg-do assemble } */
52682  /* { dg-require-effective-target arm_neon_ok } */
52683 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52684 +/* { dg-options "-save-temps -O0" } */
52685 +/* { dg-add-options arm_neon } */
52686  
52687  #include "arm_neon.h"
52688  
52689 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshls16.c b/gcc/testsuite/gcc.target/arm/neon/vshls16.c
52690 --- a/gcc/testsuite/gcc.target/arm/neon/vshls16.c       2007-07-25 14:28:31.000000000 +0200
52691 +++ b/gcc/testsuite/gcc.target/arm/neon/vshls16.c       2010-01-25 09:50:29.515686194 +0100
52692 @@ -3,7 +3,8 @@
52693  
52694  /* { dg-do assemble } */
52695  /* { dg-require-effective-target arm_neon_ok } */
52696 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52697 +/* { dg-options "-save-temps -O0" } */
52698 +/* { dg-add-options arm_neon } */
52699  
52700  #include "arm_neon.h"
52701  
52702 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshls32.c b/gcc/testsuite/gcc.target/arm/neon/vshls32.c
52703 --- a/gcc/testsuite/gcc.target/arm/neon/vshls32.c       2007-07-25 14:28:31.000000000 +0200
52704 +++ b/gcc/testsuite/gcc.target/arm/neon/vshls32.c       2010-01-25 09:50:29.515686194 +0100
52705 @@ -3,7 +3,8 @@
52706  
52707  /* { dg-do assemble } */
52708  /* { dg-require-effective-target arm_neon_ok } */
52709 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52710 +/* { dg-options "-save-temps -O0" } */
52711 +/* { dg-add-options arm_neon } */
52712  
52713  #include "arm_neon.h"
52714  
52715 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshls64.c b/gcc/testsuite/gcc.target/arm/neon/vshls64.c
52716 --- a/gcc/testsuite/gcc.target/arm/neon/vshls64.c       2007-07-25 14:28:31.000000000 +0200
52717 +++ b/gcc/testsuite/gcc.target/arm/neon/vshls64.c       2010-01-25 09:50:29.515686194 +0100
52718 @@ -3,7 +3,8 @@
52719  
52720  /* { dg-do assemble } */
52721  /* { dg-require-effective-target arm_neon_ok } */
52722 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52723 +/* { dg-options "-save-temps -O0" } */
52724 +/* { dg-add-options arm_neon } */
52725  
52726  #include "arm_neon.h"
52727  
52728 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshls8.c b/gcc/testsuite/gcc.target/arm/neon/vshls8.c
52729 --- a/gcc/testsuite/gcc.target/arm/neon/vshls8.c        2007-07-25 14:28:31.000000000 +0200
52730 +++ b/gcc/testsuite/gcc.target/arm/neon/vshls8.c        2010-01-25 09:50:29.515686194 +0100
52731 @@ -3,7 +3,8 @@
52732  
52733  /* { dg-do assemble } */
52734  /* { dg-require-effective-target arm_neon_ok } */
52735 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52736 +/* { dg-options "-save-temps -O0" } */
52737 +/* { dg-add-options arm_neon } */
52738  
52739  #include "arm_neon.h"
52740  
52741 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlu16.c b/gcc/testsuite/gcc.target/arm/neon/vshlu16.c
52742 --- a/gcc/testsuite/gcc.target/arm/neon/vshlu16.c       2007-07-25 14:28:31.000000000 +0200
52743 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlu16.c       2010-01-25 09:50:29.515686194 +0100
52744 @@ -3,7 +3,8 @@
52745  
52746  /* { dg-do assemble } */
52747  /* { dg-require-effective-target arm_neon_ok } */
52748 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52749 +/* { dg-options "-save-temps -O0" } */
52750 +/* { dg-add-options arm_neon } */
52751  
52752  #include "arm_neon.h"
52753  
52754 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlu32.c b/gcc/testsuite/gcc.target/arm/neon/vshlu32.c
52755 --- a/gcc/testsuite/gcc.target/arm/neon/vshlu32.c       2007-07-25 14:28:31.000000000 +0200
52756 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlu32.c       2010-01-25 09:50:29.515686194 +0100
52757 @@ -3,7 +3,8 @@
52758  
52759  /* { dg-do assemble } */
52760  /* { dg-require-effective-target arm_neon_ok } */
52761 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52762 +/* { dg-options "-save-temps -O0" } */
52763 +/* { dg-add-options arm_neon } */
52764  
52765  #include "arm_neon.h"
52766  
52767 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlu64.c b/gcc/testsuite/gcc.target/arm/neon/vshlu64.c
52768 --- a/gcc/testsuite/gcc.target/arm/neon/vshlu64.c       2007-07-25 14:28:31.000000000 +0200
52769 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlu64.c       2010-01-25 09:50:29.515686194 +0100
52770 @@ -3,7 +3,8 @@
52771  
52772  /* { dg-do assemble } */
52773  /* { dg-require-effective-target arm_neon_ok } */
52774 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52775 +/* { dg-options "-save-temps -O0" } */
52776 +/* { dg-add-options arm_neon } */
52777  
52778  #include "arm_neon.h"
52779  
52780 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlu8.c b/gcc/testsuite/gcc.target/arm/neon/vshlu8.c
52781 --- a/gcc/testsuite/gcc.target/arm/neon/vshlu8.c        2007-07-25 14:28:31.000000000 +0200
52782 +++ b/gcc/testsuite/gcc.target/arm/neon/vshlu8.c        2010-01-25 09:50:29.515686194 +0100
52783 @@ -3,7 +3,8 @@
52784  
52785  /* { dg-do assemble } */
52786  /* { dg-require-effective-target arm_neon_ok } */
52787 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52788 +/* { dg-options "-save-temps -O0" } */
52789 +/* { dg-add-options arm_neon } */
52790  
52791  #include "arm_neon.h"
52792  
52793 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c
52794 --- a/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c    2007-07-25 14:28:31.000000000 +0200
52795 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c    2010-01-25 09:50:29.515686194 +0100
52796 @@ -3,7 +3,8 @@
52797  
52798  /* { dg-do assemble } */
52799  /* { dg-require-effective-target arm_neon_ok } */
52800 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52801 +/* { dg-options "-save-temps -O0" } */
52802 +/* { dg-add-options arm_neon } */
52803  
52804  #include "arm_neon.h"
52805  
52806 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c
52807 --- a/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c    2007-07-25 14:28:31.000000000 +0200
52808 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c    2010-01-25 09:50:29.515686194 +0100
52809 @@ -3,7 +3,8 @@
52810  
52811  /* { dg-do assemble } */
52812  /* { dg-require-effective-target arm_neon_ok } */
52813 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52814 +/* { dg-options "-save-temps -O0" } */
52815 +/* { dg-add-options arm_neon } */
52816  
52817  #include "arm_neon.h"
52818  
52819 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c
52820 --- a/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c    2007-07-25 14:28:31.000000000 +0200
52821 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c    2010-01-25 09:50:29.515686194 +0100
52822 @@ -3,7 +3,8 @@
52823  
52824  /* { dg-do assemble } */
52825  /* { dg-require-effective-target arm_neon_ok } */
52826 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52827 +/* { dg-options "-save-temps -O0" } */
52828 +/* { dg-add-options arm_neon } */
52829  
52830  #include "arm_neon.h"
52831  
52832 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c
52833 --- a/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c    2007-07-25 14:28:31.000000000 +0200
52834 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c    2010-01-25 09:50:29.515686194 +0100
52835 @@ -3,7 +3,8 @@
52836  
52837  /* { dg-do assemble } */
52838  /* { dg-require-effective-target arm_neon_ok } */
52839 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52840 +/* { dg-options "-save-temps -O0" } */
52841 +/* { dg-add-options arm_neon } */
52842  
52843  #include "arm_neon.h"
52844  
52845 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c
52846 --- a/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c    2007-07-25 14:28:31.000000000 +0200
52847 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c    2010-01-25 09:50:29.515686194 +0100
52848 @@ -3,7 +3,8 @@
52849  
52850  /* { dg-do assemble } */
52851  /* { dg-require-effective-target arm_neon_ok } */
52852 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52853 +/* { dg-options "-save-temps -O0" } */
52854 +/* { dg-add-options arm_neon } */
52855  
52856  #include "arm_neon.h"
52857  
52858 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c
52859 --- a/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c    2007-07-25 14:28:31.000000000 +0200
52860 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c    2010-01-25 09:50:29.515686194 +0100
52861 @@ -3,7 +3,8 @@
52862  
52863  /* { dg-do assemble } */
52864  /* { dg-require-effective-target arm_neon_ok } */
52865 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52866 +/* { dg-options "-save-temps -O0" } */
52867 +/* { dg-add-options arm_neon } */
52868  
52869  #include "arm_neon.h"
52870  
52871 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c
52872 --- a/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c     2007-07-25 14:28:31.000000000 +0200
52873 +++ b/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c     2010-01-25 09:50:29.515686194 +0100
52874 @@ -3,7 +3,8 @@
52875  
52876  /* { dg-do assemble } */
52877  /* { dg-require-effective-target arm_neon_ok } */
52878 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52879 +/* { dg-options "-save-temps -O0" } */
52880 +/* { dg-add-options arm_neon } */
52881  
52882  #include "arm_neon.h"
52883  
52884 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c
52885 --- a/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c     2007-07-25 14:28:31.000000000 +0200
52886 +++ b/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c     2010-01-25 09:50:29.515686194 +0100
52887 @@ -3,7 +3,8 @@
52888  
52889  /* { dg-do assemble } */
52890  /* { dg-require-effective-target arm_neon_ok } */
52891 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52892 +/* { dg-options "-save-temps -O0" } */
52893 +/* { dg-add-options arm_neon } */
52894  
52895  #include "arm_neon.h"
52896  
52897 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c
52898 --- a/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c     2007-07-25 14:28:31.000000000 +0200
52899 +++ b/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c     2010-01-25 09:50:29.515686194 +0100
52900 @@ -3,7 +3,8 @@
52901  
52902  /* { dg-do assemble } */
52903  /* { dg-require-effective-target arm_neon_ok } */
52904 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52905 +/* { dg-options "-save-temps -O0" } */
52906 +/* { dg-add-options arm_neon } */
52907  
52908  #include "arm_neon.h"
52909  
52910 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c
52911 --- a/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c      2007-07-25 14:28:31.000000000 +0200
52912 +++ b/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c      2010-01-25 09:50:29.515686194 +0100
52913 @@ -3,7 +3,8 @@
52914  
52915  /* { dg-do assemble } */
52916  /* { dg-require-effective-target arm_neon_ok } */
52917 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52918 +/* { dg-options "-save-temps -O0" } */
52919 +/* { dg-add-options arm_neon } */
52920  
52921  #include "arm_neon.h"
52922  
52923 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c
52924 --- a/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c     2007-07-25 14:28:31.000000000 +0200
52925 +++ b/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c     2010-01-25 09:50:29.525687396 +0100
52926 @@ -3,7 +3,8 @@
52927  
52928  /* { dg-do assemble } */
52929  /* { dg-require-effective-target arm_neon_ok } */
52930 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52931 +/* { dg-options "-save-temps -O0" } */
52932 +/* { dg-add-options arm_neon } */
52933  
52934  #include "arm_neon.h"
52935  
52936 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c
52937 --- a/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c     2007-07-25 14:28:31.000000000 +0200
52938 +++ b/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c     2010-01-25 09:50:29.525687396 +0100
52939 @@ -3,7 +3,8 @@
52940  
52941  /* { dg-do assemble } */
52942  /* { dg-require-effective-target arm_neon_ok } */
52943 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52944 +/* { dg-options "-save-temps -O0" } */
52945 +/* { dg-add-options arm_neon } */
52946  
52947  #include "arm_neon.h"
52948  
52949 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c
52950 --- a/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c     2007-07-25 14:28:31.000000000 +0200
52951 +++ b/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c     2010-01-25 09:50:29.525687396 +0100
52952 @@ -3,7 +3,8 @@
52953  
52954  /* { dg-do assemble } */
52955  /* { dg-require-effective-target arm_neon_ok } */
52956 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52957 +/* { dg-options "-save-temps -O0" } */
52958 +/* { dg-add-options arm_neon } */
52959  
52960  #include "arm_neon.h"
52961  
52962 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c
52963 --- a/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c      2007-07-25 14:28:31.000000000 +0200
52964 +++ b/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c      2010-01-25 09:50:29.525687396 +0100
52965 @@ -3,7 +3,8 @@
52966  
52967  /* { dg-do assemble } */
52968  /* { dg-require-effective-target arm_neon_ok } */
52969 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52970 +/* { dg-options "-save-temps -O0" } */
52971 +/* { dg-add-options arm_neon } */
52972  
52973  #include "arm_neon.h"
52974  
52975 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c
52976 --- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c    2007-07-25 14:28:31.000000000 +0200
52977 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c    2010-01-25 09:50:29.525687396 +0100
52978 @@ -3,7 +3,8 @@
52979  
52980  /* { dg-do assemble } */
52981  /* { dg-require-effective-target arm_neon_ok } */
52982 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52983 +/* { dg-options "-save-temps -O0" } */
52984 +/* { dg-add-options arm_neon } */
52985  
52986  #include "arm_neon.h"
52987  
52988 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c
52989 --- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c    2007-07-25 14:28:31.000000000 +0200
52990 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c    2010-01-25 09:50:29.525687396 +0100
52991 @@ -3,7 +3,8 @@
52992  
52993  /* { dg-do assemble } */
52994  /* { dg-require-effective-target arm_neon_ok } */
52995 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
52996 +/* { dg-options "-save-temps -O0" } */
52997 +/* { dg-add-options arm_neon } */
52998  
52999  #include "arm_neon.h"
53000  
53001 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c
53002 --- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c    2007-07-25 14:28:31.000000000 +0200
53003 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c    2010-01-25 09:50:29.525687396 +0100
53004 @@ -3,7 +3,8 @@
53005  
53006  /* { dg-do assemble } */
53007  /* { dg-require-effective-target arm_neon_ok } */
53008 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53009 +/* { dg-options "-save-temps -O0" } */
53010 +/* { dg-add-options arm_neon } */
53011  
53012  #include "arm_neon.h"
53013  
53014 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c
53015 --- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c     2007-07-25 14:28:31.000000000 +0200
53016 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c     2010-01-25 09:50:29.525687396 +0100
53017 @@ -3,7 +3,8 @@
53018  
53019  /* { dg-do assemble } */
53020  /* { dg-require-effective-target arm_neon_ok } */
53021 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53022 +/* { dg-options "-save-temps -O0" } */
53023 +/* { dg-add-options arm_neon } */
53024  
53025  #include "arm_neon.h"
53026  
53027 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c
53028 --- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c    2007-07-25 14:28:31.000000000 +0200
53029 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c    2010-01-25 09:50:29.525687396 +0100
53030 @@ -3,7 +3,8 @@
53031  
53032  /* { dg-do assemble } */
53033  /* { dg-require-effective-target arm_neon_ok } */
53034 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53035 +/* { dg-options "-save-temps -O0" } */
53036 +/* { dg-add-options arm_neon } */
53037  
53038  #include "arm_neon.h"
53039  
53040 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c
53041 --- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c    2007-07-25 14:28:31.000000000 +0200
53042 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c    2010-01-25 09:50:29.525687396 +0100
53043 @@ -3,7 +3,8 @@
53044  
53045  /* { dg-do assemble } */
53046  /* { dg-require-effective-target arm_neon_ok } */
53047 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53048 +/* { dg-options "-save-temps -O0" } */
53049 +/* { dg-add-options arm_neon } */
53050  
53051  #include "arm_neon.h"
53052  
53053 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c
53054 --- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c    2007-07-25 14:28:31.000000000 +0200
53055 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c    2010-01-25 09:50:29.525687396 +0100
53056 @@ -3,7 +3,8 @@
53057  
53058  /* { dg-do assemble } */
53059  /* { dg-require-effective-target arm_neon_ok } */
53060 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53061 +/* { dg-options "-save-temps -O0" } */
53062 +/* { dg-add-options arm_neon } */
53063  
53064  #include "arm_neon.h"
53065  
53066 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c
53067 --- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c     2007-07-25 14:28:31.000000000 +0200
53068 +++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c     2010-01-25 09:50:29.525687396 +0100
53069 @@ -3,7 +3,8 @@
53070  
53071  /* { dg-do assemble } */
53072  /* { dg-require-effective-target arm_neon_ok } */
53073 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53074 +/* { dg-options "-save-temps -O0" } */
53075 +/* { dg-add-options arm_neon } */
53076  
53077  #include "arm_neon.h"
53078  
53079 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c b/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c
53080 --- a/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c     2007-07-25 14:28:31.000000000 +0200
53081 +++ b/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c     2010-01-25 09:50:29.525687396 +0100
53082 @@ -3,7 +3,8 @@
53083  
53084  /* { dg-do assemble } */
53085  /* { dg-require-effective-target arm_neon_ok } */
53086 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53087 +/* { dg-options "-save-temps -O0" } */
53088 +/* { dg-add-options arm_neon } */
53089  
53090  #include "arm_neon.h"
53091  
53092 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c b/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c
53093 --- a/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c      2007-07-25 14:28:31.000000000 +0200
53094 +++ b/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c      2010-01-25 09:50:29.525687396 +0100
53095 @@ -3,7 +3,8 @@
53096  
53097  /* { dg-do assemble } */
53098  /* { dg-require-effective-target arm_neon_ok } */
53099 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53100 +/* { dg-options "-save-temps -O0" } */
53101 +/* { dg-add-options arm_neon } */
53102  
53103  #include "arm_neon.h"
53104  
53105 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c
53106 --- a/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c     2007-07-25 14:28:31.000000000 +0200
53107 +++ b/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c     2010-01-25 09:50:29.525687396 +0100
53108 @@ -3,7 +3,8 @@
53109  
53110  /* { dg-do assemble } */
53111  /* { dg-require-effective-target arm_neon_ok } */
53112 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53113 +/* { dg-options "-save-temps -O0" } */
53114 +/* { dg-add-options arm_neon } */
53115  
53116  #include "arm_neon.h"
53117  
53118 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c
53119 --- a/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c     2007-07-25 14:28:31.000000000 +0200
53120 +++ b/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c     2010-01-25 09:50:29.525687396 +0100
53121 @@ -3,7 +3,8 @@
53122  
53123  /* { dg-do assemble } */
53124  /* { dg-require-effective-target arm_neon_ok } */
53125 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53126 +/* { dg-options "-save-temps -O0" } */
53127 +/* { dg-add-options arm_neon } */
53128  
53129  #include "arm_neon.h"
53130  
53131 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c
53132 --- a/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c     2007-07-25 14:28:31.000000000 +0200
53133 +++ b/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c     2010-01-25 09:50:29.525687396 +0100
53134 @@ -3,7 +3,8 @@
53135  
53136  /* { dg-do assemble } */
53137  /* { dg-require-effective-target arm_neon_ok } */
53138 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53139 +/* { dg-options "-save-temps -O0" } */
53140 +/* { dg-add-options arm_neon } */
53141  
53142  #include "arm_neon.h"
53143  
53144 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c
53145 --- a/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c      2007-07-25 14:28:31.000000000 +0200
53146 +++ b/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c      2010-01-25 09:50:29.525687396 +0100
53147 @@ -3,7 +3,8 @@
53148  
53149  /* { dg-do assemble } */
53150  /* { dg-require-effective-target arm_neon_ok } */
53151 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53152 +/* { dg-options "-save-temps -O0" } */
53153 +/* { dg-add-options arm_neon } */
53154  
53155  #include "arm_neon.h"
53156  
53157 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c
53158 --- a/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c     2007-07-25 14:28:31.000000000 +0200
53159 +++ b/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c     2010-01-25 09:50:29.525687396 +0100
53160 @@ -3,7 +3,8 @@
53161  
53162  /* { dg-do assemble } */
53163  /* { dg-require-effective-target arm_neon_ok } */
53164 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53165 +/* { dg-options "-save-temps -O0" } */
53166 +/* { dg-add-options arm_neon } */
53167  
53168  #include "arm_neon.h"
53169  
53170 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c
53171 --- a/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c     2007-07-25 14:28:31.000000000 +0200
53172 +++ b/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c     2010-01-25 09:50:29.525687396 +0100
53173 @@ -3,7 +3,8 @@
53174  
53175  /* { dg-do assemble } */
53176  /* { dg-require-effective-target arm_neon_ok } */
53177 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53178 +/* { dg-options "-save-temps -O0" } */
53179 +/* { dg-add-options arm_neon } */
53180  
53181  #include "arm_neon.h"
53182  
53183 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c
53184 --- a/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c     2007-07-25 14:28:31.000000000 +0200
53185 +++ b/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c     2010-01-25 09:50:29.525687396 +0100
53186 @@ -3,7 +3,8 @@
53187  
53188  /* { dg-do assemble } */
53189  /* { dg-require-effective-target arm_neon_ok } */
53190 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53191 +/* { dg-options "-save-temps -O0" } */
53192 +/* { dg-add-options arm_neon } */
53193  
53194  #include "arm_neon.h"
53195  
53196 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c
53197 --- a/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c      2007-07-25 14:28:31.000000000 +0200
53198 +++ b/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c      2010-01-25 09:50:29.525687396 +0100
53199 @@ -3,7 +3,8 @@
53200  
53201  /* { dg-do assemble } */
53202  /* { dg-require-effective-target arm_neon_ok } */
53203 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53204 +/* { dg-options "-save-temps -O0" } */
53205 +/* { dg-add-options arm_neon } */
53206  
53207  #include "arm_neon.h"
53208  
53209 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c
53210 --- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c    2007-07-25 14:28:31.000000000 +0200
53211 +++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c    2010-01-25 09:50:29.525687396 +0100
53212 @@ -3,7 +3,8 @@
53213  
53214  /* { dg-do assemble } */
53215  /* { dg-require-effective-target arm_neon_ok } */
53216 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53217 +/* { dg-options "-save-temps -O0" } */
53218 +/* { dg-add-options arm_neon } */
53219  
53220  #include "arm_neon.h"
53221  
53222 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c
53223 --- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c     2007-07-25 14:28:31.000000000 +0200
53224 +++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c     2010-01-25 09:50:29.525687396 +0100
53225 @@ -3,7 +3,8 @@
53226  
53227  /* { dg-do assemble } */
53228  /* { dg-require-effective-target arm_neon_ok } */
53229 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53230 +/* { dg-options "-save-temps -O0" } */
53231 +/* { dg-add-options arm_neon } */
53232  
53233  #include "arm_neon.h"
53234  
53235 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c
53236 --- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c    2007-07-25 14:28:31.000000000 +0200
53237 +++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c    2010-01-25 09:50:29.525687396 +0100
53238 @@ -3,7 +3,8 @@
53239  
53240  /* { dg-do assemble } */
53241  /* { dg-require-effective-target arm_neon_ok } */
53242 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53243 +/* { dg-options "-save-temps -O0" } */
53244 +/* { dg-add-options arm_neon } */
53245  
53246  #include "arm_neon.h"
53247  
53248 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c
53249 --- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c    2007-07-25 14:28:31.000000000 +0200
53250 +++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c    2010-01-25 09:50:29.525687396 +0100
53251 @@ -3,7 +3,8 @@
53252  
53253  /* { dg-do assemble } */
53254  /* { dg-require-effective-target arm_neon_ok } */
53255 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53256 +/* { dg-options "-save-temps -O0" } */
53257 +/* { dg-add-options arm_neon } */
53258  
53259  #include "arm_neon.h"
53260  
53261 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c
53262 --- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c    2007-07-25 14:28:31.000000000 +0200
53263 +++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c    2010-01-25 09:50:29.525687396 +0100
53264 @@ -3,7 +3,8 @@
53265  
53266  /* { dg-do assemble } */
53267  /* { dg-require-effective-target arm_neon_ok } */
53268 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53269 +/* { dg-options "-save-temps -O0" } */
53270 +/* { dg-add-options arm_neon } */
53271  
53272  #include "arm_neon.h"
53273  
53274 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c
53275 --- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c     2007-07-25 14:28:31.000000000 +0200
53276 +++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c     2010-01-25 09:50:29.525687396 +0100
53277 @@ -3,7 +3,8 @@
53278  
53279  /* { dg-do assemble } */
53280  /* { dg-require-effective-target arm_neon_ok } */
53281 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53282 +/* { dg-options "-save-temps -O0" } */
53283 +/* { dg-add-options arm_neon } */
53284  
53285  #include "arm_neon.h"
53286  
53287 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c
53288 --- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c    2007-07-25 14:28:31.000000000 +0200
53289 +++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c    2010-01-25 09:50:29.525687396 +0100
53290 @@ -3,7 +3,8 @@
53291  
53292  /* { dg-do assemble } */
53293  /* { dg-require-effective-target arm_neon_ok } */
53294 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53295 +/* { dg-options "-save-temps -O0" } */
53296 +/* { dg-add-options arm_neon } */
53297  
53298  #include "arm_neon.h"
53299  
53300 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c
53301 --- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c    2007-07-25 14:28:31.000000000 +0200
53302 +++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c    2010-01-25 09:50:29.525687396 +0100
53303 @@ -3,7 +3,8 @@
53304  
53305  /* { dg-do assemble } */
53306  /* { dg-require-effective-target arm_neon_ok } */
53307 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53308 +/* { dg-options "-save-temps -O0" } */
53309 +/* { dg-add-options arm_neon } */
53310  
53311  #include "arm_neon.h"
53312  
53313 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c
53314 --- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c    2007-07-25 14:28:31.000000000 +0200
53315 +++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c    2010-01-25 09:50:29.525687396 +0100
53316 @@ -3,7 +3,8 @@
53317  
53318  /* { dg-do assemble } */
53319  /* { dg-require-effective-target arm_neon_ok } */
53320 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53321 +/* { dg-options "-save-temps -O0" } */
53322 +/* { dg-add-options arm_neon } */
53323  
53324  #include "arm_neon.h"
53325  
53326 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c
53327 --- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c     2007-07-25 14:28:31.000000000 +0200
53328 +++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c     2010-01-25 09:50:29.525687396 +0100
53329 @@ -3,7 +3,8 @@
53330  
53331  /* { dg-do assemble } */
53332  /* { dg-require-effective-target arm_neon_ok } */
53333 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53334 +/* { dg-options "-save-temps -O0" } */
53335 +/* { dg-add-options arm_neon } */
53336  
53337  #include "arm_neon.h"
53338  
53339 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c
53340 --- a/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c     2007-07-25 14:28:31.000000000 +0200
53341 +++ b/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c     2010-01-25 09:50:29.525687396 +0100
53342 @@ -3,7 +3,8 @@
53343  
53344  /* { dg-do assemble } */
53345  /* { dg-require-effective-target arm_neon_ok } */
53346 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53347 +/* { dg-options "-save-temps -O0" } */
53348 +/* { dg-add-options arm_neon } */
53349  
53350  #include "arm_neon.h"
53351  
53352 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c
53353 --- a/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c     2007-07-25 14:28:31.000000000 +0200
53354 +++ b/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c     2010-01-25 09:50:29.525687396 +0100
53355 @@ -3,7 +3,8 @@
53356  
53357  /* { dg-do assemble } */
53358  /* { dg-require-effective-target arm_neon_ok } */
53359 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53360 +/* { dg-options "-save-temps -O0" } */
53361 +/* { dg-add-options arm_neon } */
53362  
53363  #include "arm_neon.h"
53364  
53365 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c
53366 --- a/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c     2007-07-25 14:28:31.000000000 +0200
53367 +++ b/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c     2010-01-25 09:50:29.525687396 +0100
53368 @@ -3,7 +3,8 @@
53369  
53370  /* { dg-do assemble } */
53371  /* { dg-require-effective-target arm_neon_ok } */
53372 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53373 +/* { dg-options "-save-temps -O0" } */
53374 +/* { dg-add-options arm_neon } */
53375  
53376  #include "arm_neon.h"
53377  
53378 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c
53379 --- a/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c      2007-07-25 14:28:31.000000000 +0200
53380 +++ b/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c      2010-01-25 09:50:29.525687396 +0100
53381 @@ -3,7 +3,8 @@
53382  
53383  /* { dg-do assemble } */
53384  /* { dg-require-effective-target arm_neon_ok } */
53385 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53386 +/* { dg-options "-save-temps -O0" } */
53387 +/* { dg-add-options arm_neon } */
53388  
53389  #include "arm_neon.h"
53390  
53391 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c
53392 --- a/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c     2007-07-25 14:28:31.000000000 +0200
53393 +++ b/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c     2010-01-25 09:50:29.525687396 +0100
53394 @@ -3,7 +3,8 @@
53395  
53396  /* { dg-do assemble } */
53397  /* { dg-require-effective-target arm_neon_ok } */
53398 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53399 +/* { dg-options "-save-temps -O0" } */
53400 +/* { dg-add-options arm_neon } */
53401  
53402  #include "arm_neon.h"
53403  
53404 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c
53405 --- a/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c     2007-07-25 14:28:31.000000000 +0200
53406 +++ b/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c     2010-01-25 09:50:29.525687396 +0100
53407 @@ -3,7 +3,8 @@
53408  
53409  /* { dg-do assemble } */
53410  /* { dg-require-effective-target arm_neon_ok } */
53411 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53412 +/* { dg-options "-save-temps -O0" } */
53413 +/* { dg-add-options arm_neon } */
53414  
53415  #include "arm_neon.h"
53416  
53417 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c
53418 --- a/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c     2007-07-25 14:28:31.000000000 +0200
53419 +++ b/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c     2010-01-25 09:50:29.525687396 +0100
53420 @@ -3,7 +3,8 @@
53421  
53422  /* { dg-do assemble } */
53423  /* { dg-require-effective-target arm_neon_ok } */
53424 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53425 +/* { dg-options "-save-temps -O0" } */
53426 +/* { dg-add-options arm_neon } */
53427  
53428  #include "arm_neon.h"
53429  
53430 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c
53431 --- a/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c      2007-07-25 14:28:31.000000000 +0200
53432 +++ b/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c      2010-01-25 09:50:29.525687396 +0100
53433 @@ -3,7 +3,8 @@
53434  
53435  /* { dg-do assemble } */
53436  /* { dg-require-effective-target arm_neon_ok } */
53437 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53438 +/* { dg-options "-save-temps -O0" } */
53439 +/* { dg-add-options arm_neon } */
53440  
53441  #include "arm_neon.h"
53442  
53443 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c
53444 --- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c    2007-07-25 14:28:31.000000000 +0200
53445 +++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c    2010-01-25 09:50:29.525687396 +0100
53446 @@ -3,7 +3,8 @@
53447  
53448  /* { dg-do assemble } */
53449  /* { dg-require-effective-target arm_neon_ok } */
53450 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53451 +/* { dg-options "-save-temps -O0" } */
53452 +/* { dg-add-options arm_neon } */
53453  
53454  #include "arm_neon.h"
53455  
53456 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c
53457 --- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c    2007-07-25 14:28:31.000000000 +0200
53458 +++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c    2010-01-25 09:50:29.525687396 +0100
53459 @@ -3,7 +3,8 @@
53460  
53461  /* { dg-do assemble } */
53462  /* { dg-require-effective-target arm_neon_ok } */
53463 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53464 +/* { dg-options "-save-temps -O0" } */
53465 +/* { dg-add-options arm_neon } */
53466  
53467  #include "arm_neon.h"
53468  
53469 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c
53470 --- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c    2007-07-25 14:28:31.000000000 +0200
53471 +++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c    2010-01-25 09:50:29.525687396 +0100
53472 @@ -3,7 +3,8 @@
53473  
53474  /* { dg-do assemble } */
53475  /* { dg-require-effective-target arm_neon_ok } */
53476 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53477 +/* { dg-options "-save-temps -O0" } */
53478 +/* { dg-add-options arm_neon } */
53479  
53480  #include "arm_neon.h"
53481  
53482 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c
53483 --- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c     2007-07-25 14:28:31.000000000 +0200
53484 +++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c     2010-01-25 09:50:29.525687396 +0100
53485 @@ -3,7 +3,8 @@
53486  
53487  /* { dg-do assemble } */
53488  /* { dg-require-effective-target arm_neon_ok } */
53489 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53490 +/* { dg-options "-save-temps -O0" } */
53491 +/* { dg-add-options arm_neon } */
53492  
53493  #include "arm_neon.h"
53494  
53495 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c
53496 --- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c    2007-07-25 14:28:31.000000000 +0200
53497 +++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c    2010-01-25 09:50:29.525687396 +0100
53498 @@ -3,7 +3,8 @@
53499  
53500  /* { dg-do assemble } */
53501  /* { dg-require-effective-target arm_neon_ok } */
53502 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53503 +/* { dg-options "-save-temps -O0" } */
53504 +/* { dg-add-options arm_neon } */
53505  
53506  #include "arm_neon.h"
53507  
53508 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c
53509 --- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c    2007-07-25 14:28:31.000000000 +0200
53510 +++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c    2010-01-25 09:50:29.525687396 +0100
53511 @@ -3,7 +3,8 @@
53512  
53513  /* { dg-do assemble } */
53514  /* { dg-require-effective-target arm_neon_ok } */
53515 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53516 +/* { dg-options "-save-temps -O0" } */
53517 +/* { dg-add-options arm_neon } */
53518  
53519  #include "arm_neon.h"
53520  
53521 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c
53522 --- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c    2007-07-25 14:28:31.000000000 +0200
53523 +++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c    2010-01-25 09:50:29.525687396 +0100
53524 @@ -3,7 +3,8 @@
53525  
53526  /* { dg-do assemble } */
53527  /* { dg-require-effective-target arm_neon_ok } */
53528 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53529 +/* { dg-options "-save-temps -O0" } */
53530 +/* { dg-add-options arm_neon } */
53531  
53532  #include "arm_neon.h"
53533  
53534 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c
53535 --- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c     2007-07-25 14:28:31.000000000 +0200
53536 +++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c     2010-01-25 09:50:29.525687396 +0100
53537 @@ -3,7 +3,8 @@
53538  
53539  /* { dg-do assemble } */
53540  /* { dg-require-effective-target arm_neon_ok } */
53541 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53542 +/* { dg-options "-save-temps -O0" } */
53543 +/* { dg-add-options arm_neon } */
53544  
53545  #include "arm_neon.h"
53546  
53547 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c b/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c
53548 --- a/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c     2007-07-25 14:28:31.000000000 +0200
53549 +++ b/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c     2010-01-25 09:50:29.525687396 +0100
53550 @@ -3,7 +3,8 @@
53551  
53552  /* { dg-do assemble } */
53553  /* { dg-require-effective-target arm_neon_ok } */
53554 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53555 +/* { dg-options "-save-temps -O0" } */
53556 +/* { dg-add-options arm_neon } */
53557  
53558  #include "arm_neon.h"
53559  
53560 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c b/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c
53561 --- a/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c      2007-07-25 14:28:31.000000000 +0200
53562 +++ b/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c      2010-01-25 09:50:29.525687396 +0100
53563 @@ -3,7 +3,8 @@
53564  
53565  /* { dg-do assemble } */
53566  /* { dg-require-effective-target arm_neon_ok } */
53567 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53568 +/* { dg-options "-save-temps -O0" } */
53569 +/* { dg-add-options arm_neon } */
53570  
53571  #include "arm_neon.h"
53572  
53573 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c
53574 --- a/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c     2007-07-25 14:28:31.000000000 +0200
53575 +++ b/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c     2010-01-25 09:50:29.525687396 +0100
53576 @@ -3,7 +3,8 @@
53577  
53578  /* { dg-do assemble } */
53579  /* { dg-require-effective-target arm_neon_ok } */
53580 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53581 +/* { dg-options "-save-temps -O0" } */
53582 +/* { dg-add-options arm_neon } */
53583  
53584  #include "arm_neon.h"
53585  
53586 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c
53587 --- a/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c     2007-07-25 14:28:31.000000000 +0200
53588 +++ b/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c     2010-01-25 09:50:29.525687396 +0100
53589 @@ -3,7 +3,8 @@
53590  
53591  /* { dg-do assemble } */
53592  /* { dg-require-effective-target arm_neon_ok } */
53593 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53594 +/* { dg-options "-save-temps -O0" } */
53595 +/* { dg-add-options arm_neon } */
53596  
53597  #include "arm_neon.h"
53598  
53599 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c
53600 --- a/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c     2007-07-25 14:28:31.000000000 +0200
53601 +++ b/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c     2010-01-25 09:50:29.525687396 +0100
53602 @@ -3,7 +3,8 @@
53603  
53604  /* { dg-do assemble } */
53605  /* { dg-require-effective-target arm_neon_ok } */
53606 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53607 +/* { dg-options "-save-temps -O0" } */
53608 +/* { dg-add-options arm_neon } */
53609  
53610  #include "arm_neon.h"
53611  
53612 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c
53613 --- a/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c      2007-07-25 14:28:31.000000000 +0200
53614 +++ b/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c      2010-01-25 09:50:29.525687396 +0100
53615 @@ -3,7 +3,8 @@
53616  
53617  /* { dg-do assemble } */
53618  /* { dg-require-effective-target arm_neon_ok } */
53619 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53620 +/* { dg-options "-save-temps -O0" } */
53621 +/* { dg-add-options arm_neon } */
53622  
53623  #include "arm_neon.h"
53624  
53625 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c
53626 --- a/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c     2007-07-25 14:28:31.000000000 +0200
53627 +++ b/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c     2010-01-25 09:50:29.525687396 +0100
53628 @@ -3,7 +3,8 @@
53629  
53630  /* { dg-do assemble } */
53631  /* { dg-require-effective-target arm_neon_ok } */
53632 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53633 +/* { dg-options "-save-temps -O0" } */
53634 +/* { dg-add-options arm_neon } */
53635  
53636  #include "arm_neon.h"
53637  
53638 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c
53639 --- a/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c     2007-07-25 14:28:31.000000000 +0200
53640 +++ b/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c     2010-01-25 09:50:29.525687396 +0100
53641 @@ -3,7 +3,8 @@
53642  
53643  /* { dg-do assemble } */
53644  /* { dg-require-effective-target arm_neon_ok } */
53645 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53646 +/* { dg-options "-save-temps -O0" } */
53647 +/* { dg-add-options arm_neon } */
53648  
53649  #include "arm_neon.h"
53650  
53651 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c
53652 --- a/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c     2007-07-25 14:28:31.000000000 +0200
53653 +++ b/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c     2010-01-25 09:50:29.525687396 +0100
53654 @@ -3,7 +3,8 @@
53655  
53656  /* { dg-do assemble } */
53657  /* { dg-require-effective-target arm_neon_ok } */
53658 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53659 +/* { dg-options "-save-temps -O0" } */
53660 +/* { dg-add-options arm_neon } */
53661  
53662  #include "arm_neon.h"
53663  
53664 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c
53665 --- a/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c      2007-07-25 14:28:31.000000000 +0200
53666 +++ b/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c      2010-01-25 09:50:29.525687396 +0100
53667 @@ -3,7 +3,8 @@
53668  
53669  /* { dg-do assemble } */
53670  /* { dg-require-effective-target arm_neon_ok } */
53671 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53672 +/* { dg-options "-save-temps -O0" } */
53673 +/* { dg-add-options arm_neon } */
53674  
53675  #include "arm_neon.h"
53676  
53677 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c
53678 --- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c    2007-07-25 14:28:31.000000000 +0200
53679 +++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c    2010-01-25 09:50:29.525687396 +0100
53680 @@ -3,7 +3,8 @@
53681  
53682  /* { dg-do assemble } */
53683  /* { dg-require-effective-target arm_neon_ok } */
53684 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53685 +/* { dg-options "-save-temps -O0" } */
53686 +/* { dg-add-options arm_neon } */
53687  
53688  #include "arm_neon.h"
53689  
53690 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c
53691 --- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c     2007-07-25 14:28:31.000000000 +0200
53692 +++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c     2010-01-25 09:50:29.525687396 +0100
53693 @@ -3,7 +3,8 @@
53694  
53695  /* { dg-do assemble } */
53696  /* { dg-require-effective-target arm_neon_ok } */
53697 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53698 +/* { dg-options "-save-temps -O0" } */
53699 +/* { dg-add-options arm_neon } */
53700  
53701  #include "arm_neon.h"
53702  
53703 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c
53704 --- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c    2007-07-25 14:28:31.000000000 +0200
53705 +++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c    2010-01-25 09:50:29.525687396 +0100
53706 @@ -3,7 +3,8 @@
53707  
53708  /* { dg-do assemble } */
53709  /* { dg-require-effective-target arm_neon_ok } */
53710 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53711 +/* { dg-options "-save-temps -O0" } */
53712 +/* { dg-add-options arm_neon } */
53713  
53714  #include "arm_neon.h"
53715  
53716 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c
53717 --- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c    2007-07-25 14:28:31.000000000 +0200
53718 +++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c    2010-01-25 09:50:29.525687396 +0100
53719 @@ -3,7 +3,8 @@
53720  
53721  /* { dg-do assemble } */
53722  /* { dg-require-effective-target arm_neon_ok } */
53723 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53724 +/* { dg-options "-save-temps -O0" } */
53725 +/* { dg-add-options arm_neon } */
53726  
53727  #include "arm_neon.h"
53728  
53729 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c
53730 --- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c    2007-07-25 14:28:31.000000000 +0200
53731 +++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c    2010-01-25 09:50:29.525687396 +0100
53732 @@ -3,7 +3,8 @@
53733  
53734  /* { dg-do assemble } */
53735  /* { dg-require-effective-target arm_neon_ok } */
53736 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53737 +/* { dg-options "-save-temps -O0" } */
53738 +/* { dg-add-options arm_neon } */
53739  
53740  #include "arm_neon.h"
53741  
53742 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c
53743 --- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c     2007-07-25 14:28:31.000000000 +0200
53744 +++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c     2010-01-25 09:50:29.525687396 +0100
53745 @@ -3,7 +3,8 @@
53746  
53747  /* { dg-do assemble } */
53748  /* { dg-require-effective-target arm_neon_ok } */
53749 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53750 +/* { dg-options "-save-temps -O0" } */
53751 +/* { dg-add-options arm_neon } */
53752  
53753  #include "arm_neon.h"
53754  
53755 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c
53756 --- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c    2007-07-25 14:28:31.000000000 +0200
53757 +++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c    2010-01-25 09:50:29.525687396 +0100
53758 @@ -3,7 +3,8 @@
53759  
53760  /* { dg-do assemble } */
53761  /* { dg-require-effective-target arm_neon_ok } */
53762 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53763 +/* { dg-options "-save-temps -O0" } */
53764 +/* { dg-add-options arm_neon } */
53765  
53766  #include "arm_neon.h"
53767  
53768 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c
53769 --- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c    2007-07-25 14:28:31.000000000 +0200
53770 +++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c    2010-01-25 09:50:29.525687396 +0100
53771 @@ -3,7 +3,8 @@
53772  
53773  /* { dg-do assemble } */
53774  /* { dg-require-effective-target arm_neon_ok } */
53775 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53776 +/* { dg-options "-save-temps -O0" } */
53777 +/* { dg-add-options arm_neon } */
53778  
53779  #include "arm_neon.h"
53780  
53781 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c
53782 --- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c    2007-07-25 14:28:31.000000000 +0200
53783 +++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c    2010-01-25 09:50:29.525687396 +0100
53784 @@ -3,7 +3,8 @@
53785  
53786  /* { dg-do assemble } */
53787  /* { dg-require-effective-target arm_neon_ok } */
53788 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53789 +/* { dg-options "-save-temps -O0" } */
53790 +/* { dg-add-options arm_neon } */
53791  
53792  #include "arm_neon.h"
53793  
53794 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c
53795 --- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c     2007-07-25 14:28:31.000000000 +0200
53796 +++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c     2010-01-25 09:50:29.525687396 +0100
53797 @@ -3,7 +3,8 @@
53798  
53799  /* { dg-do assemble } */
53800  /* { dg-require-effective-target arm_neon_ok } */
53801 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53802 +/* { dg-options "-save-temps -O0" } */
53803 +/* { dg-add-options arm_neon } */
53804  
53805  #include "arm_neon.h"
53806  
53807 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1f32.c b/gcc/testsuite/gcc.target/arm/neon/vst1f32.c
53808 --- a/gcc/testsuite/gcc.target/arm/neon/vst1f32.c       2007-07-25 14:28:31.000000000 +0200
53809 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1f32.c       2010-01-25 09:50:29.525687396 +0100
53810 @@ -3,7 +3,8 @@
53811  
53812  /* { dg-do assemble } */
53813  /* { dg-require-effective-target arm_neon_ok } */
53814 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53815 +/* { dg-options "-save-temps -O0" } */
53816 +/* { dg-add-options arm_neon } */
53817  
53818  #include "arm_neon.h"
53819  
53820 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c
53821 --- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c  2007-07-25 14:28:31.000000000 +0200
53822 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c  2010-01-25 09:50:29.525687396 +0100
53823 @@ -3,7 +3,8 @@
53824  
53825  /* { dg-do assemble } */
53826  /* { dg-require-effective-target arm_neon_ok } */
53827 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53828 +/* { dg-options "-save-temps -O0" } */
53829 +/* { dg-add-options arm_neon } */
53830  
53831  #include "arm_neon.h"
53832  
53833 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c
53834 --- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c  2007-07-25 14:28:31.000000000 +0200
53835 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c  2010-01-25 09:50:29.525687396 +0100
53836 @@ -3,7 +3,8 @@
53837  
53838  /* { dg-do assemble } */
53839  /* { dg-require-effective-target arm_neon_ok } */
53840 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53841 +/* { dg-options "-save-temps -O0" } */
53842 +/* { dg-add-options arm_neon } */
53843  
53844  #include "arm_neon.h"
53845  
53846 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c
53847 --- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c   2007-07-25 14:28:31.000000000 +0200
53848 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c   2010-01-25 09:50:29.525687396 +0100
53849 @@ -3,7 +3,8 @@
53850  
53851  /* { dg-do assemble } */
53852  /* { dg-require-effective-target arm_neon_ok } */
53853 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53854 +/* { dg-options "-save-temps -O0" } */
53855 +/* { dg-add-options arm_neon } */
53856  
53857  #include "arm_neon.h"
53858  
53859 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c
53860 --- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c  2007-07-25 14:28:31.000000000 +0200
53861 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c  2010-01-25 09:50:29.525687396 +0100
53862 @@ -3,7 +3,8 @@
53863  
53864  /* { dg-do assemble } */
53865  /* { dg-require-effective-target arm_neon_ok } */
53866 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53867 +/* { dg-options "-save-temps -O0" } */
53868 +/* { dg-add-options arm_neon } */
53869  
53870  #include "arm_neon.h"
53871  
53872 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c
53873 --- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c  2007-07-25 14:28:31.000000000 +0200
53874 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c  2010-01-25 09:50:29.525687396 +0100
53875 @@ -3,7 +3,8 @@
53876  
53877  /* { dg-do assemble } */
53878  /* { dg-require-effective-target arm_neon_ok } */
53879 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53880 +/* { dg-options "-save-temps -O0" } */
53881 +/* { dg-add-options arm_neon } */
53882  
53883  #include "arm_neon.h"
53884  
53885 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c
53886 --- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c  2007-07-25 14:28:31.000000000 +0200
53887 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c  2010-01-25 09:50:29.535686781 +0100
53888 @@ -3,7 +3,8 @@
53889  
53890  /* { dg-do assemble } */
53891  /* { dg-require-effective-target arm_neon_ok } */
53892 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53893 +/* { dg-options "-save-temps -O0" } */
53894 +/* { dg-add-options arm_neon } */
53895  
53896  #include "arm_neon.h"
53897  
53898 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c
53899 --- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c   2007-07-25 14:28:31.000000000 +0200
53900 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c   2010-01-25 09:50:29.535686781 +0100
53901 @@ -3,7 +3,8 @@
53902  
53903  /* { dg-do assemble } */
53904  /* { dg-require-effective-target arm_neon_ok } */
53905 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53906 +/* { dg-options "-save-temps -O0" } */
53907 +/* { dg-add-options arm_neon } */
53908  
53909  #include "arm_neon.h"
53910  
53911 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c
53912 --- a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c  2007-07-25 14:28:31.000000000 +0200
53913 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c  2010-01-25 09:50:29.535686781 +0100
53914 @@ -3,7 +3,8 @@
53915  
53916  /* { dg-do assemble } */
53917  /* { dg-require-effective-target arm_neon_ok } */
53918 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53919 +/* { dg-options "-save-temps -O0" } */
53920 +/* { dg-add-options arm_neon } */
53921  
53922  #include "arm_neon.h"
53923  
53924 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c
53925 --- a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c  2007-07-25 14:28:31.000000000 +0200
53926 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c  2010-01-25 09:50:29.535686781 +0100
53927 @@ -3,7 +3,8 @@
53928  
53929  /* { dg-do assemble } */
53930  /* { dg-require-effective-target arm_neon_ok } */
53931 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53932 +/* { dg-options "-save-temps -O0" } */
53933 +/* { dg-add-options arm_neon } */
53934  
53935  #include "arm_neon.h"
53936  
53937 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c
53938 --- a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c  2007-07-25 14:28:31.000000000 +0200
53939 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c  2010-01-25 09:50:29.535686781 +0100
53940 @@ -3,7 +3,8 @@
53941  
53942  /* { dg-do assemble } */
53943  /* { dg-require-effective-target arm_neon_ok } */
53944 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53945 +/* { dg-options "-save-temps -O0" } */
53946 +/* { dg-add-options arm_neon } */
53947  
53948  #include "arm_neon.h"
53949  
53950 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c
53951 --- a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c   2007-07-25 14:28:31.000000000 +0200
53952 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c   2010-01-25 09:50:29.535686781 +0100
53953 @@ -3,7 +3,8 @@
53954  
53955  /* { dg-do assemble } */
53956  /* { dg-require-effective-target arm_neon_ok } */
53957 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53958 +/* { dg-options "-save-temps -O0" } */
53959 +/* { dg-add-options arm_neon } */
53960  
53961  #include "arm_neon.h"
53962  
53963 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1p16.c b/gcc/testsuite/gcc.target/arm/neon/vst1p16.c
53964 --- a/gcc/testsuite/gcc.target/arm/neon/vst1p16.c       2007-07-25 14:28:31.000000000 +0200
53965 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1p16.c       2010-01-25 09:50:29.535686781 +0100
53966 @@ -3,7 +3,8 @@
53967  
53968  /* { dg-do assemble } */
53969  /* { dg-require-effective-target arm_neon_ok } */
53970 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53971 +/* { dg-options "-save-temps -O0" } */
53972 +/* { dg-add-options arm_neon } */
53973  
53974  #include "arm_neon.h"
53975  
53976 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1p8.c b/gcc/testsuite/gcc.target/arm/neon/vst1p8.c
53977 --- a/gcc/testsuite/gcc.target/arm/neon/vst1p8.c        2007-07-25 14:28:31.000000000 +0200
53978 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1p8.c        2010-01-25 09:50:29.535686781 +0100
53979 @@ -3,7 +3,8 @@
53980  
53981  /* { dg-do assemble } */
53982  /* { dg-require-effective-target arm_neon_ok } */
53983 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53984 +/* { dg-options "-save-temps -O0" } */
53985 +/* { dg-add-options arm_neon } */
53986  
53987  #include "arm_neon.h"
53988  
53989 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c
53990 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c      2007-07-25 14:28:31.000000000 +0200
53991 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c      2010-01-25 09:50:29.535686781 +0100
53992 @@ -3,7 +3,8 @@
53993  
53994  /* { dg-do assemble } */
53995  /* { dg-require-effective-target arm_neon_ok } */
53996 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
53997 +/* { dg-options "-save-temps -O0" } */
53998 +/* { dg-add-options arm_neon } */
53999  
54000  #include "arm_neon.h"
54001  
54002 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c
54003 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c 2007-07-25 14:28:31.000000000 +0200
54004 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c 2010-01-25 09:50:29.535686781 +0100
54005 @@ -3,7 +3,8 @@
54006  
54007  /* { dg-do assemble } */
54008  /* { dg-require-effective-target arm_neon_ok } */
54009 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54010 +/* { dg-options "-save-temps -O0" } */
54011 +/* { dg-add-options arm_neon } */
54012  
54013  #include "arm_neon.h"
54014  
54015 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c
54016 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c 2007-07-25 14:28:31.000000000 +0200
54017 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c 2010-01-25 09:50:29.535686781 +0100
54018 @@ -3,7 +3,8 @@
54019  
54020  /* { dg-do assemble } */
54021  /* { dg-require-effective-target arm_neon_ok } */
54022 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54023 +/* { dg-options "-save-temps -O0" } */
54024 +/* { dg-add-options arm_neon } */
54025  
54026  #include "arm_neon.h"
54027  
54028 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c
54029 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c  2007-07-25 14:28:31.000000000 +0200
54030 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c  2010-01-25 09:50:29.535686781 +0100
54031 @@ -3,7 +3,8 @@
54032  
54033  /* { dg-do assemble } */
54034  /* { dg-require-effective-target arm_neon_ok } */
54035 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54036 +/* { dg-options "-save-temps -O0" } */
54037 +/* { dg-add-options arm_neon } */
54038  
54039  #include "arm_neon.h"
54040  
54041 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c
54042 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c 2007-07-25 14:28:31.000000000 +0200
54043 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c 2010-01-25 09:50:29.535686781 +0100
54044 @@ -3,7 +3,8 @@
54045  
54046  /* { dg-do assemble } */
54047  /* { dg-require-effective-target arm_neon_ok } */
54048 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54049 +/* { dg-options "-save-temps -O0" } */
54050 +/* { dg-add-options arm_neon } */
54051  
54052  #include "arm_neon.h"
54053  
54054 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c
54055 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c 2007-07-25 14:28:31.000000000 +0200
54056 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c 2010-01-25 09:50:29.535686781 +0100
54057 @@ -3,7 +3,8 @@
54058  
54059  /* { dg-do assemble } */
54060  /* { dg-require-effective-target arm_neon_ok } */
54061 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54062 +/* { dg-options "-save-temps -O0" } */
54063 +/* { dg-add-options arm_neon } */
54064  
54065  #include "arm_neon.h"
54066  
54067 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c
54068 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c 2007-07-25 14:28:31.000000000 +0200
54069 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c 2010-01-25 09:50:29.535686781 +0100
54070 @@ -3,7 +3,8 @@
54071  
54072  /* { dg-do assemble } */
54073  /* { dg-require-effective-target arm_neon_ok } */
54074 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54075 +/* { dg-options "-save-temps -O0" } */
54076 +/* { dg-add-options arm_neon } */
54077  
54078  #include "arm_neon.h"
54079  
54080 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c
54081 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c  2007-07-25 14:28:31.000000000 +0200
54082 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c  2010-01-25 09:50:29.535686781 +0100
54083 @@ -3,7 +3,8 @@
54084  
54085  /* { dg-do assemble } */
54086  /* { dg-require-effective-target arm_neon_ok } */
54087 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54088 +/* { dg-options "-save-temps -O0" } */
54089 +/* { dg-add-options arm_neon } */
54090  
54091  #include "arm_neon.h"
54092  
54093 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c
54094 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c 2007-07-25 14:28:31.000000000 +0200
54095 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c 2010-01-25 09:50:29.535686781 +0100
54096 @@ -3,7 +3,8 @@
54097  
54098  /* { dg-do assemble } */
54099  /* { dg-require-effective-target arm_neon_ok } */
54100 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54101 +/* { dg-options "-save-temps -O0" } */
54102 +/* { dg-add-options arm_neon } */
54103  
54104  #include "arm_neon.h"
54105  
54106 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c
54107 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c 2007-07-25 14:28:31.000000000 +0200
54108 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c 2010-01-25 09:50:29.535686781 +0100
54109 @@ -3,7 +3,8 @@
54110  
54111  /* { dg-do assemble } */
54112  /* { dg-require-effective-target arm_neon_ok } */
54113 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54114 +/* { dg-options "-save-temps -O0" } */
54115 +/* { dg-add-options arm_neon } */
54116  
54117  #include "arm_neon.h"
54118  
54119 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c
54120 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c 2007-07-25 14:28:31.000000000 +0200
54121 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c 2010-01-25 09:50:29.535686781 +0100
54122 @@ -3,7 +3,8 @@
54123  
54124  /* { dg-do assemble } */
54125  /* { dg-require-effective-target arm_neon_ok } */
54126 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54127 +/* { dg-options "-save-temps -O0" } */
54128 +/* { dg-add-options arm_neon } */
54129  
54130  #include "arm_neon.h"
54131  
54132 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c
54133 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c  2007-07-25 14:28:31.000000000 +0200
54134 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c  2010-01-25 09:50:29.535686781 +0100
54135 @@ -3,7 +3,8 @@
54136  
54137  /* { dg-do assemble } */
54138  /* { dg-require-effective-target arm_neon_ok } */
54139 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54140 +/* { dg-options "-save-temps -O0" } */
54141 +/* { dg-add-options arm_neon } */
54142  
54143  #include "arm_neon.h"
54144  
54145 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c
54146 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c      2007-07-25 14:28:31.000000000 +0200
54147 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c      2010-01-25 09:50:29.535686781 +0100
54148 @@ -3,7 +3,8 @@
54149  
54150  /* { dg-do assemble } */
54151  /* { dg-require-effective-target arm_neon_ok } */
54152 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54153 +/* { dg-options "-save-temps -O0" } */
54154 +/* { dg-add-options arm_neon } */
54155  
54156  #include "arm_neon.h"
54157  
54158 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c
54159 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c       2007-07-25 14:28:31.000000000 +0200
54160 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c       2010-01-25 09:50:29.535686781 +0100
54161 @@ -3,7 +3,8 @@
54162  
54163  /* { dg-do assemble } */
54164  /* { dg-require-effective-target arm_neon_ok } */
54165 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54166 +/* { dg-options "-save-temps -O0" } */
54167 +/* { dg-add-options arm_neon } */
54168  
54169  #include "arm_neon.h"
54170  
54171 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c
54172 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c      2007-07-25 14:28:31.000000000 +0200
54173 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c      2010-01-25 09:50:29.535686781 +0100
54174 @@ -3,7 +3,8 @@
54175  
54176  /* { dg-do assemble } */
54177  /* { dg-require-effective-target arm_neon_ok } */
54178 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54179 +/* { dg-options "-save-temps -O0" } */
54180 +/* { dg-add-options arm_neon } */
54181  
54182  #include "arm_neon.h"
54183  
54184 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c
54185 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c      2007-07-25 14:28:31.000000000 +0200
54186 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c      2010-01-25 09:50:29.535686781 +0100
54187 @@ -3,7 +3,8 @@
54188  
54189  /* { dg-do assemble } */
54190  /* { dg-require-effective-target arm_neon_ok } */
54191 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54192 +/* { dg-options "-save-temps -O0" } */
54193 +/* { dg-add-options arm_neon } */
54194  
54195  #include "arm_neon.h"
54196  
54197 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c
54198 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c      2007-07-25 14:28:31.000000000 +0200
54199 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c      2010-01-25 09:50:29.535686781 +0100
54200 @@ -3,7 +3,8 @@
54201  
54202  /* { dg-do assemble } */
54203  /* { dg-require-effective-target arm_neon_ok } */
54204 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54205 +/* { dg-options "-save-temps -O0" } */
54206 +/* { dg-add-options arm_neon } */
54207  
54208  #include "arm_neon.h"
54209  
54210 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c
54211 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c       2007-07-25 14:28:31.000000000 +0200
54212 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c       2010-01-25 09:50:29.535686781 +0100
54213 @@ -3,7 +3,8 @@
54214  
54215  /* { dg-do assemble } */
54216  /* { dg-require-effective-target arm_neon_ok } */
54217 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54218 +/* { dg-options "-save-temps -O0" } */
54219 +/* { dg-add-options arm_neon } */
54220  
54221  #include "arm_neon.h"
54222  
54223 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c
54224 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c      2007-07-25 14:28:31.000000000 +0200
54225 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c      2010-01-25 09:50:29.535686781 +0100
54226 @@ -3,7 +3,8 @@
54227  
54228  /* { dg-do assemble } */
54229  /* { dg-require-effective-target arm_neon_ok } */
54230 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54231 +/* { dg-options "-save-temps -O0" } */
54232 +/* { dg-add-options arm_neon } */
54233  
54234  #include "arm_neon.h"
54235  
54236 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c
54237 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c      2007-07-25 14:28:31.000000000 +0200
54238 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c      2010-01-25 09:50:29.535686781 +0100
54239 @@ -3,7 +3,8 @@
54240  
54241  /* { dg-do assemble } */
54242  /* { dg-require-effective-target arm_neon_ok } */
54243 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54244 +/* { dg-options "-save-temps -O0" } */
54245 +/* { dg-add-options arm_neon } */
54246  
54247  #include "arm_neon.h"
54248  
54249 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c
54250 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c      2007-07-25 14:28:31.000000000 +0200
54251 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c      2010-01-25 09:50:29.535686781 +0100
54252 @@ -3,7 +3,8 @@
54253  
54254  /* { dg-do assemble } */
54255  /* { dg-require-effective-target arm_neon_ok } */
54256 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54257 +/* { dg-options "-save-temps -O0" } */
54258 +/* { dg-add-options arm_neon } */
54259  
54260  #include "arm_neon.h"
54261  
54262 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c
54263 --- a/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c       2007-07-25 14:28:31.000000000 +0200
54264 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c       2010-01-25 09:50:29.535686781 +0100
54265 @@ -3,7 +3,8 @@
54266  
54267  /* { dg-do assemble } */
54268  /* { dg-require-effective-target arm_neon_ok } */
54269 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54270 +/* { dg-options "-save-temps -O0" } */
54271 +/* { dg-add-options arm_neon } */
54272  
54273  #include "arm_neon.h"
54274  
54275 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1s16.c b/gcc/testsuite/gcc.target/arm/neon/vst1s16.c
54276 --- a/gcc/testsuite/gcc.target/arm/neon/vst1s16.c       2007-07-25 14:28:31.000000000 +0200
54277 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1s16.c       2010-01-25 09:50:29.535686781 +0100
54278 @@ -3,7 +3,8 @@
54279  
54280  /* { dg-do assemble } */
54281  /* { dg-require-effective-target arm_neon_ok } */
54282 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54283 +/* { dg-options "-save-temps -O0" } */
54284 +/* { dg-add-options arm_neon } */
54285  
54286  #include "arm_neon.h"
54287  
54288 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1s32.c b/gcc/testsuite/gcc.target/arm/neon/vst1s32.c
54289 --- a/gcc/testsuite/gcc.target/arm/neon/vst1s32.c       2007-07-25 14:28:31.000000000 +0200
54290 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1s32.c       2010-01-25 09:50:29.535686781 +0100
54291 @@ -3,7 +3,8 @@
54292  
54293  /* { dg-do assemble } */
54294  /* { dg-require-effective-target arm_neon_ok } */
54295 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54296 +/* { dg-options "-save-temps -O0" } */
54297 +/* { dg-add-options arm_neon } */
54298  
54299  #include "arm_neon.h"
54300  
54301 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1s64.c b/gcc/testsuite/gcc.target/arm/neon/vst1s64.c
54302 --- a/gcc/testsuite/gcc.target/arm/neon/vst1s64.c       2007-07-25 14:28:31.000000000 +0200
54303 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1s64.c       2010-01-25 09:50:29.535686781 +0100
54304 @@ -3,7 +3,8 @@
54305  
54306  /* { dg-do assemble } */
54307  /* { dg-require-effective-target arm_neon_ok } */
54308 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54309 +/* { dg-options "-save-temps -O0" } */
54310 +/* { dg-add-options arm_neon } */
54311  
54312  #include "arm_neon.h"
54313  
54314 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1s8.c b/gcc/testsuite/gcc.target/arm/neon/vst1s8.c
54315 --- a/gcc/testsuite/gcc.target/arm/neon/vst1s8.c        2007-07-25 14:28:31.000000000 +0200
54316 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1s8.c        2010-01-25 09:50:29.535686781 +0100
54317 @@ -3,7 +3,8 @@
54318  
54319  /* { dg-do assemble } */
54320  /* { dg-require-effective-target arm_neon_ok } */
54321 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54322 +/* { dg-options "-save-temps -O0" } */
54323 +/* { dg-add-options arm_neon } */
54324  
54325  #include "arm_neon.h"
54326  
54327 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1u16.c b/gcc/testsuite/gcc.target/arm/neon/vst1u16.c
54328 --- a/gcc/testsuite/gcc.target/arm/neon/vst1u16.c       2007-07-25 14:28:31.000000000 +0200
54329 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1u16.c       2010-01-25 09:50:29.535686781 +0100
54330 @@ -3,7 +3,8 @@
54331  
54332  /* { dg-do assemble } */
54333  /* { dg-require-effective-target arm_neon_ok } */
54334 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54335 +/* { dg-options "-save-temps -O0" } */
54336 +/* { dg-add-options arm_neon } */
54337  
54338  #include "arm_neon.h"
54339  
54340 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1u32.c b/gcc/testsuite/gcc.target/arm/neon/vst1u32.c
54341 --- a/gcc/testsuite/gcc.target/arm/neon/vst1u32.c       2007-07-25 14:28:31.000000000 +0200
54342 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1u32.c       2010-01-25 09:50:29.535686781 +0100
54343 @@ -3,7 +3,8 @@
54344  
54345  /* { dg-do assemble } */
54346  /* { dg-require-effective-target arm_neon_ok } */
54347 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54348 +/* { dg-options "-save-temps -O0" } */
54349 +/* { dg-add-options arm_neon } */
54350  
54351  #include "arm_neon.h"
54352  
54353 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1u64.c b/gcc/testsuite/gcc.target/arm/neon/vst1u64.c
54354 --- a/gcc/testsuite/gcc.target/arm/neon/vst1u64.c       2007-07-25 14:28:31.000000000 +0200
54355 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1u64.c       2010-01-25 09:50:29.535686781 +0100
54356 @@ -3,7 +3,8 @@
54357  
54358  /* { dg-do assemble } */
54359  /* { dg-require-effective-target arm_neon_ok } */
54360 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54361 +/* { dg-options "-save-temps -O0" } */
54362 +/* { dg-add-options arm_neon } */
54363  
54364  #include "arm_neon.h"
54365  
54366 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1u8.c b/gcc/testsuite/gcc.target/arm/neon/vst1u8.c
54367 --- a/gcc/testsuite/gcc.target/arm/neon/vst1u8.c        2007-07-25 14:28:31.000000000 +0200
54368 +++ b/gcc/testsuite/gcc.target/arm/neon/vst1u8.c        2010-01-25 09:50:29.535686781 +0100
54369 @@ -3,7 +3,8 @@
54370  
54371  /* { dg-do assemble } */
54372  /* { dg-require-effective-target arm_neon_ok } */
54373 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54374 +/* { dg-options "-save-temps -O0" } */
54375 +/* { dg-add-options arm_neon } */
54376  
54377  #include "arm_neon.h"
54378  
54379 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2f32.c b/gcc/testsuite/gcc.target/arm/neon/vst2f32.c
54380 --- a/gcc/testsuite/gcc.target/arm/neon/vst2f32.c       2007-07-25 14:28:31.000000000 +0200
54381 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2f32.c       2010-01-25 09:50:29.535686781 +0100
54382 @@ -3,7 +3,8 @@
54383  
54384  /* { dg-do assemble } */
54385  /* { dg-require-effective-target arm_neon_ok } */
54386 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54387 +/* { dg-options "-save-temps -O0" } */
54388 +/* { dg-add-options arm_neon } */
54389  
54390  #include "arm_neon.h"
54391  
54392 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c
54393 --- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c  2007-07-25 14:28:31.000000000 +0200
54394 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c  2010-01-25 09:50:29.535686781 +0100
54395 @@ -3,7 +3,8 @@
54396  
54397  /* { dg-do assemble } */
54398  /* { dg-require-effective-target arm_neon_ok } */
54399 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54400 +/* { dg-options "-save-temps -O0" } */
54401 +/* { dg-add-options arm_neon } */
54402  
54403  #include "arm_neon.h"
54404  
54405 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c
54406 --- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c  2007-07-25 14:28:31.000000000 +0200
54407 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c  2010-01-25 09:50:29.535686781 +0100
54408 @@ -3,7 +3,8 @@
54409  
54410  /* { dg-do assemble } */
54411  /* { dg-require-effective-target arm_neon_ok } */
54412 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54413 +/* { dg-options "-save-temps -O0" } */
54414 +/* { dg-add-options arm_neon } */
54415  
54416  #include "arm_neon.h"
54417  
54418 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c
54419 --- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c   2007-07-25 14:28:31.000000000 +0200
54420 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c   2010-01-25 09:50:29.535686781 +0100
54421 @@ -3,7 +3,8 @@
54422  
54423  /* { dg-do assemble } */
54424  /* { dg-require-effective-target arm_neon_ok } */
54425 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54426 +/* { dg-options "-save-temps -O0" } */
54427 +/* { dg-add-options arm_neon } */
54428  
54429  #include "arm_neon.h"
54430  
54431 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c
54432 --- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c  2007-07-25 14:28:31.000000000 +0200
54433 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c  2010-01-25 09:50:29.535686781 +0100
54434 @@ -3,7 +3,8 @@
54435  
54436  /* { dg-do assemble } */
54437  /* { dg-require-effective-target arm_neon_ok } */
54438 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54439 +/* { dg-options "-save-temps -O0" } */
54440 +/* { dg-add-options arm_neon } */
54441  
54442  #include "arm_neon.h"
54443  
54444 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c
54445 --- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c  2007-07-25 14:28:31.000000000 +0200
54446 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c  2010-01-25 09:50:29.535686781 +0100
54447 @@ -3,7 +3,8 @@
54448  
54449  /* { dg-do assemble } */
54450  /* { dg-require-effective-target arm_neon_ok } */
54451 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54452 +/* { dg-options "-save-temps -O0" } */
54453 +/* { dg-add-options arm_neon } */
54454  
54455  #include "arm_neon.h"
54456  
54457 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c
54458 --- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c   2007-07-25 14:28:31.000000000 +0200
54459 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c   2010-01-25 09:50:29.535686781 +0100
54460 @@ -3,7 +3,8 @@
54461  
54462  /* { dg-do assemble } */
54463  /* { dg-require-effective-target arm_neon_ok } */
54464 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54465 +/* { dg-options "-save-temps -O0" } */
54466 +/* { dg-add-options arm_neon } */
54467  
54468  #include "arm_neon.h"
54469  
54470 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c
54471 --- a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c  2007-07-25 14:28:31.000000000 +0200
54472 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c  2010-01-25 09:50:29.535686781 +0100
54473 @@ -3,7 +3,8 @@
54474  
54475  /* { dg-do assemble } */
54476  /* { dg-require-effective-target arm_neon_ok } */
54477 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54478 +/* { dg-options "-save-temps -O0" } */
54479 +/* { dg-add-options arm_neon } */
54480  
54481  #include "arm_neon.h"
54482  
54483 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c
54484 --- a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c  2007-07-25 14:28:31.000000000 +0200
54485 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c  2010-01-25 09:50:29.535686781 +0100
54486 @@ -3,7 +3,8 @@
54487  
54488  /* { dg-do assemble } */
54489  /* { dg-require-effective-target arm_neon_ok } */
54490 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54491 +/* { dg-options "-save-temps -O0" } */
54492 +/* { dg-add-options arm_neon } */
54493  
54494  #include "arm_neon.h"
54495  
54496 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c
54497 --- a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c   2007-07-25 14:28:31.000000000 +0200
54498 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c   2010-01-25 09:50:29.535686781 +0100
54499 @@ -3,7 +3,8 @@
54500  
54501  /* { dg-do assemble } */
54502  /* { dg-require-effective-target arm_neon_ok } */
54503 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54504 +/* { dg-options "-save-temps -O0" } */
54505 +/* { dg-add-options arm_neon } */
54506  
54507  #include "arm_neon.h"
54508  
54509 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2p16.c b/gcc/testsuite/gcc.target/arm/neon/vst2p16.c
54510 --- a/gcc/testsuite/gcc.target/arm/neon/vst2p16.c       2007-07-25 14:28:31.000000000 +0200
54511 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2p16.c       2010-01-25 09:50:29.535686781 +0100
54512 @@ -3,7 +3,8 @@
54513  
54514  /* { dg-do assemble } */
54515  /* { dg-require-effective-target arm_neon_ok } */
54516 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54517 +/* { dg-options "-save-temps -O0" } */
54518 +/* { dg-add-options arm_neon } */
54519  
54520  #include "arm_neon.h"
54521  
54522 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2p8.c b/gcc/testsuite/gcc.target/arm/neon/vst2p8.c
54523 --- a/gcc/testsuite/gcc.target/arm/neon/vst2p8.c        2007-07-25 14:28:31.000000000 +0200
54524 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2p8.c        2010-01-25 09:50:29.535686781 +0100
54525 @@ -3,7 +3,8 @@
54526  
54527  /* { dg-do assemble } */
54528  /* { dg-require-effective-target arm_neon_ok } */
54529 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54530 +/* { dg-options "-save-temps -O0" } */
54531 +/* { dg-add-options arm_neon } */
54532  
54533  #include "arm_neon.h"
54534  
54535 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c
54536 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c      2007-07-25 14:28:31.000000000 +0200
54537 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c      2010-01-25 09:50:29.535686781 +0100
54538 @@ -3,7 +3,8 @@
54539  
54540  /* { dg-do assemble } */
54541  /* { dg-require-effective-target arm_neon_ok } */
54542 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54543 +/* { dg-options "-save-temps -O0" } */
54544 +/* { dg-add-options arm_neon } */
54545  
54546  #include "arm_neon.h"
54547  
54548 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c
54549 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c 2007-07-25 14:28:31.000000000 +0200
54550 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c 2010-01-25 09:50:29.535686781 +0100
54551 @@ -3,7 +3,8 @@
54552  
54553  /* { dg-do assemble } */
54554  /* { dg-require-effective-target arm_neon_ok } */
54555 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54556 +/* { dg-options "-save-temps -O0" } */
54557 +/* { dg-add-options arm_neon } */
54558  
54559  #include "arm_neon.h"
54560  
54561 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c
54562 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c 2007-07-25 14:28:31.000000000 +0200
54563 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c 2010-01-25 09:50:29.535686781 +0100
54564 @@ -3,7 +3,8 @@
54565  
54566  /* { dg-do assemble } */
54567  /* { dg-require-effective-target arm_neon_ok } */
54568 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54569 +/* { dg-options "-save-temps -O0" } */
54570 +/* { dg-add-options arm_neon } */
54571  
54572  #include "arm_neon.h"
54573  
54574 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c
54575 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c 2007-07-25 14:28:31.000000000 +0200
54576 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c 2010-01-25 09:50:29.535686781 +0100
54577 @@ -3,7 +3,8 @@
54578  
54579  /* { dg-do assemble } */
54580  /* { dg-require-effective-target arm_neon_ok } */
54581 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54582 +/* { dg-options "-save-temps -O0" } */
54583 +/* { dg-add-options arm_neon } */
54584  
54585  #include "arm_neon.h"
54586  
54587 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c
54588 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c 2007-07-25 14:28:31.000000000 +0200
54589 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c 2010-01-25 09:50:29.535686781 +0100
54590 @@ -3,7 +3,8 @@
54591  
54592  /* { dg-do assemble } */
54593  /* { dg-require-effective-target arm_neon_ok } */
54594 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54595 +/* { dg-options "-save-temps -O0" } */
54596 +/* { dg-add-options arm_neon } */
54597  
54598  #include "arm_neon.h"
54599  
54600 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c
54601 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c 2007-07-25 14:28:31.000000000 +0200
54602 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c 2010-01-25 09:50:29.535686781 +0100
54603 @@ -3,7 +3,8 @@
54604  
54605  /* { dg-do assemble } */
54606  /* { dg-require-effective-target arm_neon_ok } */
54607 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54608 +/* { dg-options "-save-temps -O0" } */
54609 +/* { dg-add-options arm_neon } */
54610  
54611  #include "arm_neon.h"
54612  
54613 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c
54614 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c 2007-07-25 14:28:31.000000000 +0200
54615 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c 2010-01-25 09:50:29.535686781 +0100
54616 @@ -3,7 +3,8 @@
54617  
54618  /* { dg-do assemble } */
54619  /* { dg-require-effective-target arm_neon_ok } */
54620 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54621 +/* { dg-options "-save-temps -O0" } */
54622 +/* { dg-add-options arm_neon } */
54623  
54624  #include "arm_neon.h"
54625  
54626 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c
54627 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c      2007-07-25 14:28:31.000000000 +0200
54628 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c      2010-01-25 09:50:29.535686781 +0100
54629 @@ -3,7 +3,8 @@
54630  
54631  /* { dg-do assemble } */
54632  /* { dg-require-effective-target arm_neon_ok } */
54633 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54634 +/* { dg-options "-save-temps -O0" } */
54635 +/* { dg-add-options arm_neon } */
54636  
54637  #include "arm_neon.h"
54638  
54639 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c
54640 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c       2007-07-25 14:28:31.000000000 +0200
54641 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c       2010-01-25 09:50:29.535686781 +0100
54642 @@ -3,7 +3,8 @@
54643  
54644  /* { dg-do assemble } */
54645  /* { dg-require-effective-target arm_neon_ok } */
54646 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54647 +/* { dg-options "-save-temps -O0" } */
54648 +/* { dg-add-options arm_neon } */
54649  
54650  #include "arm_neon.h"
54651  
54652 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c
54653 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c      2007-07-25 14:28:31.000000000 +0200
54654 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c      2010-01-25 09:50:29.535686781 +0100
54655 @@ -3,7 +3,8 @@
54656  
54657  /* { dg-do assemble } */
54658  /* { dg-require-effective-target arm_neon_ok } */
54659 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54660 +/* { dg-options "-save-temps -O0" } */
54661 +/* { dg-add-options arm_neon } */
54662  
54663  #include "arm_neon.h"
54664  
54665 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c
54666 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c      2007-07-25 14:28:31.000000000 +0200
54667 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c      2010-01-25 09:50:29.535686781 +0100
54668 @@ -3,7 +3,8 @@
54669  
54670  /* { dg-do assemble } */
54671  /* { dg-require-effective-target arm_neon_ok } */
54672 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54673 +/* { dg-options "-save-temps -O0" } */
54674 +/* { dg-add-options arm_neon } */
54675  
54676  #include "arm_neon.h"
54677  
54678 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c
54679 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c       2007-07-25 14:28:31.000000000 +0200
54680 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c       2010-01-25 09:50:29.535686781 +0100
54681 @@ -3,7 +3,8 @@
54682  
54683  /* { dg-do assemble } */
54684  /* { dg-require-effective-target arm_neon_ok } */
54685 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54686 +/* { dg-options "-save-temps -O0" } */
54687 +/* { dg-add-options arm_neon } */
54688  
54689  #include "arm_neon.h"
54690  
54691 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c
54692 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c      2007-07-25 14:28:31.000000000 +0200
54693 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c      2010-01-25 09:50:29.535686781 +0100
54694 @@ -3,7 +3,8 @@
54695  
54696  /* { dg-do assemble } */
54697  /* { dg-require-effective-target arm_neon_ok } */
54698 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54699 +/* { dg-options "-save-temps -O0" } */
54700 +/* { dg-add-options arm_neon } */
54701  
54702  #include "arm_neon.h"
54703  
54704 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c
54705 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c      2007-07-25 14:28:31.000000000 +0200
54706 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c      2010-01-25 09:50:29.535686781 +0100
54707 @@ -3,7 +3,8 @@
54708  
54709  /* { dg-do assemble } */
54710  /* { dg-require-effective-target arm_neon_ok } */
54711 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54712 +/* { dg-options "-save-temps -O0" } */
54713 +/* { dg-add-options arm_neon } */
54714  
54715  #include "arm_neon.h"
54716  
54717 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c
54718 --- a/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c       2007-07-25 14:28:31.000000000 +0200
54719 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c       2010-01-25 09:50:29.535686781 +0100
54720 @@ -3,7 +3,8 @@
54721  
54722  /* { dg-do assemble } */
54723  /* { dg-require-effective-target arm_neon_ok } */
54724 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54725 +/* { dg-options "-save-temps -O0" } */
54726 +/* { dg-add-options arm_neon } */
54727  
54728  #include "arm_neon.h"
54729  
54730 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2s16.c b/gcc/testsuite/gcc.target/arm/neon/vst2s16.c
54731 --- a/gcc/testsuite/gcc.target/arm/neon/vst2s16.c       2007-07-25 14:28:31.000000000 +0200
54732 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2s16.c       2010-01-25 09:50:29.535686781 +0100
54733 @@ -3,7 +3,8 @@
54734  
54735  /* { dg-do assemble } */
54736  /* { dg-require-effective-target arm_neon_ok } */
54737 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54738 +/* { dg-options "-save-temps -O0" } */
54739 +/* { dg-add-options arm_neon } */
54740  
54741  #include "arm_neon.h"
54742  
54743 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2s32.c b/gcc/testsuite/gcc.target/arm/neon/vst2s32.c
54744 --- a/gcc/testsuite/gcc.target/arm/neon/vst2s32.c       2007-07-25 14:28:31.000000000 +0200
54745 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2s32.c       2010-01-25 09:50:29.535686781 +0100
54746 @@ -3,7 +3,8 @@
54747  
54748  /* { dg-do assemble } */
54749  /* { dg-require-effective-target arm_neon_ok } */
54750 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54751 +/* { dg-options "-save-temps -O0" } */
54752 +/* { dg-add-options arm_neon } */
54753  
54754  #include "arm_neon.h"
54755  
54756 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2s64.c b/gcc/testsuite/gcc.target/arm/neon/vst2s64.c
54757 --- a/gcc/testsuite/gcc.target/arm/neon/vst2s64.c       2007-07-25 14:28:31.000000000 +0200
54758 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2s64.c       2010-01-25 09:50:29.535686781 +0100
54759 @@ -3,7 +3,8 @@
54760  
54761  /* { dg-do assemble } */
54762  /* { dg-require-effective-target arm_neon_ok } */
54763 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54764 +/* { dg-options "-save-temps -O0" } */
54765 +/* { dg-add-options arm_neon } */
54766  
54767  #include "arm_neon.h"
54768  
54769 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2s8.c b/gcc/testsuite/gcc.target/arm/neon/vst2s8.c
54770 --- a/gcc/testsuite/gcc.target/arm/neon/vst2s8.c        2007-07-25 14:28:31.000000000 +0200
54771 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2s8.c        2010-01-25 09:50:29.535686781 +0100
54772 @@ -3,7 +3,8 @@
54773  
54774  /* { dg-do assemble } */
54775  /* { dg-require-effective-target arm_neon_ok } */
54776 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54777 +/* { dg-options "-save-temps -O0" } */
54778 +/* { dg-add-options arm_neon } */
54779  
54780  #include "arm_neon.h"
54781  
54782 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2u16.c b/gcc/testsuite/gcc.target/arm/neon/vst2u16.c
54783 --- a/gcc/testsuite/gcc.target/arm/neon/vst2u16.c       2007-07-25 14:28:31.000000000 +0200
54784 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2u16.c       2010-01-25 09:50:29.535686781 +0100
54785 @@ -3,7 +3,8 @@
54786  
54787  /* { dg-do assemble } */
54788  /* { dg-require-effective-target arm_neon_ok } */
54789 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54790 +/* { dg-options "-save-temps -O0" } */
54791 +/* { dg-add-options arm_neon } */
54792  
54793  #include "arm_neon.h"
54794  
54795 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2u32.c b/gcc/testsuite/gcc.target/arm/neon/vst2u32.c
54796 --- a/gcc/testsuite/gcc.target/arm/neon/vst2u32.c       2007-07-25 14:28:31.000000000 +0200
54797 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2u32.c       2010-01-25 09:50:29.535686781 +0100
54798 @@ -3,7 +3,8 @@
54799  
54800  /* { dg-do assemble } */
54801  /* { dg-require-effective-target arm_neon_ok } */
54802 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54803 +/* { dg-options "-save-temps -O0" } */
54804 +/* { dg-add-options arm_neon } */
54805  
54806  #include "arm_neon.h"
54807  
54808 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2u64.c b/gcc/testsuite/gcc.target/arm/neon/vst2u64.c
54809 --- a/gcc/testsuite/gcc.target/arm/neon/vst2u64.c       2007-07-25 14:28:31.000000000 +0200
54810 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2u64.c       2010-01-25 09:50:29.545686586 +0100
54811 @@ -3,7 +3,8 @@
54812  
54813  /* { dg-do assemble } */
54814  /* { dg-require-effective-target arm_neon_ok } */
54815 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54816 +/* { dg-options "-save-temps -O0" } */
54817 +/* { dg-add-options arm_neon } */
54818  
54819  #include "arm_neon.h"
54820  
54821 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2u8.c b/gcc/testsuite/gcc.target/arm/neon/vst2u8.c
54822 --- a/gcc/testsuite/gcc.target/arm/neon/vst2u8.c        2007-07-25 14:28:31.000000000 +0200
54823 +++ b/gcc/testsuite/gcc.target/arm/neon/vst2u8.c        2010-01-25 09:50:29.545686586 +0100
54824 @@ -3,7 +3,8 @@
54825  
54826  /* { dg-do assemble } */
54827  /* { dg-require-effective-target arm_neon_ok } */
54828 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54829 +/* { dg-options "-save-temps -O0" } */
54830 +/* { dg-add-options arm_neon } */
54831  
54832  #include "arm_neon.h"
54833  
54834 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3f32.c b/gcc/testsuite/gcc.target/arm/neon/vst3f32.c
54835 --- a/gcc/testsuite/gcc.target/arm/neon/vst3f32.c       2007-07-25 14:28:31.000000000 +0200
54836 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3f32.c       2010-01-25 09:50:29.545686586 +0100
54837 @@ -3,7 +3,8 @@
54838  
54839  /* { dg-do assemble } */
54840  /* { dg-require-effective-target arm_neon_ok } */
54841 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54842 +/* { dg-options "-save-temps -O0" } */
54843 +/* { dg-add-options arm_neon } */
54844  
54845  #include "arm_neon.h"
54846  
54847 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c
54848 --- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c  2007-07-25 14:28:31.000000000 +0200
54849 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c  2010-01-25 09:50:29.545686586 +0100
54850 @@ -3,7 +3,8 @@
54851  
54852  /* { dg-do assemble } */
54853  /* { dg-require-effective-target arm_neon_ok } */
54854 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54855 +/* { dg-options "-save-temps -O0" } */
54856 +/* { dg-add-options arm_neon } */
54857  
54858  #include "arm_neon.h"
54859  
54860 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c
54861 --- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c  2007-07-25 14:28:31.000000000 +0200
54862 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c  2010-01-25 09:50:29.545686586 +0100
54863 @@ -3,7 +3,8 @@
54864  
54865  /* { dg-do assemble } */
54866  /* { dg-require-effective-target arm_neon_ok } */
54867 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54868 +/* { dg-options "-save-temps -O0" } */
54869 +/* { dg-add-options arm_neon } */
54870  
54871  #include "arm_neon.h"
54872  
54873 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c
54874 --- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c   2007-07-25 14:28:31.000000000 +0200
54875 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c   2010-01-25 09:50:29.545686586 +0100
54876 @@ -3,7 +3,8 @@
54877  
54878  /* { dg-do assemble } */
54879  /* { dg-require-effective-target arm_neon_ok } */
54880 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54881 +/* { dg-options "-save-temps -O0" } */
54882 +/* { dg-add-options arm_neon } */
54883  
54884  #include "arm_neon.h"
54885  
54886 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c
54887 --- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c  2007-07-25 14:28:31.000000000 +0200
54888 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c  2010-01-25 09:50:29.545686586 +0100
54889 @@ -3,7 +3,8 @@
54890  
54891  /* { dg-do assemble } */
54892  /* { dg-require-effective-target arm_neon_ok } */
54893 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54894 +/* { dg-options "-save-temps -O0" } */
54895 +/* { dg-add-options arm_neon } */
54896  
54897  #include "arm_neon.h"
54898  
54899 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c
54900 --- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c  2007-07-25 14:28:31.000000000 +0200
54901 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c  2010-01-25 09:50:29.545686586 +0100
54902 @@ -3,7 +3,8 @@
54903  
54904  /* { dg-do assemble } */
54905  /* { dg-require-effective-target arm_neon_ok } */
54906 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54907 +/* { dg-options "-save-temps -O0" } */
54908 +/* { dg-add-options arm_neon } */
54909  
54910  #include "arm_neon.h"
54911  
54912 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c
54913 --- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c   2007-07-25 14:28:31.000000000 +0200
54914 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c   2010-01-25 09:50:29.545686586 +0100
54915 @@ -3,7 +3,8 @@
54916  
54917  /* { dg-do assemble } */
54918  /* { dg-require-effective-target arm_neon_ok } */
54919 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54920 +/* { dg-options "-save-temps -O0" } */
54921 +/* { dg-add-options arm_neon } */
54922  
54923  #include "arm_neon.h"
54924  
54925 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c
54926 --- a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c  2007-07-25 14:28:31.000000000 +0200
54927 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c  2010-01-25 09:50:29.545686586 +0100
54928 @@ -3,7 +3,8 @@
54929  
54930  /* { dg-do assemble } */
54931  /* { dg-require-effective-target arm_neon_ok } */
54932 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54933 +/* { dg-options "-save-temps -O0" } */
54934 +/* { dg-add-options arm_neon } */
54935  
54936  #include "arm_neon.h"
54937  
54938 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c
54939 --- a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c  2007-07-25 14:28:31.000000000 +0200
54940 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c  2010-01-25 09:50:29.545686586 +0100
54941 @@ -3,7 +3,8 @@
54942  
54943  /* { dg-do assemble } */
54944  /* { dg-require-effective-target arm_neon_ok } */
54945 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54946 +/* { dg-options "-save-temps -O0" } */
54947 +/* { dg-add-options arm_neon } */
54948  
54949  #include "arm_neon.h"
54950  
54951 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c
54952 --- a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c   2007-07-25 14:28:31.000000000 +0200
54953 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c   2010-01-25 09:50:29.545686586 +0100
54954 @@ -3,7 +3,8 @@
54955  
54956  /* { dg-do assemble } */
54957  /* { dg-require-effective-target arm_neon_ok } */
54958 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54959 +/* { dg-options "-save-temps -O0" } */
54960 +/* { dg-add-options arm_neon } */
54961  
54962  #include "arm_neon.h"
54963  
54964 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3p16.c b/gcc/testsuite/gcc.target/arm/neon/vst3p16.c
54965 --- a/gcc/testsuite/gcc.target/arm/neon/vst3p16.c       2007-07-25 14:28:31.000000000 +0200
54966 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3p16.c       2010-01-25 09:50:29.545686586 +0100
54967 @@ -3,7 +3,8 @@
54968  
54969  /* { dg-do assemble } */
54970  /* { dg-require-effective-target arm_neon_ok } */
54971 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54972 +/* { dg-options "-save-temps -O0" } */
54973 +/* { dg-add-options arm_neon } */
54974  
54975  #include "arm_neon.h"
54976  
54977 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3p8.c b/gcc/testsuite/gcc.target/arm/neon/vst3p8.c
54978 --- a/gcc/testsuite/gcc.target/arm/neon/vst3p8.c        2007-07-25 14:28:31.000000000 +0200
54979 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3p8.c        2010-01-25 09:50:29.545686586 +0100
54980 @@ -3,7 +3,8 @@
54981  
54982  /* { dg-do assemble } */
54983  /* { dg-require-effective-target arm_neon_ok } */
54984 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54985 +/* { dg-options "-save-temps -O0" } */
54986 +/* { dg-add-options arm_neon } */
54987  
54988  #include "arm_neon.h"
54989  
54990 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c
54991 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c      2007-07-25 14:28:31.000000000 +0200
54992 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c      2010-01-25 09:50:29.545686586 +0100
54993 @@ -3,7 +3,8 @@
54994  
54995  /* { dg-do assemble } */
54996  /* { dg-require-effective-target arm_neon_ok } */
54997 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
54998 +/* { dg-options "-save-temps -O0" } */
54999 +/* { dg-add-options arm_neon } */
55000  
55001  #include "arm_neon.h"
55002  
55003 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c
55004 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c 2007-07-25 14:28:31.000000000 +0200
55005 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c 2010-01-25 09:50:29.545686586 +0100
55006 @@ -3,7 +3,8 @@
55007  
55008  /* { dg-do assemble } */
55009  /* { dg-require-effective-target arm_neon_ok } */
55010 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55011 +/* { dg-options "-save-temps -O0" } */
55012 +/* { dg-add-options arm_neon } */
55013  
55014  #include "arm_neon.h"
55015  
55016 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c
55017 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c 2007-07-25 14:28:31.000000000 +0200
55018 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c 2010-01-25 09:50:29.545686586 +0100
55019 @@ -3,7 +3,8 @@
55020  
55021  /* { dg-do assemble } */
55022  /* { dg-require-effective-target arm_neon_ok } */
55023 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55024 +/* { dg-options "-save-temps -O0" } */
55025 +/* { dg-add-options arm_neon } */
55026  
55027  #include "arm_neon.h"
55028  
55029 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c
55030 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c 2007-07-25 14:28:31.000000000 +0200
55031 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c 2010-01-25 09:50:29.545686586 +0100
55032 @@ -3,7 +3,8 @@
55033  
55034  /* { dg-do assemble } */
55035  /* { dg-require-effective-target arm_neon_ok } */
55036 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55037 +/* { dg-options "-save-temps -O0" } */
55038 +/* { dg-add-options arm_neon } */
55039  
55040  #include "arm_neon.h"
55041  
55042 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c
55043 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c 2007-07-25 14:28:31.000000000 +0200
55044 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c 2010-01-25 09:50:29.545686586 +0100
55045 @@ -3,7 +3,8 @@
55046  
55047  /* { dg-do assemble } */
55048  /* { dg-require-effective-target arm_neon_ok } */
55049 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55050 +/* { dg-options "-save-temps -O0" } */
55051 +/* { dg-add-options arm_neon } */
55052  
55053  #include "arm_neon.h"
55054  
55055 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c
55056 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c 2007-07-25 14:28:31.000000000 +0200
55057 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c 2010-01-25 09:50:29.545686586 +0100
55058 @@ -3,7 +3,8 @@
55059  
55060  /* { dg-do assemble } */
55061  /* { dg-require-effective-target arm_neon_ok } */
55062 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55063 +/* { dg-options "-save-temps -O0" } */
55064 +/* { dg-add-options arm_neon } */
55065  
55066  #include "arm_neon.h"
55067  
55068 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c
55069 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c 2007-07-25 14:28:31.000000000 +0200
55070 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c 2010-01-25 09:50:29.545686586 +0100
55071 @@ -3,7 +3,8 @@
55072  
55073  /* { dg-do assemble } */
55074  /* { dg-require-effective-target arm_neon_ok } */
55075 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55076 +/* { dg-options "-save-temps -O0" } */
55077 +/* { dg-add-options arm_neon } */
55078  
55079  #include "arm_neon.h"
55080  
55081 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c
55082 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c      2007-07-25 14:28:31.000000000 +0200
55083 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c      2010-01-25 09:50:29.545686586 +0100
55084 @@ -3,7 +3,8 @@
55085  
55086  /* { dg-do assemble } */
55087  /* { dg-require-effective-target arm_neon_ok } */
55088 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55089 +/* { dg-options "-save-temps -O0" } */
55090 +/* { dg-add-options arm_neon } */
55091  
55092  #include "arm_neon.h"
55093  
55094 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c
55095 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c       2007-07-25 14:28:31.000000000 +0200
55096 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c       2010-01-25 09:50:29.545686586 +0100
55097 @@ -3,7 +3,8 @@
55098  
55099  /* { dg-do assemble } */
55100  /* { dg-require-effective-target arm_neon_ok } */
55101 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55102 +/* { dg-options "-save-temps -O0" } */
55103 +/* { dg-add-options arm_neon } */
55104  
55105  #include "arm_neon.h"
55106  
55107 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c
55108 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c      2007-07-25 14:28:31.000000000 +0200
55109 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c      2010-01-25 09:50:29.545686586 +0100
55110 @@ -3,7 +3,8 @@
55111  
55112  /* { dg-do assemble } */
55113  /* { dg-require-effective-target arm_neon_ok } */
55114 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55115 +/* { dg-options "-save-temps -O0" } */
55116 +/* { dg-add-options arm_neon } */
55117  
55118  #include "arm_neon.h"
55119  
55120 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c
55121 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c      2007-07-25 14:28:31.000000000 +0200
55122 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c      2010-01-25 09:50:29.545686586 +0100
55123 @@ -3,7 +3,8 @@
55124  
55125  /* { dg-do assemble } */
55126  /* { dg-require-effective-target arm_neon_ok } */
55127 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55128 +/* { dg-options "-save-temps -O0" } */
55129 +/* { dg-add-options arm_neon } */
55130  
55131  #include "arm_neon.h"
55132  
55133 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c
55134 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c       2007-07-25 14:28:31.000000000 +0200
55135 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c       2010-01-25 09:50:29.545686586 +0100
55136 @@ -3,7 +3,8 @@
55137  
55138  /* { dg-do assemble } */
55139  /* { dg-require-effective-target arm_neon_ok } */
55140 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55141 +/* { dg-options "-save-temps -O0" } */
55142 +/* { dg-add-options arm_neon } */
55143  
55144  #include "arm_neon.h"
55145  
55146 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c
55147 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c      2007-07-25 14:28:31.000000000 +0200
55148 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c      2010-01-25 09:50:29.545686586 +0100
55149 @@ -3,7 +3,8 @@
55150  
55151  /* { dg-do assemble } */
55152  /* { dg-require-effective-target arm_neon_ok } */
55153 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55154 +/* { dg-options "-save-temps -O0" } */
55155 +/* { dg-add-options arm_neon } */
55156  
55157  #include "arm_neon.h"
55158  
55159 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c
55160 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c      2007-07-25 14:28:31.000000000 +0200
55161 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c      2010-01-25 09:50:29.545686586 +0100
55162 @@ -3,7 +3,8 @@
55163  
55164  /* { dg-do assemble } */
55165  /* { dg-require-effective-target arm_neon_ok } */
55166 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55167 +/* { dg-options "-save-temps -O0" } */
55168 +/* { dg-add-options arm_neon } */
55169  
55170  #include "arm_neon.h"
55171  
55172 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c
55173 --- a/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c       2007-07-25 14:28:31.000000000 +0200
55174 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c       2010-01-25 09:50:29.545686586 +0100
55175 @@ -3,7 +3,8 @@
55176  
55177  /* { dg-do assemble } */
55178  /* { dg-require-effective-target arm_neon_ok } */
55179 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55180 +/* { dg-options "-save-temps -O0" } */
55181 +/* { dg-add-options arm_neon } */
55182  
55183  #include "arm_neon.h"
55184  
55185 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3s16.c b/gcc/testsuite/gcc.target/arm/neon/vst3s16.c
55186 --- a/gcc/testsuite/gcc.target/arm/neon/vst3s16.c       2007-07-25 14:28:31.000000000 +0200
55187 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3s16.c       2010-01-25 09:50:29.545686586 +0100
55188 @@ -3,7 +3,8 @@
55189  
55190  /* { dg-do assemble } */
55191  /* { dg-require-effective-target arm_neon_ok } */
55192 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55193 +/* { dg-options "-save-temps -O0" } */
55194 +/* { dg-add-options arm_neon } */
55195  
55196  #include "arm_neon.h"
55197  
55198 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3s32.c b/gcc/testsuite/gcc.target/arm/neon/vst3s32.c
55199 --- a/gcc/testsuite/gcc.target/arm/neon/vst3s32.c       2007-07-25 14:28:31.000000000 +0200
55200 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3s32.c       2010-01-25 09:50:29.545686586 +0100
55201 @@ -3,7 +3,8 @@
55202  
55203  /* { dg-do assemble } */
55204  /* { dg-require-effective-target arm_neon_ok } */
55205 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55206 +/* { dg-options "-save-temps -O0" } */
55207 +/* { dg-add-options arm_neon } */
55208  
55209  #include "arm_neon.h"
55210  
55211 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3s64.c b/gcc/testsuite/gcc.target/arm/neon/vst3s64.c
55212 --- a/gcc/testsuite/gcc.target/arm/neon/vst3s64.c       2007-07-25 14:28:31.000000000 +0200
55213 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3s64.c       2010-01-25 09:50:29.545686586 +0100
55214 @@ -3,7 +3,8 @@
55215  
55216  /* { dg-do assemble } */
55217  /* { dg-require-effective-target arm_neon_ok } */
55218 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55219 +/* { dg-options "-save-temps -O0" } */
55220 +/* { dg-add-options arm_neon } */
55221  
55222  #include "arm_neon.h"
55223  
55224 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3s8.c b/gcc/testsuite/gcc.target/arm/neon/vst3s8.c
55225 --- a/gcc/testsuite/gcc.target/arm/neon/vst3s8.c        2007-07-25 14:28:31.000000000 +0200
55226 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3s8.c        2010-01-25 09:50:29.545686586 +0100
55227 @@ -3,7 +3,8 @@
55228  
55229  /* { dg-do assemble } */
55230  /* { dg-require-effective-target arm_neon_ok } */
55231 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55232 +/* { dg-options "-save-temps -O0" } */
55233 +/* { dg-add-options arm_neon } */
55234  
55235  #include "arm_neon.h"
55236  
55237 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3u16.c b/gcc/testsuite/gcc.target/arm/neon/vst3u16.c
55238 --- a/gcc/testsuite/gcc.target/arm/neon/vst3u16.c       2007-07-25 14:28:31.000000000 +0200
55239 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3u16.c       2010-01-25 09:50:29.545686586 +0100
55240 @@ -3,7 +3,8 @@
55241  
55242  /* { dg-do assemble } */
55243  /* { dg-require-effective-target arm_neon_ok } */
55244 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55245 +/* { dg-options "-save-temps -O0" } */
55246 +/* { dg-add-options arm_neon } */
55247  
55248  #include "arm_neon.h"
55249  
55250 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3u32.c b/gcc/testsuite/gcc.target/arm/neon/vst3u32.c
55251 --- a/gcc/testsuite/gcc.target/arm/neon/vst3u32.c       2007-07-25 14:28:31.000000000 +0200
55252 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3u32.c       2010-01-25 09:50:29.545686586 +0100
55253 @@ -3,7 +3,8 @@
55254  
55255  /* { dg-do assemble } */
55256  /* { dg-require-effective-target arm_neon_ok } */
55257 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55258 +/* { dg-options "-save-temps -O0" } */
55259 +/* { dg-add-options arm_neon } */
55260  
55261  #include "arm_neon.h"
55262  
55263 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3u64.c b/gcc/testsuite/gcc.target/arm/neon/vst3u64.c
55264 --- a/gcc/testsuite/gcc.target/arm/neon/vst3u64.c       2007-07-25 14:28:31.000000000 +0200
55265 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3u64.c       2010-01-25 09:50:29.545686586 +0100
55266 @@ -3,7 +3,8 @@
55267  
55268  /* { dg-do assemble } */
55269  /* { dg-require-effective-target arm_neon_ok } */
55270 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55271 +/* { dg-options "-save-temps -O0" } */
55272 +/* { dg-add-options arm_neon } */
55273  
55274  #include "arm_neon.h"
55275  
55276 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3u8.c b/gcc/testsuite/gcc.target/arm/neon/vst3u8.c
55277 --- a/gcc/testsuite/gcc.target/arm/neon/vst3u8.c        2007-07-25 14:28:31.000000000 +0200
55278 +++ b/gcc/testsuite/gcc.target/arm/neon/vst3u8.c        2010-01-25 09:50:29.545686586 +0100
55279 @@ -3,7 +3,8 @@
55280  
55281  /* { dg-do assemble } */
55282  /* { dg-require-effective-target arm_neon_ok } */
55283 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55284 +/* { dg-options "-save-temps -O0" } */
55285 +/* { dg-add-options arm_neon } */
55286  
55287  #include "arm_neon.h"
55288  
55289 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4f32.c b/gcc/testsuite/gcc.target/arm/neon/vst4f32.c
55290 --- a/gcc/testsuite/gcc.target/arm/neon/vst4f32.c       2007-07-25 14:28:31.000000000 +0200
55291 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4f32.c       2010-01-25 09:50:29.545686586 +0100
55292 @@ -3,7 +3,8 @@
55293  
55294  /* { dg-do assemble } */
55295  /* { dg-require-effective-target arm_neon_ok } */
55296 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55297 +/* { dg-options "-save-temps -O0" } */
55298 +/* { dg-add-options arm_neon } */
55299  
55300  #include "arm_neon.h"
55301  
55302 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c
55303 --- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c  2007-07-25 14:28:31.000000000 +0200
55304 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c  2010-01-25 09:50:29.545686586 +0100
55305 @@ -3,7 +3,8 @@
55306  
55307  /* { dg-do assemble } */
55308  /* { dg-require-effective-target arm_neon_ok } */
55309 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55310 +/* { dg-options "-save-temps -O0" } */
55311 +/* { dg-add-options arm_neon } */
55312  
55313  #include "arm_neon.h"
55314  
55315 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c
55316 --- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c  2007-07-25 14:28:31.000000000 +0200
55317 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c  2010-01-25 09:50:29.545686586 +0100
55318 @@ -3,7 +3,8 @@
55319  
55320  /* { dg-do assemble } */
55321  /* { dg-require-effective-target arm_neon_ok } */
55322 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55323 +/* { dg-options "-save-temps -O0" } */
55324 +/* { dg-add-options arm_neon } */
55325  
55326  #include "arm_neon.h"
55327  
55328 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c
55329 --- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c   2007-07-25 14:28:31.000000000 +0200
55330 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c   2010-01-25 09:50:29.545686586 +0100
55331 @@ -3,7 +3,8 @@
55332  
55333  /* { dg-do assemble } */
55334  /* { dg-require-effective-target arm_neon_ok } */
55335 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55336 +/* { dg-options "-save-temps -O0" } */
55337 +/* { dg-add-options arm_neon } */
55338  
55339  #include "arm_neon.h"
55340  
55341 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c
55342 --- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c  2007-07-25 14:28:31.000000000 +0200
55343 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c  2010-01-25 09:50:29.545686586 +0100
55344 @@ -3,7 +3,8 @@
55345  
55346  /* { dg-do assemble } */
55347  /* { dg-require-effective-target arm_neon_ok } */
55348 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55349 +/* { dg-options "-save-temps -O0" } */
55350 +/* { dg-add-options arm_neon } */
55351  
55352  #include "arm_neon.h"
55353  
55354 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c
55355 --- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c  2007-07-25 14:28:31.000000000 +0200
55356 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c  2010-01-25 09:50:29.545686586 +0100
55357 @@ -3,7 +3,8 @@
55358  
55359  /* { dg-do assemble } */
55360  /* { dg-require-effective-target arm_neon_ok } */
55361 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55362 +/* { dg-options "-save-temps -O0" } */
55363 +/* { dg-add-options arm_neon } */
55364  
55365  #include "arm_neon.h"
55366  
55367 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c
55368 --- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c   2007-07-25 14:28:31.000000000 +0200
55369 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c   2010-01-25 09:50:29.545686586 +0100
55370 @@ -3,7 +3,8 @@
55371  
55372  /* { dg-do assemble } */
55373  /* { dg-require-effective-target arm_neon_ok } */
55374 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55375 +/* { dg-options "-save-temps -O0" } */
55376 +/* { dg-add-options arm_neon } */
55377  
55378  #include "arm_neon.h"
55379  
55380 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c
55381 --- a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c  2007-07-25 14:28:31.000000000 +0200
55382 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c  2010-01-25 09:50:29.545686586 +0100
55383 @@ -3,7 +3,8 @@
55384  
55385  /* { dg-do assemble } */
55386  /* { dg-require-effective-target arm_neon_ok } */
55387 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55388 +/* { dg-options "-save-temps -O0" } */
55389 +/* { dg-add-options arm_neon } */
55390  
55391  #include "arm_neon.h"
55392  
55393 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c
55394 --- a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c  2007-07-25 14:28:31.000000000 +0200
55395 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c  2010-01-25 09:50:29.545686586 +0100
55396 @@ -3,7 +3,8 @@
55397  
55398  /* { dg-do assemble } */
55399  /* { dg-require-effective-target arm_neon_ok } */
55400 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55401 +/* { dg-options "-save-temps -O0" } */
55402 +/* { dg-add-options arm_neon } */
55403  
55404  #include "arm_neon.h"
55405  
55406 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c
55407 --- a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c   2007-07-25 14:28:31.000000000 +0200
55408 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c   2010-01-25 09:50:29.545686586 +0100
55409 @@ -3,7 +3,8 @@
55410  
55411  /* { dg-do assemble } */
55412  /* { dg-require-effective-target arm_neon_ok } */
55413 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55414 +/* { dg-options "-save-temps -O0" } */
55415 +/* { dg-add-options arm_neon } */
55416  
55417  #include "arm_neon.h"
55418  
55419 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4p16.c b/gcc/testsuite/gcc.target/arm/neon/vst4p16.c
55420 --- a/gcc/testsuite/gcc.target/arm/neon/vst4p16.c       2007-07-25 14:28:31.000000000 +0200
55421 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4p16.c       2010-01-25 09:50:29.545686586 +0100
55422 @@ -3,7 +3,8 @@
55423  
55424  /* { dg-do assemble } */
55425  /* { dg-require-effective-target arm_neon_ok } */
55426 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55427 +/* { dg-options "-save-temps -O0" } */
55428 +/* { dg-add-options arm_neon } */
55429  
55430  #include "arm_neon.h"
55431  
55432 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4p8.c b/gcc/testsuite/gcc.target/arm/neon/vst4p8.c
55433 --- a/gcc/testsuite/gcc.target/arm/neon/vst4p8.c        2007-07-25 14:28:31.000000000 +0200
55434 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4p8.c        2010-01-25 09:50:29.545686586 +0100
55435 @@ -3,7 +3,8 @@
55436  
55437  /* { dg-do assemble } */
55438  /* { dg-require-effective-target arm_neon_ok } */
55439 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55440 +/* { dg-options "-save-temps -O0" } */
55441 +/* { dg-add-options arm_neon } */
55442  
55443  #include "arm_neon.h"
55444  
55445 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c
55446 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c      2007-07-25 14:28:31.000000000 +0200
55447 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c      2010-01-25 09:50:29.545686586 +0100
55448 @@ -3,7 +3,8 @@
55449  
55450  /* { dg-do assemble } */
55451  /* { dg-require-effective-target arm_neon_ok } */
55452 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55453 +/* { dg-options "-save-temps -O0" } */
55454 +/* { dg-add-options arm_neon } */
55455  
55456  #include "arm_neon.h"
55457  
55458 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c
55459 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c 2007-07-25 14:28:31.000000000 +0200
55460 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c 2010-01-25 09:50:29.545686586 +0100
55461 @@ -3,7 +3,8 @@
55462  
55463  /* { dg-do assemble } */
55464  /* { dg-require-effective-target arm_neon_ok } */
55465 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55466 +/* { dg-options "-save-temps -O0" } */
55467 +/* { dg-add-options arm_neon } */
55468  
55469  #include "arm_neon.h"
55470  
55471 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c
55472 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c 2007-07-25 14:28:31.000000000 +0200
55473 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c 2010-01-25 09:50:29.545686586 +0100
55474 @@ -3,7 +3,8 @@
55475  
55476  /* { dg-do assemble } */
55477  /* { dg-require-effective-target arm_neon_ok } */
55478 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55479 +/* { dg-options "-save-temps -O0" } */
55480 +/* { dg-add-options arm_neon } */
55481  
55482  #include "arm_neon.h"
55483  
55484 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c
55485 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c 2007-07-25 14:28:31.000000000 +0200
55486 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c 2010-01-25 09:50:29.545686586 +0100
55487 @@ -3,7 +3,8 @@
55488  
55489  /* { dg-do assemble } */
55490  /* { dg-require-effective-target arm_neon_ok } */
55491 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55492 +/* { dg-options "-save-temps -O0" } */
55493 +/* { dg-add-options arm_neon } */
55494  
55495  #include "arm_neon.h"
55496  
55497 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c
55498 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c 2007-07-25 14:28:31.000000000 +0200
55499 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c 2010-01-25 09:50:29.545686586 +0100
55500 @@ -3,7 +3,8 @@
55501  
55502  /* { dg-do assemble } */
55503  /* { dg-require-effective-target arm_neon_ok } */
55504 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55505 +/* { dg-options "-save-temps -O0" } */
55506 +/* { dg-add-options arm_neon } */
55507  
55508  #include "arm_neon.h"
55509  
55510 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c
55511 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c 2007-07-25 14:28:31.000000000 +0200
55512 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c 2010-01-25 09:50:29.545686586 +0100
55513 @@ -3,7 +3,8 @@
55514  
55515  /* { dg-do assemble } */
55516  /* { dg-require-effective-target arm_neon_ok } */
55517 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55518 +/* { dg-options "-save-temps -O0" } */
55519 +/* { dg-add-options arm_neon } */
55520  
55521  #include "arm_neon.h"
55522  
55523 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c
55524 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c 2007-07-25 14:28:31.000000000 +0200
55525 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c 2010-01-25 09:50:29.545686586 +0100
55526 @@ -3,7 +3,8 @@
55527  
55528  /* { dg-do assemble } */
55529  /* { dg-require-effective-target arm_neon_ok } */
55530 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55531 +/* { dg-options "-save-temps -O0" } */
55532 +/* { dg-add-options arm_neon } */
55533  
55534  #include "arm_neon.h"
55535  
55536 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c
55537 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c      2007-07-25 14:28:31.000000000 +0200
55538 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c      2010-01-25 09:50:29.545686586 +0100
55539 @@ -3,7 +3,8 @@
55540  
55541  /* { dg-do assemble } */
55542  /* { dg-require-effective-target arm_neon_ok } */
55543 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55544 +/* { dg-options "-save-temps -O0" } */
55545 +/* { dg-add-options arm_neon } */
55546  
55547  #include "arm_neon.h"
55548  
55549 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c
55550 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c       2007-07-25 14:28:31.000000000 +0200
55551 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c       2010-01-25 09:50:29.545686586 +0100
55552 @@ -3,7 +3,8 @@
55553  
55554  /* { dg-do assemble } */
55555  /* { dg-require-effective-target arm_neon_ok } */
55556 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55557 +/* { dg-options "-save-temps -O0" } */
55558 +/* { dg-add-options arm_neon } */
55559  
55560  #include "arm_neon.h"
55561  
55562 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c
55563 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c      2007-07-25 14:28:31.000000000 +0200
55564 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c      2010-01-25 09:50:29.545686586 +0100
55565 @@ -3,7 +3,8 @@
55566  
55567  /* { dg-do assemble } */
55568  /* { dg-require-effective-target arm_neon_ok } */
55569 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55570 +/* { dg-options "-save-temps -O0" } */
55571 +/* { dg-add-options arm_neon } */
55572  
55573  #include "arm_neon.h"
55574  
55575 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c
55576 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c      2007-07-25 14:28:31.000000000 +0200
55577 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c      2010-01-25 09:50:29.545686586 +0100
55578 @@ -3,7 +3,8 @@
55579  
55580  /* { dg-do assemble } */
55581  /* { dg-require-effective-target arm_neon_ok } */
55582 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55583 +/* { dg-options "-save-temps -O0" } */
55584 +/* { dg-add-options arm_neon } */
55585  
55586  #include "arm_neon.h"
55587  
55588 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c
55589 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c       2007-07-25 14:28:31.000000000 +0200
55590 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c       2010-01-25 09:50:29.545686586 +0100
55591 @@ -3,7 +3,8 @@
55592  
55593  /* { dg-do assemble } */
55594  /* { dg-require-effective-target arm_neon_ok } */
55595 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55596 +/* { dg-options "-save-temps -O0" } */
55597 +/* { dg-add-options arm_neon } */
55598  
55599  #include "arm_neon.h"
55600  
55601 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c
55602 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c      2007-07-25 14:28:31.000000000 +0200
55603 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c      2010-01-25 09:50:29.545686586 +0100
55604 @@ -3,7 +3,8 @@
55605  
55606  /* { dg-do assemble } */
55607  /* { dg-require-effective-target arm_neon_ok } */
55608 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55609 +/* { dg-options "-save-temps -O0" } */
55610 +/* { dg-add-options arm_neon } */
55611  
55612  #include "arm_neon.h"
55613  
55614 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c
55615 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c      2007-07-25 14:28:31.000000000 +0200
55616 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c      2010-01-25 09:50:29.545686586 +0100
55617 @@ -3,7 +3,8 @@
55618  
55619  /* { dg-do assemble } */
55620  /* { dg-require-effective-target arm_neon_ok } */
55621 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55622 +/* { dg-options "-save-temps -O0" } */
55623 +/* { dg-add-options arm_neon } */
55624  
55625  #include "arm_neon.h"
55626  
55627 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c
55628 --- a/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c       2007-07-25 14:28:31.000000000 +0200
55629 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c       2010-01-25 09:50:29.545686586 +0100
55630 @@ -3,7 +3,8 @@
55631  
55632  /* { dg-do assemble } */
55633  /* { dg-require-effective-target arm_neon_ok } */
55634 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55635 +/* { dg-options "-save-temps -O0" } */
55636 +/* { dg-add-options arm_neon } */
55637  
55638  #include "arm_neon.h"
55639  
55640 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4s16.c b/gcc/testsuite/gcc.target/arm/neon/vst4s16.c
55641 --- a/gcc/testsuite/gcc.target/arm/neon/vst4s16.c       2007-07-25 14:28:31.000000000 +0200
55642 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4s16.c       2010-01-25 09:50:29.545686586 +0100
55643 @@ -3,7 +3,8 @@
55644  
55645  /* { dg-do assemble } */
55646  /* { dg-require-effective-target arm_neon_ok } */
55647 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55648 +/* { dg-options "-save-temps -O0" } */
55649 +/* { dg-add-options arm_neon } */
55650  
55651  #include "arm_neon.h"
55652  
55653 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4s32.c b/gcc/testsuite/gcc.target/arm/neon/vst4s32.c
55654 --- a/gcc/testsuite/gcc.target/arm/neon/vst4s32.c       2007-07-25 14:28:31.000000000 +0200
55655 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4s32.c       2010-01-25 09:50:29.545686586 +0100
55656 @@ -3,7 +3,8 @@
55657  
55658  /* { dg-do assemble } */
55659  /* { dg-require-effective-target arm_neon_ok } */
55660 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55661 +/* { dg-options "-save-temps -O0" } */
55662 +/* { dg-add-options arm_neon } */
55663  
55664  #include "arm_neon.h"
55665  
55666 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4s64.c b/gcc/testsuite/gcc.target/arm/neon/vst4s64.c
55667 --- a/gcc/testsuite/gcc.target/arm/neon/vst4s64.c       2007-07-25 14:28:31.000000000 +0200
55668 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4s64.c       2010-01-25 09:50:29.545686586 +0100
55669 @@ -3,7 +3,8 @@
55670  
55671  /* { dg-do assemble } */
55672  /* { dg-require-effective-target arm_neon_ok } */
55673 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55674 +/* { dg-options "-save-temps -O0" } */
55675 +/* { dg-add-options arm_neon } */
55676  
55677  #include "arm_neon.h"
55678  
55679 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4s8.c b/gcc/testsuite/gcc.target/arm/neon/vst4s8.c
55680 --- a/gcc/testsuite/gcc.target/arm/neon/vst4s8.c        2007-07-25 14:28:31.000000000 +0200
55681 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4s8.c        2010-01-25 09:50:29.545686586 +0100
55682 @@ -3,7 +3,8 @@
55683  
55684  /* { dg-do assemble } */
55685  /* { dg-require-effective-target arm_neon_ok } */
55686 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55687 +/* { dg-options "-save-temps -O0" } */
55688 +/* { dg-add-options arm_neon } */
55689  
55690  #include "arm_neon.h"
55691  
55692 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4u16.c b/gcc/testsuite/gcc.target/arm/neon/vst4u16.c
55693 --- a/gcc/testsuite/gcc.target/arm/neon/vst4u16.c       2007-07-25 14:28:31.000000000 +0200
55694 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4u16.c       2010-01-25 09:50:29.545686586 +0100
55695 @@ -3,7 +3,8 @@
55696  
55697  /* { dg-do assemble } */
55698  /* { dg-require-effective-target arm_neon_ok } */
55699 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55700 +/* { dg-options "-save-temps -O0" } */
55701 +/* { dg-add-options arm_neon } */
55702  
55703  #include "arm_neon.h"
55704  
55705 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4u32.c b/gcc/testsuite/gcc.target/arm/neon/vst4u32.c
55706 --- a/gcc/testsuite/gcc.target/arm/neon/vst4u32.c       2007-07-25 14:28:31.000000000 +0200
55707 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4u32.c       2010-01-25 09:50:29.545686586 +0100
55708 @@ -3,7 +3,8 @@
55709  
55710  /* { dg-do assemble } */
55711  /* { dg-require-effective-target arm_neon_ok } */
55712 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55713 +/* { dg-options "-save-temps -O0" } */
55714 +/* { dg-add-options arm_neon } */
55715  
55716  #include "arm_neon.h"
55717  
55718 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4u64.c b/gcc/testsuite/gcc.target/arm/neon/vst4u64.c
55719 --- a/gcc/testsuite/gcc.target/arm/neon/vst4u64.c       2007-07-25 14:28:31.000000000 +0200
55720 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4u64.c       2010-01-25 09:50:29.545686586 +0100
55721 @@ -3,7 +3,8 @@
55722  
55723  /* { dg-do assemble } */
55724  /* { dg-require-effective-target arm_neon_ok } */
55725 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55726 +/* { dg-options "-save-temps -O0" } */
55727 +/* { dg-add-options arm_neon } */
55728  
55729  #include "arm_neon.h"
55730  
55731 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4u8.c b/gcc/testsuite/gcc.target/arm/neon/vst4u8.c
55732 --- a/gcc/testsuite/gcc.target/arm/neon/vst4u8.c        2007-07-25 14:28:31.000000000 +0200
55733 +++ b/gcc/testsuite/gcc.target/arm/neon/vst4u8.c        2010-01-25 09:50:29.545686586 +0100
55734 @@ -3,7 +3,8 @@
55735  
55736  /* { dg-do assemble } */
55737  /* { dg-require-effective-target arm_neon_ok } */
55738 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55739 +/* { dg-options "-save-temps -O0" } */
55740 +/* { dg-add-options arm_neon } */
55741  
55742  #include "arm_neon.h"
55743  
55744 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubf32.c b/gcc/testsuite/gcc.target/arm/neon/vsubf32.c
55745 --- a/gcc/testsuite/gcc.target/arm/neon/vsubf32.c       2007-07-25 14:28:31.000000000 +0200
55746 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubf32.c       2010-01-25 09:50:29.545686586 +0100
55747 @@ -3,7 +3,8 @@
55748  
55749  /* { dg-do assemble } */
55750  /* { dg-require-effective-target arm_neon_ok } */
55751 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55752 +/* { dg-options "-save-temps -O0" } */
55753 +/* { dg-add-options arm_neon } */
55754  
55755  #include "arm_neon.h"
55756  
55757 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c b/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c
55758 --- a/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c     2007-07-25 14:28:31.000000000 +0200
55759 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c     2010-01-25 09:50:29.555686949 +0100
55760 @@ -3,7 +3,8 @@
55761  
55762  /* { dg-do assemble } */
55763  /* { dg-require-effective-target arm_neon_ok } */
55764 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55765 +/* { dg-options "-save-temps -O0" } */
55766 +/* { dg-add-options arm_neon } */
55767  
55768  #include "arm_neon.h"
55769  
55770 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c b/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c
55771 --- a/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c     2007-07-25 14:28:31.000000000 +0200
55772 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c     2010-01-25 09:50:29.555686949 +0100
55773 @@ -3,7 +3,8 @@
55774  
55775  /* { dg-do assemble } */
55776  /* { dg-require-effective-target arm_neon_ok } */
55777 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55778 +/* { dg-options "-save-temps -O0" } */
55779 +/* { dg-add-options arm_neon } */
55780  
55781  #include "arm_neon.h"
55782  
55783 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c b/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c
55784 --- a/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c     2007-07-25 14:28:31.000000000 +0200
55785 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c     2010-01-25 09:50:29.555686949 +0100
55786 @@ -3,7 +3,8 @@
55787  
55788  /* { dg-do assemble } */
55789  /* { dg-require-effective-target arm_neon_ok } */
55790 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55791 +/* { dg-options "-save-temps -O0" } */
55792 +/* { dg-add-options arm_neon } */
55793  
55794  #include "arm_neon.h"
55795  
55796 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c b/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c
55797 --- a/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c     2007-07-25 14:28:31.000000000 +0200
55798 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c     2010-01-25 09:50:29.555686949 +0100
55799 @@ -3,7 +3,8 @@
55800  
55801  /* { dg-do assemble } */
55802  /* { dg-require-effective-target arm_neon_ok } */
55803 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55804 +/* { dg-options "-save-temps -O0" } */
55805 +/* { dg-add-options arm_neon } */
55806  
55807  #include "arm_neon.h"
55808  
55809 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c b/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c
55810 --- a/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c     2007-07-25 14:28:31.000000000 +0200
55811 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c     2010-01-25 09:50:29.555686949 +0100
55812 @@ -3,7 +3,8 @@
55813  
55814  /* { dg-do assemble } */
55815  /* { dg-require-effective-target arm_neon_ok } */
55816 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55817 +/* { dg-options "-save-temps -O0" } */
55818 +/* { dg-add-options arm_neon } */
55819  
55820  #include "arm_neon.h"
55821  
55822 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c b/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c
55823 --- a/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c     2007-07-25 14:28:31.000000000 +0200
55824 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c     2010-01-25 09:50:29.555686949 +0100
55825 @@ -3,7 +3,8 @@
55826  
55827  /* { dg-do assemble } */
55828  /* { dg-require-effective-target arm_neon_ok } */
55829 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55830 +/* { dg-options "-save-temps -O0" } */
55831 +/* { dg-add-options arm_neon } */
55832  
55833  #include "arm_neon.h"
55834  
55835 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubls16.c b/gcc/testsuite/gcc.target/arm/neon/vsubls16.c
55836 --- a/gcc/testsuite/gcc.target/arm/neon/vsubls16.c      2007-07-25 14:28:31.000000000 +0200
55837 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubls16.c      2010-01-25 09:50:29.555686949 +0100
55838 @@ -3,7 +3,8 @@
55839  
55840  /* { dg-do assemble } */
55841  /* { dg-require-effective-target arm_neon_ok } */
55842 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55843 +/* { dg-options "-save-temps -O0" } */
55844 +/* { dg-add-options arm_neon } */
55845  
55846  #include "arm_neon.h"
55847  
55848 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubls32.c b/gcc/testsuite/gcc.target/arm/neon/vsubls32.c
55849 --- a/gcc/testsuite/gcc.target/arm/neon/vsubls32.c      2007-07-25 14:28:31.000000000 +0200
55850 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubls32.c      2010-01-25 09:50:29.555686949 +0100
55851 @@ -3,7 +3,8 @@
55852  
55853  /* { dg-do assemble } */
55854  /* { dg-require-effective-target arm_neon_ok } */
55855 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55856 +/* { dg-options "-save-temps -O0" } */
55857 +/* { dg-add-options arm_neon } */
55858  
55859  #include "arm_neon.h"
55860  
55861 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubls8.c b/gcc/testsuite/gcc.target/arm/neon/vsubls8.c
55862 --- a/gcc/testsuite/gcc.target/arm/neon/vsubls8.c       2007-07-25 14:28:31.000000000 +0200
55863 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubls8.c       2010-01-25 09:50:29.555686949 +0100
55864 @@ -3,7 +3,8 @@
55865  
55866  /* { dg-do assemble } */
55867  /* { dg-require-effective-target arm_neon_ok } */
55868 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55869 +/* { dg-options "-save-temps -O0" } */
55870 +/* { dg-add-options arm_neon } */
55871  
55872  #include "arm_neon.h"
55873  
55874 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsublu16.c b/gcc/testsuite/gcc.target/arm/neon/vsublu16.c
55875 --- a/gcc/testsuite/gcc.target/arm/neon/vsublu16.c      2007-07-25 14:28:31.000000000 +0200
55876 +++ b/gcc/testsuite/gcc.target/arm/neon/vsublu16.c      2010-01-25 09:50:29.555686949 +0100
55877 @@ -3,7 +3,8 @@
55878  
55879  /* { dg-do assemble } */
55880  /* { dg-require-effective-target arm_neon_ok } */
55881 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55882 +/* { dg-options "-save-temps -O0" } */
55883 +/* { dg-add-options arm_neon } */
55884  
55885  #include "arm_neon.h"
55886  
55887 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsublu32.c b/gcc/testsuite/gcc.target/arm/neon/vsublu32.c
55888 --- a/gcc/testsuite/gcc.target/arm/neon/vsublu32.c      2007-07-25 14:28:31.000000000 +0200
55889 +++ b/gcc/testsuite/gcc.target/arm/neon/vsublu32.c      2010-01-25 09:50:29.555686949 +0100
55890 @@ -3,7 +3,8 @@
55891  
55892  /* { dg-do assemble } */
55893  /* { dg-require-effective-target arm_neon_ok } */
55894 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55895 +/* { dg-options "-save-temps -O0" } */
55896 +/* { dg-add-options arm_neon } */
55897  
55898  #include "arm_neon.h"
55899  
55900 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsublu8.c b/gcc/testsuite/gcc.target/arm/neon/vsublu8.c
55901 --- a/gcc/testsuite/gcc.target/arm/neon/vsublu8.c       2007-07-25 14:28:31.000000000 +0200
55902 +++ b/gcc/testsuite/gcc.target/arm/neon/vsublu8.c       2010-01-25 09:50:29.555686949 +0100
55903 @@ -3,7 +3,8 @@
55904  
55905  /* { dg-do assemble } */
55906  /* { dg-require-effective-target arm_neon_ok } */
55907 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55908 +/* { dg-options "-save-temps -O0" } */
55909 +/* { dg-add-options arm_neon } */
55910  
55911  #include "arm_neon.h"
55912  
55913 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c b/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c
55914 --- a/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c      2007-07-25 14:28:31.000000000 +0200
55915 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c      2010-01-25 09:50:29.555686949 +0100
55916 @@ -3,7 +3,8 @@
55917  
55918  /* { dg-do assemble } */
55919  /* { dg-require-effective-target arm_neon_ok } */
55920 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55921 +/* { dg-options "-save-temps -O0" } */
55922 +/* { dg-add-options arm_neon } */
55923  
55924  #include "arm_neon.h"
55925  
55926 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c b/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c
55927 --- a/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c      2007-07-25 14:28:31.000000000 +0200
55928 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c      2010-01-25 09:50:29.555686949 +0100
55929 @@ -3,7 +3,8 @@
55930  
55931  /* { dg-do assemble } */
55932  /* { dg-require-effective-target arm_neon_ok } */
55933 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55934 +/* { dg-options "-save-temps -O0" } */
55935 +/* { dg-add-options arm_neon } */
55936  
55937  #include "arm_neon.h"
55938  
55939 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c b/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c
55940 --- a/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c      2007-07-25 14:28:31.000000000 +0200
55941 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c      2010-01-25 09:50:29.555686949 +0100
55942 @@ -3,7 +3,8 @@
55943  
55944  /* { dg-do assemble } */
55945  /* { dg-require-effective-target arm_neon_ok } */
55946 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55947 +/* { dg-options "-save-temps -O0" } */
55948 +/* { dg-add-options arm_neon } */
55949  
55950  #include "arm_neon.h"
55951  
55952 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c b/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c
55953 --- a/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c      2007-07-25 14:28:31.000000000 +0200
55954 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c      2010-01-25 09:50:29.555686949 +0100
55955 @@ -3,7 +3,8 @@
55956  
55957  /* { dg-do assemble } */
55958  /* { dg-require-effective-target arm_neon_ok } */
55959 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55960 +/* { dg-options "-save-temps -O0" } */
55961 +/* { dg-add-options arm_neon } */
55962  
55963  #include "arm_neon.h"
55964  
55965 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c b/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c
55966 --- a/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c       2007-07-25 14:28:31.000000000 +0200
55967 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c       2010-01-25 09:50:29.555686949 +0100
55968 @@ -3,7 +3,8 @@
55969  
55970  /* { dg-do assemble } */
55971  /* { dg-require-effective-target arm_neon_ok } */
55972 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55973 +/* { dg-options "-save-temps -O0" } */
55974 +/* { dg-add-options arm_neon } */
55975  
55976  #include "arm_neon.h"
55977  
55978 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c b/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c
55979 --- a/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c      2007-07-25 14:28:31.000000000 +0200
55980 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c      2010-01-25 09:50:29.555686949 +0100
55981 @@ -3,7 +3,8 @@
55982  
55983  /* { dg-do assemble } */
55984  /* { dg-require-effective-target arm_neon_ok } */
55985 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55986 +/* { dg-options "-save-temps -O0" } */
55987 +/* { dg-add-options arm_neon } */
55988  
55989  #include "arm_neon.h"
55990  
55991 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c b/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c
55992 --- a/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c      2007-07-25 14:28:31.000000000 +0200
55993 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c      2010-01-25 09:50:29.555686949 +0100
55994 @@ -3,7 +3,8 @@
55995  
55996  /* { dg-do assemble } */
55997  /* { dg-require-effective-target arm_neon_ok } */
55998 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
55999 +/* { dg-options "-save-temps -O0" } */
56000 +/* { dg-add-options arm_neon } */
56001  
56002  #include "arm_neon.h"
56003  
56004 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c b/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c
56005 --- a/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c      2007-07-25 14:28:31.000000000 +0200
56006 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c      2010-01-25 09:50:29.555686949 +0100
56007 @@ -3,7 +3,8 @@
56008  
56009  /* { dg-do assemble } */
56010  /* { dg-require-effective-target arm_neon_ok } */
56011 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56012 +/* { dg-options "-save-temps -O0" } */
56013 +/* { dg-add-options arm_neon } */
56014  
56015  #include "arm_neon.h"
56016  
56017 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c b/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c
56018 --- a/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c       2007-07-25 14:28:31.000000000 +0200
56019 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c       2010-01-25 09:50:29.555686949 +0100
56020 @@ -3,7 +3,8 @@
56021  
56022  /* { dg-do assemble } */
56023  /* { dg-require-effective-target arm_neon_ok } */
56024 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56025 +/* { dg-options "-save-temps -O0" } */
56026 +/* { dg-add-options arm_neon } */
56027  
56028  #include "arm_neon.h"
56029  
56030 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubs16.c b/gcc/testsuite/gcc.target/arm/neon/vsubs16.c
56031 --- a/gcc/testsuite/gcc.target/arm/neon/vsubs16.c       2007-07-25 14:28:31.000000000 +0200
56032 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubs16.c       2010-01-25 09:50:29.555686949 +0100
56033 @@ -3,7 +3,8 @@
56034  
56035  /* { dg-do assemble } */
56036  /* { dg-require-effective-target arm_neon_ok } */
56037 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56038 +/* { dg-options "-save-temps -O0" } */
56039 +/* { dg-add-options arm_neon } */
56040  
56041  #include "arm_neon.h"
56042  
56043 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubs32.c b/gcc/testsuite/gcc.target/arm/neon/vsubs32.c
56044 --- a/gcc/testsuite/gcc.target/arm/neon/vsubs32.c       2007-07-25 14:28:31.000000000 +0200
56045 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubs32.c       2010-01-25 09:50:29.555686949 +0100
56046 @@ -3,7 +3,8 @@
56047  
56048  /* { dg-do assemble } */
56049  /* { dg-require-effective-target arm_neon_ok } */
56050 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56051 +/* { dg-options "-save-temps -O0" } */
56052 +/* { dg-add-options arm_neon } */
56053  
56054  #include "arm_neon.h"
56055  
56056 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubs64.c b/gcc/testsuite/gcc.target/arm/neon/vsubs64.c
56057 --- a/gcc/testsuite/gcc.target/arm/neon/vsubs64.c       2007-07-25 14:28:31.000000000 +0200
56058 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubs64.c       2010-01-25 09:50:29.555686949 +0100
56059 @@ -3,7 +3,8 @@
56060  
56061  /* { dg-do assemble } */
56062  /* { dg-require-effective-target arm_neon_ok } */
56063 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56064 +/* { dg-options "-save-temps -O0" } */
56065 +/* { dg-add-options arm_neon } */
56066  
56067  #include "arm_neon.h"
56068  
56069 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubs8.c b/gcc/testsuite/gcc.target/arm/neon/vsubs8.c
56070 --- a/gcc/testsuite/gcc.target/arm/neon/vsubs8.c        2007-07-25 14:28:31.000000000 +0200
56071 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubs8.c        2010-01-25 09:50:29.555686949 +0100
56072 @@ -3,7 +3,8 @@
56073  
56074  /* { dg-do assemble } */
56075  /* { dg-require-effective-target arm_neon_ok } */
56076 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56077 +/* { dg-options "-save-temps -O0" } */
56078 +/* { dg-add-options arm_neon } */
56079  
56080  #include "arm_neon.h"
56081  
56082 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubu16.c b/gcc/testsuite/gcc.target/arm/neon/vsubu16.c
56083 --- a/gcc/testsuite/gcc.target/arm/neon/vsubu16.c       2007-07-25 14:28:31.000000000 +0200
56084 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubu16.c       2010-01-25 09:50:29.555686949 +0100
56085 @@ -3,7 +3,8 @@
56086  
56087  /* { dg-do assemble } */
56088  /* { dg-require-effective-target arm_neon_ok } */
56089 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56090 +/* { dg-options "-save-temps -O0" } */
56091 +/* { dg-add-options arm_neon } */
56092  
56093  #include "arm_neon.h"
56094  
56095 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubu32.c b/gcc/testsuite/gcc.target/arm/neon/vsubu32.c
56096 --- a/gcc/testsuite/gcc.target/arm/neon/vsubu32.c       2007-07-25 14:28:31.000000000 +0200
56097 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubu32.c       2010-01-25 09:50:29.555686949 +0100
56098 @@ -3,7 +3,8 @@
56099  
56100  /* { dg-do assemble } */
56101  /* { dg-require-effective-target arm_neon_ok } */
56102 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56103 +/* { dg-options "-save-temps -O0" } */
56104 +/* { dg-add-options arm_neon } */
56105  
56106  #include "arm_neon.h"
56107  
56108 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubu64.c b/gcc/testsuite/gcc.target/arm/neon/vsubu64.c
56109 --- a/gcc/testsuite/gcc.target/arm/neon/vsubu64.c       2007-07-25 14:28:31.000000000 +0200
56110 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubu64.c       2010-01-25 09:50:29.555686949 +0100
56111 @@ -3,7 +3,8 @@
56112  
56113  /* { dg-do assemble } */
56114  /* { dg-require-effective-target arm_neon_ok } */
56115 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56116 +/* { dg-options "-save-temps -O0" } */
56117 +/* { dg-add-options arm_neon } */
56118  
56119  #include "arm_neon.h"
56120  
56121 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubu8.c b/gcc/testsuite/gcc.target/arm/neon/vsubu8.c
56122 --- a/gcc/testsuite/gcc.target/arm/neon/vsubu8.c        2007-07-25 14:28:31.000000000 +0200
56123 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubu8.c        2010-01-25 09:50:29.555686949 +0100
56124 @@ -3,7 +3,8 @@
56125  
56126  /* { dg-do assemble } */
56127  /* { dg-require-effective-target arm_neon_ok } */
56128 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56129 +/* { dg-options "-save-temps -O0" } */
56130 +/* { dg-add-options arm_neon } */
56131  
56132  #include "arm_neon.h"
56133  
56134 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubws16.c b/gcc/testsuite/gcc.target/arm/neon/vsubws16.c
56135 --- a/gcc/testsuite/gcc.target/arm/neon/vsubws16.c      2007-07-25 14:28:31.000000000 +0200
56136 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubws16.c      2010-01-25 09:50:29.555686949 +0100
56137 @@ -3,7 +3,8 @@
56138  
56139  /* { dg-do assemble } */
56140  /* { dg-require-effective-target arm_neon_ok } */
56141 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56142 +/* { dg-options "-save-temps -O0" } */
56143 +/* { dg-add-options arm_neon } */
56144  
56145  #include "arm_neon.h"
56146  
56147 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubws32.c b/gcc/testsuite/gcc.target/arm/neon/vsubws32.c
56148 --- a/gcc/testsuite/gcc.target/arm/neon/vsubws32.c      2007-07-25 14:28:31.000000000 +0200
56149 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubws32.c      2010-01-25 09:50:29.555686949 +0100
56150 @@ -3,7 +3,8 @@
56151  
56152  /* { dg-do assemble } */
56153  /* { dg-require-effective-target arm_neon_ok } */
56154 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56155 +/* { dg-options "-save-temps -O0" } */
56156 +/* { dg-add-options arm_neon } */
56157  
56158  #include "arm_neon.h"
56159  
56160 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubws8.c b/gcc/testsuite/gcc.target/arm/neon/vsubws8.c
56161 --- a/gcc/testsuite/gcc.target/arm/neon/vsubws8.c       2007-07-25 14:28:31.000000000 +0200
56162 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubws8.c       2010-01-25 09:50:29.555686949 +0100
56163 @@ -3,7 +3,8 @@
56164  
56165  /* { dg-do assemble } */
56166  /* { dg-require-effective-target arm_neon_ok } */
56167 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56168 +/* { dg-options "-save-temps -O0" } */
56169 +/* { dg-add-options arm_neon } */
56170  
56171  #include "arm_neon.h"
56172  
56173 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c b/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c
56174 --- a/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c      2007-07-25 14:28:31.000000000 +0200
56175 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c      2010-01-25 09:50:29.555686949 +0100
56176 @@ -3,7 +3,8 @@
56177  
56178  /* { dg-do assemble } */
56179  /* { dg-require-effective-target arm_neon_ok } */
56180 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56181 +/* { dg-options "-save-temps -O0" } */
56182 +/* { dg-add-options arm_neon } */
56183  
56184  #include "arm_neon.h"
56185  
56186 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c b/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c
56187 --- a/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c      2007-07-25 14:28:31.000000000 +0200
56188 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c      2010-01-25 09:50:29.555686949 +0100
56189 @@ -3,7 +3,8 @@
56190  
56191  /* { dg-do assemble } */
56192  /* { dg-require-effective-target arm_neon_ok } */
56193 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56194 +/* { dg-options "-save-temps -O0" } */
56195 +/* { dg-add-options arm_neon } */
56196  
56197  #include "arm_neon.h"
56198  
56199 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c b/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c
56200 --- a/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c       2007-07-25 14:28:31.000000000 +0200
56201 +++ b/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c       2010-01-25 09:50:29.555686949 +0100
56202 @@ -3,7 +3,8 @@
56203  
56204  /* { dg-do assemble } */
56205  /* { dg-require-effective-target arm_neon_ok } */
56206 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56207 +/* { dg-options "-save-temps -O0" } */
56208 +/* { dg-add-options arm_neon } */
56209  
56210  #include "arm_neon.h"
56211  
56212 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c
56213 --- a/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c       2007-07-25 14:28:31.000000000 +0200
56214 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c       2010-01-25 09:50:29.555686949 +0100
56215 @@ -3,7 +3,8 @@
56216  
56217  /* { dg-do assemble } */
56218  /* { dg-require-effective-target arm_neon_ok } */
56219 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56220 +/* { dg-options "-save-temps -O0" } */
56221 +/* { dg-add-options arm_neon } */
56222  
56223  #include "arm_neon.h"
56224  
56225 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c
56226 --- a/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c       2007-07-25 14:28:31.000000000 +0200
56227 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c       2010-01-25 09:50:29.555686949 +0100
56228 @@ -3,7 +3,8 @@
56229  
56230  /* { dg-do assemble } */
56231  /* { dg-require-effective-target arm_neon_ok } */
56232 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56233 +/* { dg-options "-save-temps -O0" } */
56234 +/* { dg-add-options arm_neon } */
56235  
56236  #include "arm_neon.h"
56237  
56238 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c
56239 --- a/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c       2007-07-25 14:28:31.000000000 +0200
56240 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c       2010-01-25 09:50:29.555686949 +0100
56241 @@ -3,7 +3,8 @@
56242  
56243  /* { dg-do assemble } */
56244  /* { dg-require-effective-target arm_neon_ok } */
56245 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56246 +/* { dg-options "-save-temps -O0" } */
56247 +/* { dg-add-options arm_neon } */
56248  
56249  #include "arm_neon.h"
56250  
56251 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c
56252 --- a/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c       2007-07-25 14:28:31.000000000 +0200
56253 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c       2010-01-25 09:50:29.555686949 +0100
56254 @@ -3,7 +3,8 @@
56255  
56256  /* { dg-do assemble } */
56257  /* { dg-require-effective-target arm_neon_ok } */
56258 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56259 +/* { dg-options "-save-temps -O0" } */
56260 +/* { dg-add-options arm_neon } */
56261  
56262  #include "arm_neon.h"
56263  
56264 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c
56265 --- a/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c       2007-07-25 14:28:31.000000000 +0200
56266 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c       2010-01-25 09:50:29.555686949 +0100
56267 @@ -3,7 +3,8 @@
56268  
56269  /* { dg-do assemble } */
56270  /* { dg-require-effective-target arm_neon_ok } */
56271 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56272 +/* { dg-options "-save-temps -O0" } */
56273 +/* { dg-add-options arm_neon } */
56274  
56275  #include "arm_neon.h"
56276  
56277 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c
56278 --- a/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c       2007-07-25 14:28:31.000000000 +0200
56279 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c       2010-01-25 09:50:29.555686949 +0100
56280 @@ -3,7 +3,8 @@
56281  
56282  /* { dg-do assemble } */
56283  /* { dg-require-effective-target arm_neon_ok } */
56284 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56285 +/* { dg-options "-save-temps -O0" } */
56286 +/* { dg-add-options arm_neon } */
56287  
56288  #include "arm_neon.h"
56289  
56290 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c
56291 --- a/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c       2007-07-25 14:28:31.000000000 +0200
56292 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c       2010-01-25 09:50:29.555686949 +0100
56293 @@ -3,7 +3,8 @@
56294  
56295  /* { dg-do assemble } */
56296  /* { dg-require-effective-target arm_neon_ok } */
56297 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56298 +/* { dg-options "-save-temps -O0" } */
56299 +/* { dg-add-options arm_neon } */
56300  
56301  #include "arm_neon.h"
56302  
56303 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c
56304 --- a/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c       2007-07-25 14:28:31.000000000 +0200
56305 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c       2010-01-25 09:50:29.555686949 +0100
56306 @@ -3,7 +3,8 @@
56307  
56308  /* { dg-do assemble } */
56309  /* { dg-require-effective-target arm_neon_ok } */
56310 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56311 +/* { dg-options "-save-temps -O0" } */
56312 +/* { dg-add-options arm_neon } */
56313  
56314  #include "arm_neon.h"
56315  
56316 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c
56317 --- a/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c       2007-07-25 14:28:31.000000000 +0200
56318 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c       2010-01-25 09:50:29.555686949 +0100
56319 @@ -3,7 +3,8 @@
56320  
56321  /* { dg-do assemble } */
56322  /* { dg-require-effective-target arm_neon_ok } */
56323 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56324 +/* { dg-options "-save-temps -O0" } */
56325 +/* { dg-add-options arm_neon } */
56326  
56327  #include "arm_neon.h"
56328  
56329 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c
56330 --- a/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c       2007-07-25 14:28:31.000000000 +0200
56331 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c       2010-01-25 09:50:29.555686949 +0100
56332 @@ -3,7 +3,8 @@
56333  
56334  /* { dg-do assemble } */
56335  /* { dg-require-effective-target arm_neon_ok } */
56336 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56337 +/* { dg-options "-save-temps -O0" } */
56338 +/* { dg-add-options arm_neon } */
56339  
56340  #include "arm_neon.h"
56341  
56342 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c
56343 --- a/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c       2007-07-25 14:28:31.000000000 +0200
56344 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c       2010-01-25 09:50:29.555686949 +0100
56345 @@ -3,7 +3,8 @@
56346  
56347  /* { dg-do assemble } */
56348  /* { dg-require-effective-target arm_neon_ok } */
56349 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56350 +/* { dg-options "-save-temps -O0" } */
56351 +/* { dg-add-options arm_neon } */
56352  
56353  #include "arm_neon.h"
56354  
56355 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c
56356 --- a/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c       2007-07-25 14:28:31.000000000 +0200
56357 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c       2010-01-25 09:50:29.555686949 +0100
56358 @@ -3,7 +3,8 @@
56359  
56360  /* { dg-do assemble } */
56361  /* { dg-require-effective-target arm_neon_ok } */
56362 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56363 +/* { dg-options "-save-temps -O0" } */
56364 +/* { dg-add-options arm_neon } */
56365  
56366  #include "arm_neon.h"
56367  
56368 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c
56369 --- a/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c       2007-07-25 14:28:31.000000000 +0200
56370 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c       2010-01-25 09:50:29.555686949 +0100
56371 @@ -3,7 +3,8 @@
56372  
56373  /* { dg-do assemble } */
56374  /* { dg-require-effective-target arm_neon_ok } */
56375 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56376 +/* { dg-options "-save-temps -O0" } */
56377 +/* { dg-add-options arm_neon } */
56378  
56379  #include "arm_neon.h"
56380  
56381 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c
56382 --- a/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c       2007-07-25 14:28:31.000000000 +0200
56383 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c       2010-01-25 09:50:29.555686949 +0100
56384 @@ -3,7 +3,8 @@
56385  
56386  /* { dg-do assemble } */
56387  /* { dg-require-effective-target arm_neon_ok } */
56388 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56389 +/* { dg-options "-save-temps -O0" } */
56390 +/* { dg-add-options arm_neon } */
56391  
56392  #include "arm_neon.h"
56393  
56394 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c
56395 --- a/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c       2007-07-25 14:28:31.000000000 +0200
56396 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c       2010-01-25 09:50:29.555686949 +0100
56397 @@ -3,7 +3,8 @@
56398  
56399  /* { dg-do assemble } */
56400  /* { dg-require-effective-target arm_neon_ok } */
56401 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56402 +/* { dg-options "-save-temps -O0" } */
56403 +/* { dg-add-options arm_neon } */
56404  
56405  #include "arm_neon.h"
56406  
56407 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c
56408 --- a/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c       2007-07-25 14:28:31.000000000 +0200
56409 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c       2010-01-25 09:50:29.555686949 +0100
56410 @@ -3,7 +3,8 @@
56411  
56412  /* { dg-do assemble } */
56413  /* { dg-require-effective-target arm_neon_ok } */
56414 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56415 +/* { dg-options "-save-temps -O0" } */
56416 +/* { dg-add-options arm_neon } */
56417  
56418  #include "arm_neon.h"
56419  
56420 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c
56421 --- a/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c       2007-07-25 14:28:31.000000000 +0200
56422 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c       2010-01-25 09:50:29.555686949 +0100
56423 @@ -3,7 +3,8 @@
56424  
56425  /* { dg-do assemble } */
56426  /* { dg-require-effective-target arm_neon_ok } */
56427 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56428 +/* { dg-options "-save-temps -O0" } */
56429 +/* { dg-add-options arm_neon } */
56430  
56431  #include "arm_neon.h"
56432  
56433 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c
56434 --- a/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c       2007-07-25 14:28:31.000000000 +0200
56435 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c       2010-01-25 09:50:29.555686949 +0100
56436 @@ -3,7 +3,8 @@
56437  
56438  /* { dg-do assemble } */
56439  /* { dg-require-effective-target arm_neon_ok } */
56440 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56441 +/* { dg-options "-save-temps -O0" } */
56442 +/* { dg-add-options arm_neon } */
56443  
56444  #include "arm_neon.h"
56445  
56446 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c
56447 --- a/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c       2007-07-25 14:28:31.000000000 +0200
56448 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c       2010-01-25 09:50:29.555686949 +0100
56449 @@ -3,7 +3,8 @@
56450  
56451  /* { dg-do assemble } */
56452  /* { dg-require-effective-target arm_neon_ok } */
56453 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56454 +/* { dg-options "-save-temps -O0" } */
56455 +/* { dg-add-options arm_neon } */
56456  
56457  #include "arm_neon.h"
56458  
56459 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c
56460 --- a/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c       2007-07-25 14:28:31.000000000 +0200
56461 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c       2010-01-25 09:50:29.555686949 +0100
56462 @@ -3,7 +3,8 @@
56463  
56464  /* { dg-do assemble } */
56465  /* { dg-require-effective-target arm_neon_ok } */
56466 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56467 +/* { dg-options "-save-temps -O0" } */
56468 +/* { dg-add-options arm_neon } */
56469  
56470  #include "arm_neon.h"
56471  
56472 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c
56473 --- a/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c       2007-07-25 14:28:31.000000000 +0200
56474 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c       2010-01-25 09:50:29.555686949 +0100
56475 @@ -3,7 +3,8 @@
56476  
56477  /* { dg-do assemble } */
56478  /* { dg-require-effective-target arm_neon_ok } */
56479 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56480 +/* { dg-options "-save-temps -O0" } */
56481 +/* { dg-add-options arm_neon } */
56482  
56483  #include "arm_neon.h"
56484  
56485 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c
56486 --- a/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c       2007-07-25 14:28:31.000000000 +0200
56487 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c       2010-01-25 09:50:29.555686949 +0100
56488 @@ -3,7 +3,8 @@
56489  
56490  /* { dg-do assemble } */
56491  /* { dg-require-effective-target arm_neon_ok } */
56492 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56493 +/* { dg-options "-save-temps -O0" } */
56494 +/* { dg-add-options arm_neon } */
56495  
56496  #include "arm_neon.h"
56497  
56498 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c
56499 --- a/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c       2007-07-25 14:28:31.000000000 +0200
56500 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c       2010-01-25 09:50:29.555686949 +0100
56501 @@ -3,7 +3,8 @@
56502  
56503  /* { dg-do assemble } */
56504  /* { dg-require-effective-target arm_neon_ok } */
56505 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56506 +/* { dg-options "-save-temps -O0" } */
56507 +/* { dg-add-options arm_neon } */
56508  
56509  #include "arm_neon.h"
56510  
56511 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c
56512 --- a/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c       2007-07-25 14:28:31.000000000 +0200
56513 +++ b/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c       2010-01-25 09:50:29.555686949 +0100
56514 @@ -3,7 +3,8 @@
56515  
56516  /* { dg-do assemble } */
56517  /* { dg-require-effective-target arm_neon_ok } */
56518 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56519 +/* { dg-options "-save-temps -O0" } */
56520 +/* { dg-add-options arm_neon } */
56521  
56522  #include "arm_neon.h"
56523  
56524 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c b/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c
56525 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c       2007-07-25 14:28:31.000000000 +0200
56526 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c       2010-01-25 09:50:29.555686949 +0100
56527 @@ -3,7 +3,8 @@
56528  
56529  /* { dg-do assemble } */
56530  /* { dg-require-effective-target arm_neon_ok } */
56531 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56532 +/* { dg-options "-save-temps -O0" } */
56533 +/* { dg-add-options arm_neon } */
56534  
56535  #include "arm_neon.h"
56536  
56537 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c b/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c
56538 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c       2007-07-25 14:28:31.000000000 +0200
56539 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c       2010-01-25 09:50:29.555686949 +0100
56540 @@ -3,7 +3,8 @@
56541  
56542  /* { dg-do assemble } */
56543  /* { dg-require-effective-target arm_neon_ok } */
56544 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56545 +/* { dg-options "-save-temps -O0" } */
56546 +/* { dg-add-options arm_neon } */
56547  
56548  #include "arm_neon.h"
56549  
56550 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c b/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c
56551 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c        2007-07-25 14:28:31.000000000 +0200
56552 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c        2010-01-25 09:50:29.555686949 +0100
56553 @@ -3,7 +3,8 @@
56554  
56555  /* { dg-do assemble } */
56556  /* { dg-require-effective-target arm_neon_ok } */
56557 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56558 +/* { dg-options "-save-temps -O0" } */
56559 +/* { dg-add-options arm_neon } */
56560  
56561  #include "arm_neon.h"
56562  
56563 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c
56564 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c      2007-07-25 14:28:31.000000000 +0200
56565 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c      2010-01-25 09:50:29.555686949 +0100
56566 @@ -3,7 +3,8 @@
56567  
56568  /* { dg-do assemble } */
56569  /* { dg-require-effective-target arm_neon_ok } */
56570 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56571 +/* { dg-options "-save-temps -O0" } */
56572 +/* { dg-add-options arm_neon } */
56573  
56574  #include "arm_neon.h"
56575  
56576 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c
56577 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c      2007-07-25 14:28:31.000000000 +0200
56578 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c      2010-01-25 09:50:29.555686949 +0100
56579 @@ -3,7 +3,8 @@
56580  
56581  /* { dg-do assemble } */
56582  /* { dg-require-effective-target arm_neon_ok } */
56583 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56584 +/* { dg-options "-save-temps -O0" } */
56585 +/* { dg-add-options arm_neon } */
56586  
56587  #include "arm_neon.h"
56588  
56589 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c
56590 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c       2007-07-25 14:28:31.000000000 +0200
56591 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c       2010-01-25 09:50:29.555686949 +0100
56592 @@ -3,7 +3,8 @@
56593  
56594  /* { dg-do assemble } */
56595  /* { dg-require-effective-target arm_neon_ok } */
56596 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56597 +/* { dg-options "-save-temps -O0" } */
56598 +/* { dg-add-options arm_neon } */
56599  
56600  #include "arm_neon.h"
56601  
56602 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c
56603 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c      2007-07-25 14:28:31.000000000 +0200
56604 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c      2010-01-25 09:50:29.555686949 +0100
56605 @@ -3,7 +3,8 @@
56606  
56607  /* { dg-do assemble } */
56608  /* { dg-require-effective-target arm_neon_ok } */
56609 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56610 +/* { dg-options "-save-temps -O0" } */
56611 +/* { dg-add-options arm_neon } */
56612  
56613  #include "arm_neon.h"
56614  
56615 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c
56616 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c      2007-07-25 14:28:31.000000000 +0200
56617 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c      2010-01-25 09:50:29.555686949 +0100
56618 @@ -3,7 +3,8 @@
56619  
56620  /* { dg-do assemble } */
56621  /* { dg-require-effective-target arm_neon_ok } */
56622 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56623 +/* { dg-options "-save-temps -O0" } */
56624 +/* { dg-add-options arm_neon } */
56625  
56626  #include "arm_neon.h"
56627  
56628 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c
56629 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c       2007-07-25 14:28:31.000000000 +0200
56630 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c       2010-01-25 09:50:29.555686949 +0100
56631 @@ -3,7 +3,8 @@
56632  
56633  /* { dg-do assemble } */
56634  /* { dg-require-effective-target arm_neon_ok } */
56635 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56636 +/* { dg-options "-save-temps -O0" } */
56637 +/* { dg-add-options arm_neon } */
56638  
56639  #include "arm_neon.h"
56640  
56641 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c
56642 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c      2007-07-25 14:28:31.000000000 +0200
56643 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c      2010-01-25 09:50:29.555686949 +0100
56644 @@ -3,7 +3,8 @@
56645  
56646  /* { dg-do assemble } */
56647  /* { dg-require-effective-target arm_neon_ok } */
56648 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56649 +/* { dg-options "-save-temps -O0" } */
56650 +/* { dg-add-options arm_neon } */
56651  
56652  #include "arm_neon.h"
56653  
56654 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c
56655 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c      2007-07-25 14:28:31.000000000 +0200
56656 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c      2010-01-25 09:50:29.555686949 +0100
56657 @@ -3,7 +3,8 @@
56658  
56659  /* { dg-do assemble } */
56660  /* { dg-require-effective-target arm_neon_ok } */
56661 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56662 +/* { dg-options "-save-temps -O0" } */
56663 +/* { dg-add-options arm_neon } */
56664  
56665  #include "arm_neon.h"
56666  
56667 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c
56668 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c       2007-07-25 14:28:31.000000000 +0200
56669 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c       2010-01-25 09:50:29.555686949 +0100
56670 @@ -3,7 +3,8 @@
56671  
56672  /* { dg-do assemble } */
56673  /* { dg-require-effective-target arm_neon_ok } */
56674 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56675 +/* { dg-options "-save-temps -O0" } */
56676 +/* { dg-add-options arm_neon } */
56677  
56678  #include "arm_neon.h"
56679  
56680 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrns16.c b/gcc/testsuite/gcc.target/arm/neon/vtrns16.c
56681 --- a/gcc/testsuite/gcc.target/arm/neon/vtrns16.c       2007-07-25 14:28:31.000000000 +0200
56682 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrns16.c       2010-01-25 09:50:29.565686614 +0100
56683 @@ -3,7 +3,8 @@
56684  
56685  /* { dg-do assemble } */
56686  /* { dg-require-effective-target arm_neon_ok } */
56687 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56688 +/* { dg-options "-save-temps -O0" } */
56689 +/* { dg-add-options arm_neon } */
56690  
56691  #include "arm_neon.h"
56692  
56693 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrns32.c b/gcc/testsuite/gcc.target/arm/neon/vtrns32.c
56694 --- a/gcc/testsuite/gcc.target/arm/neon/vtrns32.c       2007-07-25 14:28:31.000000000 +0200
56695 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrns32.c       2010-01-25 09:50:29.565686614 +0100
56696 @@ -3,7 +3,8 @@
56697  
56698  /* { dg-do assemble } */
56699  /* { dg-require-effective-target arm_neon_ok } */
56700 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56701 +/* { dg-options "-save-temps -O0" } */
56702 +/* { dg-add-options arm_neon } */
56703  
56704  #include "arm_neon.h"
56705  
56706 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrns8.c b/gcc/testsuite/gcc.target/arm/neon/vtrns8.c
56707 --- a/gcc/testsuite/gcc.target/arm/neon/vtrns8.c        2007-07-25 14:28:31.000000000 +0200
56708 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrns8.c        2010-01-25 09:50:29.565686614 +0100
56709 @@ -3,7 +3,8 @@
56710  
56711  /* { dg-do assemble } */
56712  /* { dg-require-effective-target arm_neon_ok } */
56713 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56714 +/* { dg-options "-save-temps -O0" } */
56715 +/* { dg-add-options arm_neon } */
56716  
56717  #include "arm_neon.h"
56718  
56719 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c b/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c
56720 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c       2007-07-25 14:28:31.000000000 +0200
56721 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c       2010-01-25 09:50:29.565686614 +0100
56722 @@ -3,7 +3,8 @@
56723  
56724  /* { dg-do assemble } */
56725  /* { dg-require-effective-target arm_neon_ok } */
56726 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56727 +/* { dg-options "-save-temps -O0" } */
56728 +/* { dg-add-options arm_neon } */
56729  
56730  #include "arm_neon.h"
56731  
56732 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c b/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c
56733 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c       2007-07-25 14:28:31.000000000 +0200
56734 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c       2010-01-25 09:50:29.565686614 +0100
56735 @@ -3,7 +3,8 @@
56736  
56737  /* { dg-do assemble } */
56738  /* { dg-require-effective-target arm_neon_ok } */
56739 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56740 +/* { dg-options "-save-temps -O0" } */
56741 +/* { dg-add-options arm_neon } */
56742  
56743  #include "arm_neon.h"
56744  
56745 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c b/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c
56746 --- a/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c        2007-07-25 14:28:31.000000000 +0200
56747 +++ b/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c        2010-01-25 09:50:29.565686614 +0100
56748 @@ -3,7 +3,8 @@
56749  
56750  /* { dg-do assemble } */
56751  /* { dg-require-effective-target arm_neon_ok } */
56752 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56753 +/* { dg-options "-save-temps -O0" } */
56754 +/* { dg-add-options arm_neon } */
56755  
56756  #include "arm_neon.h"
56757  
56758 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstp8.c b/gcc/testsuite/gcc.target/arm/neon/vtstp8.c
56759 --- a/gcc/testsuite/gcc.target/arm/neon/vtstp8.c        2007-07-25 14:28:31.000000000 +0200
56760 +++ b/gcc/testsuite/gcc.target/arm/neon/vtstp8.c        2010-01-25 09:50:29.565686614 +0100
56761 @@ -3,7 +3,8 @@
56762  
56763  /* { dg-do assemble } */
56764  /* { dg-require-effective-target arm_neon_ok } */
56765 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56766 +/* { dg-options "-save-temps -O0" } */
56767 +/* { dg-add-options arm_neon } */
56768  
56769  #include "arm_neon.h"
56770  
56771 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c b/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c
56772 --- a/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c       2007-07-25 14:28:31.000000000 +0200
56773 +++ b/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c       2010-01-25 09:50:29.565686614 +0100
56774 @@ -3,7 +3,8 @@
56775  
56776  /* { dg-do assemble } */
56777  /* { dg-require-effective-target arm_neon_ok } */
56778 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56779 +/* { dg-options "-save-temps -O0" } */
56780 +/* { dg-add-options arm_neon } */
56781  
56782  #include "arm_neon.h"
56783  
56784 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c b/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c
56785 --- a/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c      2007-07-25 14:28:31.000000000 +0200
56786 +++ b/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c      2010-01-25 09:50:29.565686614 +0100
56787 @@ -3,7 +3,8 @@
56788  
56789  /* { dg-do assemble } */
56790  /* { dg-require-effective-target arm_neon_ok } */
56791 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56792 +/* { dg-options "-save-temps -O0" } */
56793 +/* { dg-add-options arm_neon } */
56794  
56795  #include "arm_neon.h"
56796  
56797 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c b/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c
56798 --- a/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c      2007-07-25 14:28:31.000000000 +0200
56799 +++ b/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c      2010-01-25 09:50:29.565686614 +0100
56800 @@ -3,7 +3,8 @@
56801  
56802  /* { dg-do assemble } */
56803  /* { dg-require-effective-target arm_neon_ok } */
56804 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56805 +/* { dg-options "-save-temps -O0" } */
56806 +/* { dg-add-options arm_neon } */
56807  
56808  #include "arm_neon.h"
56809  
56810 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c b/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c
56811 --- a/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c       2007-07-25 14:28:31.000000000 +0200
56812 +++ b/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c       2010-01-25 09:50:29.565686614 +0100
56813 @@ -3,7 +3,8 @@
56814  
56815  /* { dg-do assemble } */
56816  /* { dg-require-effective-target arm_neon_ok } */
56817 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56818 +/* { dg-options "-save-temps -O0" } */
56819 +/* { dg-add-options arm_neon } */
56820  
56821  #include "arm_neon.h"
56822  
56823 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c b/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c
56824 --- a/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c      2007-07-25 14:28:31.000000000 +0200
56825 +++ b/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c      2010-01-25 09:50:29.565686614 +0100
56826 @@ -3,7 +3,8 @@
56827  
56828  /* { dg-do assemble } */
56829  /* { dg-require-effective-target arm_neon_ok } */
56830 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56831 +/* { dg-options "-save-temps -O0" } */
56832 +/* { dg-add-options arm_neon } */
56833  
56834  #include "arm_neon.h"
56835  
56836 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c b/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c
56837 --- a/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c      2007-07-25 14:28:31.000000000 +0200
56838 +++ b/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c      2010-01-25 09:50:29.565686614 +0100
56839 @@ -3,7 +3,8 @@
56840  
56841  /* { dg-do assemble } */
56842  /* { dg-require-effective-target arm_neon_ok } */
56843 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56844 +/* { dg-options "-save-temps -O0" } */
56845 +/* { dg-add-options arm_neon } */
56846  
56847  #include "arm_neon.h"
56848  
56849 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c b/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c
56850 --- a/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c       2007-07-25 14:28:31.000000000 +0200
56851 +++ b/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c       2010-01-25 09:50:29.565686614 +0100
56852 @@ -3,7 +3,8 @@
56853  
56854  /* { dg-do assemble } */
56855  /* { dg-require-effective-target arm_neon_ok } */
56856 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56857 +/* { dg-options "-save-temps -O0" } */
56858 +/* { dg-add-options arm_neon } */
56859  
56860  #include "arm_neon.h"
56861  
56862 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtsts16.c b/gcc/testsuite/gcc.target/arm/neon/vtsts16.c
56863 --- a/gcc/testsuite/gcc.target/arm/neon/vtsts16.c       2007-07-25 14:28:31.000000000 +0200
56864 +++ b/gcc/testsuite/gcc.target/arm/neon/vtsts16.c       2010-01-25 09:50:29.565686614 +0100
56865 @@ -3,7 +3,8 @@
56866  
56867  /* { dg-do assemble } */
56868  /* { dg-require-effective-target arm_neon_ok } */
56869 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56870 +/* { dg-options "-save-temps -O0" } */
56871 +/* { dg-add-options arm_neon } */
56872  
56873  #include "arm_neon.h"
56874  
56875 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtsts32.c b/gcc/testsuite/gcc.target/arm/neon/vtsts32.c
56876 --- a/gcc/testsuite/gcc.target/arm/neon/vtsts32.c       2007-07-25 14:28:31.000000000 +0200
56877 +++ b/gcc/testsuite/gcc.target/arm/neon/vtsts32.c       2010-01-25 09:50:29.565686614 +0100
56878 @@ -3,7 +3,8 @@
56879  
56880  /* { dg-do assemble } */
56881  /* { dg-require-effective-target arm_neon_ok } */
56882 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56883 +/* { dg-options "-save-temps -O0" } */
56884 +/* { dg-add-options arm_neon } */
56885  
56886  #include "arm_neon.h"
56887  
56888 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtsts8.c b/gcc/testsuite/gcc.target/arm/neon/vtsts8.c
56889 --- a/gcc/testsuite/gcc.target/arm/neon/vtsts8.c        2007-07-25 14:28:31.000000000 +0200
56890 +++ b/gcc/testsuite/gcc.target/arm/neon/vtsts8.c        2010-01-25 09:50:29.565686614 +0100
56891 @@ -3,7 +3,8 @@
56892  
56893  /* { dg-do assemble } */
56894  /* { dg-require-effective-target arm_neon_ok } */
56895 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56896 +/* { dg-options "-save-temps -O0" } */
56897 +/* { dg-add-options arm_neon } */
56898  
56899  #include "arm_neon.h"
56900  
56901 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstu16.c b/gcc/testsuite/gcc.target/arm/neon/vtstu16.c
56902 --- a/gcc/testsuite/gcc.target/arm/neon/vtstu16.c       2007-07-25 14:28:31.000000000 +0200
56903 +++ b/gcc/testsuite/gcc.target/arm/neon/vtstu16.c       2010-01-25 09:50:29.565686614 +0100
56904 @@ -3,7 +3,8 @@
56905  
56906  /* { dg-do assemble } */
56907  /* { dg-require-effective-target arm_neon_ok } */
56908 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56909 +/* { dg-options "-save-temps -O0" } */
56910 +/* { dg-add-options arm_neon } */
56911  
56912  #include "arm_neon.h"
56913  
56914 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstu32.c b/gcc/testsuite/gcc.target/arm/neon/vtstu32.c
56915 --- a/gcc/testsuite/gcc.target/arm/neon/vtstu32.c       2007-07-25 14:28:31.000000000 +0200
56916 +++ b/gcc/testsuite/gcc.target/arm/neon/vtstu32.c       2010-01-25 09:50:29.565686614 +0100
56917 @@ -3,7 +3,8 @@
56918  
56919  /* { dg-do assemble } */
56920  /* { dg-require-effective-target arm_neon_ok } */
56921 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56922 +/* { dg-options "-save-temps -O0" } */
56923 +/* { dg-add-options arm_neon } */
56924  
56925  #include "arm_neon.h"
56926  
56927 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstu8.c b/gcc/testsuite/gcc.target/arm/neon/vtstu8.c
56928 --- a/gcc/testsuite/gcc.target/arm/neon/vtstu8.c        2007-07-25 14:28:31.000000000 +0200
56929 +++ b/gcc/testsuite/gcc.target/arm/neon/vtstu8.c        2010-01-25 09:50:29.565686614 +0100
56930 @@ -3,7 +3,8 @@
56931  
56932  /* { dg-do assemble } */
56933  /* { dg-require-effective-target arm_neon_ok } */
56934 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56935 +/* { dg-options "-save-temps -O0" } */
56936 +/* { dg-add-options arm_neon } */
56937  
56938  #include "arm_neon.h"
56939  
56940 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c b/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c
56941 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c       2007-07-25 14:28:31.000000000 +0200
56942 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c       2010-01-25 09:50:29.565686614 +0100
56943 @@ -3,7 +3,8 @@
56944  
56945  /* { dg-do assemble } */
56946  /* { dg-require-effective-target arm_neon_ok } */
56947 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56948 +/* { dg-options "-save-temps -O0" } */
56949 +/* { dg-add-options arm_neon } */
56950  
56951  #include "arm_neon.h"
56952  
56953 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c b/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c
56954 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c       2007-07-25 14:28:31.000000000 +0200
56955 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c       2010-01-25 09:50:29.565686614 +0100
56956 @@ -3,7 +3,8 @@
56957  
56958  /* { dg-do assemble } */
56959  /* { dg-require-effective-target arm_neon_ok } */
56960 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56961 +/* { dg-options "-save-temps -O0" } */
56962 +/* { dg-add-options arm_neon } */
56963  
56964  #include "arm_neon.h"
56965  
56966 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c b/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c
56967 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c        2007-07-25 14:28:31.000000000 +0200
56968 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c        2010-01-25 09:50:29.565686614 +0100
56969 @@ -3,7 +3,8 @@
56970  
56971  /* { dg-do assemble } */
56972  /* { dg-require-effective-target arm_neon_ok } */
56973 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56974 +/* { dg-options "-save-temps -O0" } */
56975 +/* { dg-add-options arm_neon } */
56976  
56977  #include "arm_neon.h"
56978  
56979 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c
56980 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c      2007-07-25 14:28:31.000000000 +0200
56981 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c      2010-01-25 09:50:29.565686614 +0100
56982 @@ -3,7 +3,8 @@
56983  
56984  /* { dg-do assemble } */
56985  /* { dg-require-effective-target arm_neon_ok } */
56986 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
56987 +/* { dg-options "-save-temps -O0" } */
56988 +/* { dg-add-options arm_neon } */
56989  
56990  #include "arm_neon.h"
56991  
56992 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c
56993 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c      2007-07-25 14:28:31.000000000 +0200
56994 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c      2010-01-25 09:50:29.565686614 +0100
56995 @@ -3,7 +3,8 @@
56996  
56997  /* { dg-do assemble } */
56998  /* { dg-require-effective-target arm_neon_ok } */
56999 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57000 +/* { dg-options "-save-temps -O0" } */
57001 +/* { dg-add-options arm_neon } */
57002  
57003  #include "arm_neon.h"
57004  
57005 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c
57006 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c       2007-07-25 14:28:31.000000000 +0200
57007 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c       2010-01-25 09:50:29.565686614 +0100
57008 @@ -3,7 +3,8 @@
57009  
57010  /* { dg-do assemble } */
57011  /* { dg-require-effective-target arm_neon_ok } */
57012 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57013 +/* { dg-options "-save-temps -O0" } */
57014 +/* { dg-add-options arm_neon } */
57015  
57016  #include "arm_neon.h"
57017  
57018 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c
57019 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c      2007-07-25 14:28:31.000000000 +0200
57020 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c      2010-01-25 09:50:29.565686614 +0100
57021 @@ -3,7 +3,8 @@
57022  
57023  /* { dg-do assemble } */
57024  /* { dg-require-effective-target arm_neon_ok } */
57025 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57026 +/* { dg-options "-save-temps -O0" } */
57027 +/* { dg-add-options arm_neon } */
57028  
57029  #include "arm_neon.h"
57030  
57031 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c
57032 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c      2007-07-25 14:28:31.000000000 +0200
57033 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c      2010-01-25 09:50:29.565686614 +0100
57034 @@ -3,7 +3,8 @@
57035  
57036  /* { dg-do assemble } */
57037  /* { dg-require-effective-target arm_neon_ok } */
57038 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57039 +/* { dg-options "-save-temps -O0" } */
57040 +/* { dg-add-options arm_neon } */
57041  
57042  #include "arm_neon.h"
57043  
57044 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c
57045 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c       2007-07-25 14:28:31.000000000 +0200
57046 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c       2010-01-25 09:50:29.565686614 +0100
57047 @@ -3,7 +3,8 @@
57048  
57049  /* { dg-do assemble } */
57050  /* { dg-require-effective-target arm_neon_ok } */
57051 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57052 +/* { dg-options "-save-temps -O0" } */
57053 +/* { dg-add-options arm_neon } */
57054  
57055  #include "arm_neon.h"
57056  
57057 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c
57058 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c      2007-07-25 14:28:31.000000000 +0200
57059 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c      2010-01-25 09:50:29.565686614 +0100
57060 @@ -3,7 +3,8 @@
57061  
57062  /* { dg-do assemble } */
57063  /* { dg-require-effective-target arm_neon_ok } */
57064 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57065 +/* { dg-options "-save-temps -O0" } */
57066 +/* { dg-add-options arm_neon } */
57067  
57068  #include "arm_neon.h"
57069  
57070 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c
57071 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c      2007-07-25 14:28:31.000000000 +0200
57072 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c      2010-01-25 09:50:29.565686614 +0100
57073 @@ -3,7 +3,8 @@
57074  
57075  /* { dg-do assemble } */
57076  /* { dg-require-effective-target arm_neon_ok } */
57077 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57078 +/* { dg-options "-save-temps -O0" } */
57079 +/* { dg-add-options arm_neon } */
57080  
57081  #include "arm_neon.h"
57082  
57083 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c
57084 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c       2007-07-25 14:28:31.000000000 +0200
57085 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c       2010-01-25 09:50:29.565686614 +0100
57086 @@ -3,7 +3,8 @@
57087  
57088  /* { dg-do assemble } */
57089  /* { dg-require-effective-target arm_neon_ok } */
57090 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57091 +/* { dg-options "-save-temps -O0" } */
57092 +/* { dg-add-options arm_neon } */
57093  
57094  #include "arm_neon.h"
57095  
57096 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzps16.c b/gcc/testsuite/gcc.target/arm/neon/vuzps16.c
57097 --- a/gcc/testsuite/gcc.target/arm/neon/vuzps16.c       2007-07-25 14:28:31.000000000 +0200
57098 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzps16.c       2010-01-25 09:50:29.565686614 +0100
57099 @@ -3,7 +3,8 @@
57100  
57101  /* { dg-do assemble } */
57102  /* { dg-require-effective-target arm_neon_ok } */
57103 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57104 +/* { dg-options "-save-temps -O0" } */
57105 +/* { dg-add-options arm_neon } */
57106  
57107  #include "arm_neon.h"
57108  
57109 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzps32.c b/gcc/testsuite/gcc.target/arm/neon/vuzps32.c
57110 --- a/gcc/testsuite/gcc.target/arm/neon/vuzps32.c       2007-07-25 14:28:31.000000000 +0200
57111 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzps32.c       2010-01-25 09:50:29.565686614 +0100
57112 @@ -3,7 +3,8 @@
57113  
57114  /* { dg-do assemble } */
57115  /* { dg-require-effective-target arm_neon_ok } */
57116 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57117 +/* { dg-options "-save-temps -O0" } */
57118 +/* { dg-add-options arm_neon } */
57119  
57120  #include "arm_neon.h"
57121  
57122 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzps8.c b/gcc/testsuite/gcc.target/arm/neon/vuzps8.c
57123 --- a/gcc/testsuite/gcc.target/arm/neon/vuzps8.c        2007-07-25 14:28:31.000000000 +0200
57124 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzps8.c        2010-01-25 09:50:29.565686614 +0100
57125 @@ -3,7 +3,8 @@
57126  
57127  /* { dg-do assemble } */
57128  /* { dg-require-effective-target arm_neon_ok } */
57129 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57130 +/* { dg-options "-save-temps -O0" } */
57131 +/* { dg-add-options arm_neon } */
57132  
57133  #include "arm_neon.h"
57134  
57135 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c b/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c
57136 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c       2007-07-25 14:28:31.000000000 +0200
57137 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c       2010-01-25 09:50:29.565686614 +0100
57138 @@ -3,7 +3,8 @@
57139  
57140  /* { dg-do assemble } */
57141  /* { dg-require-effective-target arm_neon_ok } */
57142 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57143 +/* { dg-options "-save-temps -O0" } */
57144 +/* { dg-add-options arm_neon } */
57145  
57146  #include "arm_neon.h"
57147  
57148 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c b/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c
57149 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c       2007-07-25 14:28:31.000000000 +0200
57150 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c       2010-01-25 09:50:29.565686614 +0100
57151 @@ -3,7 +3,8 @@
57152  
57153  /* { dg-do assemble } */
57154  /* { dg-require-effective-target arm_neon_ok } */
57155 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57156 +/* { dg-options "-save-temps -O0" } */
57157 +/* { dg-add-options arm_neon } */
57158  
57159  #include "arm_neon.h"
57160  
57161 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c b/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c
57162 --- a/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c        2007-07-25 14:28:31.000000000 +0200
57163 +++ b/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c        2010-01-25 09:50:29.565686614 +0100
57164 @@ -3,7 +3,8 @@
57165  
57166  /* { dg-do assemble } */
57167  /* { dg-require-effective-target arm_neon_ok } */
57168 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57169 +/* { dg-options "-save-temps -O0" } */
57170 +/* { dg-add-options arm_neon } */
57171  
57172  #include "arm_neon.h"
57173  
57174 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipf32.c b/gcc/testsuite/gcc.target/arm/neon/vzipf32.c
57175 --- a/gcc/testsuite/gcc.target/arm/neon/vzipf32.c       2007-07-25 14:28:31.000000000 +0200
57176 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipf32.c       2010-01-25 09:50:29.565686614 +0100
57177 @@ -3,7 +3,8 @@
57178  
57179  /* { dg-do assemble } */
57180  /* { dg-require-effective-target arm_neon_ok } */
57181 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57182 +/* { dg-options "-save-temps -O0" } */
57183 +/* { dg-add-options arm_neon } */
57184  
57185  #include "arm_neon.h"
57186  
57187 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipp16.c b/gcc/testsuite/gcc.target/arm/neon/vzipp16.c
57188 --- a/gcc/testsuite/gcc.target/arm/neon/vzipp16.c       2007-07-25 14:28:31.000000000 +0200
57189 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipp16.c       2010-01-25 09:50:29.565686614 +0100
57190 @@ -3,7 +3,8 @@
57191  
57192  /* { dg-do assemble } */
57193  /* { dg-require-effective-target arm_neon_ok } */
57194 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57195 +/* { dg-options "-save-temps -O0" } */
57196 +/* { dg-add-options arm_neon } */
57197  
57198  #include "arm_neon.h"
57199  
57200 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipp8.c b/gcc/testsuite/gcc.target/arm/neon/vzipp8.c
57201 --- a/gcc/testsuite/gcc.target/arm/neon/vzipp8.c        2007-07-25 14:28:31.000000000 +0200
57202 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipp8.c        2010-01-25 09:50:29.565686614 +0100
57203 @@ -3,7 +3,8 @@
57204  
57205  /* { dg-do assemble } */
57206  /* { dg-require-effective-target arm_neon_ok } */
57207 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57208 +/* { dg-options "-save-temps -O0" } */
57209 +/* { dg-add-options arm_neon } */
57210  
57211  #include "arm_neon.h"
57212  
57213 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c b/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c
57214 --- a/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c      2007-07-25 14:28:31.000000000 +0200
57215 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c      2010-01-25 09:50:29.565686614 +0100
57216 @@ -3,7 +3,8 @@
57217  
57218  /* { dg-do assemble } */
57219  /* { dg-require-effective-target arm_neon_ok } */
57220 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57221 +/* { dg-options "-save-temps -O0" } */
57222 +/* { dg-add-options arm_neon } */
57223  
57224  #include "arm_neon.h"
57225  
57226 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c b/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c
57227 --- a/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c      2007-07-25 14:28:31.000000000 +0200
57228 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c      2010-01-25 09:50:29.565686614 +0100
57229 @@ -3,7 +3,8 @@
57230  
57231  /* { dg-do assemble } */
57232  /* { dg-require-effective-target arm_neon_ok } */
57233 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57234 +/* { dg-options "-save-temps -O0" } */
57235 +/* { dg-add-options arm_neon } */
57236  
57237  #include "arm_neon.h"
57238  
57239 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c b/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c
57240 --- a/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c       2007-07-25 14:28:31.000000000 +0200
57241 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c       2010-01-25 09:50:29.565686614 +0100
57242 @@ -3,7 +3,8 @@
57243  
57244  /* { dg-do assemble } */
57245  /* { dg-require-effective-target arm_neon_ok } */
57246 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57247 +/* { dg-options "-save-temps -O0" } */
57248 +/* { dg-add-options arm_neon } */
57249  
57250  #include "arm_neon.h"
57251  
57252 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c b/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c
57253 --- a/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c      2007-07-25 14:28:31.000000000 +0200
57254 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c      2010-01-25 09:50:29.565686614 +0100
57255 @@ -3,7 +3,8 @@
57256  
57257  /* { dg-do assemble } */
57258  /* { dg-require-effective-target arm_neon_ok } */
57259 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57260 +/* { dg-options "-save-temps -O0" } */
57261 +/* { dg-add-options arm_neon } */
57262  
57263  #include "arm_neon.h"
57264  
57265 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c b/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c
57266 --- a/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c      2007-07-25 14:28:31.000000000 +0200
57267 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c      2010-01-25 09:50:29.565686614 +0100
57268 @@ -3,7 +3,8 @@
57269  
57270  /* { dg-do assemble } */
57271  /* { dg-require-effective-target arm_neon_ok } */
57272 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57273 +/* { dg-options "-save-temps -O0" } */
57274 +/* { dg-add-options arm_neon } */
57275  
57276  #include "arm_neon.h"
57277  
57278 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c b/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c
57279 --- a/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c       2007-07-25 14:28:31.000000000 +0200
57280 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c       2010-01-25 09:50:29.565686614 +0100
57281 @@ -3,7 +3,8 @@
57282  
57283  /* { dg-do assemble } */
57284  /* { dg-require-effective-target arm_neon_ok } */
57285 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57286 +/* { dg-options "-save-temps -O0" } */
57287 +/* { dg-add-options arm_neon } */
57288  
57289  #include "arm_neon.h"
57290  
57291 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c b/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c
57292 --- a/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c      2007-07-25 14:28:31.000000000 +0200
57293 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c      2010-01-25 09:50:29.565686614 +0100
57294 @@ -3,7 +3,8 @@
57295  
57296  /* { dg-do assemble } */
57297  /* { dg-require-effective-target arm_neon_ok } */
57298 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57299 +/* { dg-options "-save-temps -O0" } */
57300 +/* { dg-add-options arm_neon } */
57301  
57302  #include "arm_neon.h"
57303  
57304 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c b/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c
57305 --- a/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c      2007-07-25 14:28:31.000000000 +0200
57306 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c      2010-01-25 09:50:29.565686614 +0100
57307 @@ -3,7 +3,8 @@
57308  
57309  /* { dg-do assemble } */
57310  /* { dg-require-effective-target arm_neon_ok } */
57311 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57312 +/* { dg-options "-save-temps -O0" } */
57313 +/* { dg-add-options arm_neon } */
57314  
57315  #include "arm_neon.h"
57316  
57317 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c b/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c
57318 --- a/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c       2007-07-25 14:28:31.000000000 +0200
57319 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c       2010-01-25 09:50:29.565686614 +0100
57320 @@ -3,7 +3,8 @@
57321  
57322  /* { dg-do assemble } */
57323  /* { dg-require-effective-target arm_neon_ok } */
57324 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57325 +/* { dg-options "-save-temps -O0" } */
57326 +/* { dg-add-options arm_neon } */
57327  
57328  #include "arm_neon.h"
57329  
57330 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzips16.c b/gcc/testsuite/gcc.target/arm/neon/vzips16.c
57331 --- a/gcc/testsuite/gcc.target/arm/neon/vzips16.c       2007-07-25 14:28:31.000000000 +0200
57332 +++ b/gcc/testsuite/gcc.target/arm/neon/vzips16.c       2010-01-25 09:50:29.565686614 +0100
57333 @@ -3,7 +3,8 @@
57334  
57335  /* { dg-do assemble } */
57336  /* { dg-require-effective-target arm_neon_ok } */
57337 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57338 +/* { dg-options "-save-temps -O0" } */
57339 +/* { dg-add-options arm_neon } */
57340  
57341  #include "arm_neon.h"
57342  
57343 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzips32.c b/gcc/testsuite/gcc.target/arm/neon/vzips32.c
57344 --- a/gcc/testsuite/gcc.target/arm/neon/vzips32.c       2007-07-25 14:28:31.000000000 +0200
57345 +++ b/gcc/testsuite/gcc.target/arm/neon/vzips32.c       2010-01-25 09:50:29.565686614 +0100
57346 @@ -3,7 +3,8 @@
57347  
57348  /* { dg-do assemble } */
57349  /* { dg-require-effective-target arm_neon_ok } */
57350 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57351 +/* { dg-options "-save-temps -O0" } */
57352 +/* { dg-add-options arm_neon } */
57353  
57354  #include "arm_neon.h"
57355  
57356 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzips8.c b/gcc/testsuite/gcc.target/arm/neon/vzips8.c
57357 --- a/gcc/testsuite/gcc.target/arm/neon/vzips8.c        2007-07-25 14:28:31.000000000 +0200
57358 +++ b/gcc/testsuite/gcc.target/arm/neon/vzips8.c        2010-01-25 09:50:29.565686614 +0100
57359 @@ -3,7 +3,8 @@
57360  
57361  /* { dg-do assemble } */
57362  /* { dg-require-effective-target arm_neon_ok } */
57363 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57364 +/* { dg-options "-save-temps -O0" } */
57365 +/* { dg-add-options arm_neon } */
57366  
57367  #include "arm_neon.h"
57368  
57369 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipu16.c b/gcc/testsuite/gcc.target/arm/neon/vzipu16.c
57370 --- a/gcc/testsuite/gcc.target/arm/neon/vzipu16.c       2007-07-25 14:28:31.000000000 +0200
57371 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipu16.c       2010-01-25 09:50:29.565686614 +0100
57372 @@ -3,7 +3,8 @@
57373  
57374  /* { dg-do assemble } */
57375  /* { dg-require-effective-target arm_neon_ok } */
57376 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57377 +/* { dg-options "-save-temps -O0" } */
57378 +/* { dg-add-options arm_neon } */
57379  
57380  #include "arm_neon.h"
57381  
57382 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipu32.c b/gcc/testsuite/gcc.target/arm/neon/vzipu32.c
57383 --- a/gcc/testsuite/gcc.target/arm/neon/vzipu32.c       2007-07-25 14:28:31.000000000 +0200
57384 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipu32.c       2010-01-25 09:50:29.565686614 +0100
57385 @@ -3,7 +3,8 @@
57386  
57387  /* { dg-do assemble } */
57388  /* { dg-require-effective-target arm_neon_ok } */
57389 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57390 +/* { dg-options "-save-temps -O0" } */
57391 +/* { dg-add-options arm_neon } */
57392  
57393  #include "arm_neon.h"
57394  
57395 diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipu8.c b/gcc/testsuite/gcc.target/arm/neon/vzipu8.c
57396 --- a/gcc/testsuite/gcc.target/arm/neon/vzipu8.c        2007-07-25 14:28:31.000000000 +0200
57397 +++ b/gcc/testsuite/gcc.target/arm/neon/vzipu8.c        2010-01-25 09:50:29.565686614 +0100
57398 @@ -3,7 +3,8 @@
57399  
57400  /* { dg-do assemble } */
57401  /* { dg-require-effective-target arm_neon_ok } */
57402 -/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
57403 +/* { dg-options "-save-temps -O0" } */
57404 +/* { dg-add-options arm_neon } */
57405  
57406  #include "arm_neon.h"
57407  
57408 diff -Nur a/gcc/testsuite/gcc.target/arm/neon-cond-1.c b/gcc/testsuite/gcc.target/arm/neon-cond-1.c
57409 --- a/gcc/testsuite/gcc.target/arm/neon-cond-1.c        2009-01-27 17:14:13.000000000 +0100
57410 +++ b/gcc/testsuite/gcc.target/arm/neon-cond-1.c        2010-01-25 09:50:29.565686614 +0100
57411 @@ -1,6 +1,7 @@
57412  /* { dg-do run } */
57413  /* { dg-require-effective-target arm_neon_hw } */
57414 -/* { dg-options "-O2 -mfpu=neon -mfloat-abi=softfp" } */
57415 +/* { dg-options "-O2" } */
57416 +/* { dg-add-options arm_neon } */
57417  /* Check that the arm_final_prescan_insn ccfsm code does not try to
57418   * conditionally execute NEON instructions.  */
57419  #include <arm_neon.h>
57420 diff -Nur a/gcc/testsuite/gcc.target/arm/neon-modes-1.c b/gcc/testsuite/gcc.target/arm/neon-modes-1.c
57421 --- a/gcc/testsuite/gcc.target/arm/neon-modes-1.c       1970-01-01 01:00:00.000000000 +0100
57422 +++ b/gcc/testsuite/gcc.target/arm/neon-modes-1.c       2010-01-25 09:50:29.565686614 +0100
57423 @@ -0,0 +1,14 @@
57424 +/* { dg-do compile } */
57425 +/* { dg-require-effective-target arm_neon_ok } */
57426 +/* { dg-options "-O1" } */
57427 +/* { dg-add-options arm_neon } */
57428 +
57429 +#include <arm_neon.h>
57430 +
57431 +void neon_internal_error(int *dst, int *src)
57432 +{
57433 +  uint16x8x4_t sval;
57434 +
57435 +  sval = vld4q_u16((void *)src);
57436 +  vst4q_u16((void *)dst,sval);
57437 +}
57438 diff -Nur a/gcc/testsuite/gcc.target/arm/neon-vmla-1.c b/gcc/testsuite/gcc.target/arm/neon-vmla-1.c
57439 --- a/gcc/testsuite/gcc.target/arm/neon-vmla-1.c        1970-01-01 01:00:00.000000000 +0100
57440 +++ b/gcc/testsuite/gcc.target/arm/neon-vmla-1.c        2010-01-25 09:50:29.565686614 +0100
57441 @@ -0,0 +1,11 @@
57442 +/* { dg-require-effective-target arm_neon_hw } */
57443 +/* { dg-options "-O2 -ftree-vectorize" } */
57444 +/* { dg-add-options arm_neon } */
57445 +/* { dg-final { scan-assembler "vmla\\.f32" } } */
57446 +
57447 +/* Verify that VMLA is used.  */
57448 +void f1(int n, float a, float x[], float y[]) {
57449 +  int i;
57450 +  for (i = 0; i < n; ++i)
57451 +    y[i] = a * x[i] + y[i];
57452 +}
57453 diff -Nur a/gcc/testsuite/gcc.target/arm/neon-vmls-1.c b/gcc/testsuite/gcc.target/arm/neon-vmls-1.c
57454 --- a/gcc/testsuite/gcc.target/arm/neon-vmls-1.c        1970-01-01 01:00:00.000000000 +0100
57455 +++ b/gcc/testsuite/gcc.target/arm/neon-vmls-1.c        2010-01-25 09:50:29.565686614 +0100
57456 @@ -0,0 +1,11 @@
57457 +/* { dg-require-effective-target arm_neon_hw } */
57458 +/* { dg-options "-O2 -ftree-vectorize" } */
57459 +/* { dg-add-options arm_neon } */
57460 +/* { dg-final { scan-assembler "vmls\\.f32" } } */
57461 +
57462 +/* Verify that VMLS is used.  */
57463 +void f1(int n, float a, float x[], float y[]) {
57464 +  int i;
57465 +  for (i = 0; i < n; ++i)
57466 +    y[i] = y[i] - a * x[i];
57467 +}
57468 diff -Nur a/gcc/testsuite/gcc.target/arm/pr40482.c b/gcc/testsuite/gcc.target/arm/pr40482.c
57469 --- a/gcc/testsuite/gcc.target/arm/pr40482.c    1970-01-01 01:00:00.000000000 +0100
57470 +++ b/gcc/testsuite/gcc.target/arm/pr40482.c    2010-01-25 09:50:29.565686614 +0100
57471 @@ -0,0 +1,7 @@
57472 +/* { dg-options "-mthumb -Os" }  */
57473 +/* { dg-final { scan-assembler-not "ldr" } } */
57474 +
57475 +unsigned int foo (unsigned int i )
57476 +{
57477 +  return i | 0xff000000;
57478 +}
57479 diff -Nur a/gcc/testsuite/gcc.target/arm/thumb2-mul-space-2.c b/gcc/testsuite/gcc.target/arm/thumb2-mul-space-2.c
57480 --- a/gcc/testsuite/gcc.target/arm/thumb2-mul-space-2.c 1970-01-01 01:00:00.000000000 +0100
57481 +++ b/gcc/testsuite/gcc.target/arm/thumb2-mul-space-2.c 2010-01-25 09:50:29.565686614 +0100
57482 @@ -0,0 +1,15 @@
57483 +/* In Thumb-2 mode, when optimizing for size, generate a "muls"
57484 +   instruction and use the resulting condition flags rather than a
57485 +   separate compare instruction.  */
57486 +/* { dg-options "-mthumb -Os" }  */
57487 +/* { dg-require-effective-target arm_thumb2_ok } */
57488 +/* { dg-final { scan-assembler "muls" } } */
57489 +/* { dg-final { scan-assembler-not "cmp" } } */
57490 +
57491 +int x;
57492 +
57493 +void f(int i, int j)
57494 +{
57495 +  if (i * j < 0)
57496 +    x = 1;
57497 +}
57498 diff -Nur a/gcc/testsuite/gcc.target/arm/thumb2-mul-space-3.c b/gcc/testsuite/gcc.target/arm/thumb2-mul-space-3.c
57499 --- a/gcc/testsuite/gcc.target/arm/thumb2-mul-space-3.c 1970-01-01 01:00:00.000000000 +0100
57500 +++ b/gcc/testsuite/gcc.target/arm/thumb2-mul-space-3.c 2010-01-25 09:50:29.565686614 +0100
57501 @@ -0,0 +1,17 @@
57502 +/* In Thumb-2 mode, when optimizing for size, generate a "muls"
57503 +   instruction and use the resulting condition flags rather than a
57504 +   separate compare instruction.  */
57505 +/* { dg-options "-mthumb -Os" }  */
57506 +/* { dg-require-effective-target arm_thumb2_ok } */
57507 +/* { dg-final { scan-assembler "muls" } } */
57508 +/* { dg-final { scan-assembler-not "cmp" } } */
57509 +
57510 +int x;
57511 +
57512 +int f(int i, int j)
57513 +{
57514 +  i = i * j;
57515 +  if (i < 0)
57516 +    x = 1;
57517 +  return i;
57518 +}
57519 diff -Nur a/gcc/testsuite/gcc.target/arm/thumb2-mul-space.c b/gcc/testsuite/gcc.target/arm/thumb2-mul-space.c
57520 --- a/gcc/testsuite/gcc.target/arm/thumb2-mul-space.c   1970-01-01 01:00:00.000000000 +0100
57521 +++ b/gcc/testsuite/gcc.target/arm/thumb2-mul-space.c   2010-01-25 09:50:29.565686614 +0100
57522 @@ -0,0 +1,10 @@
57523 +/* Use 16-bit multiply instruction in Thumb-2 mode when optimizing for
57524 +   size.  */
57525 +/* { dg-options "-mthumb -Os" }  */
57526 +/* { dg-require-effective-target arm_thumb2_ok } */
57527 +/* { dg-final { scan-assembler "muls" } } */
57528 +
57529 +int f(int i, int j) 
57530 +{
57531 +  return i * j;
57532 +}
57533 diff -Nur a/gcc/testsuite/gcc.target/arm/thumb2-mul-speed.c b/gcc/testsuite/gcc.target/arm/thumb2-mul-speed.c
57534 --- a/gcc/testsuite/gcc.target/arm/thumb2-mul-speed.c   1970-01-01 01:00:00.000000000 +0100
57535 +++ b/gcc/testsuite/gcc.target/arm/thumb2-mul-speed.c   2010-01-25 09:50:29.565686614 +0100
57536 @@ -0,0 +1,27 @@
57537 +/* Do not use 16-bit multiply instructions in Thumb-2 mode when
57538 +   optimizing for speed.  */
57539 +/* { dg-options "-mthumb -O2" }  */
57540 +/* { dg-require-effective-target arm_thumb2_ok } */
57541 +/* { dg-final { scan-assembler-not "muls" } } */
57542 +
57543 +int f(int i, int j) 
57544 +{
57545 +  return i * j;
57546 +}
57547 +
57548 +int x;
57549 +
57550 +void g(int i, int j)
57551 +{
57552 +  if (i * j < 0)
57553 +    x = 1;
57554 +}
57555 +
57556 +int h(int i, int j)
57557 +{
57558 +  i = i * j;
57559 +  if (i < 0)
57560 +    x = 1;
57561 +  return i;
57562 +}
57563 +
57564 diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c b/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c
57565 --- a/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c 1970-01-01 01:00:00.000000000 +0100
57566 +++ b/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c 2010-01-25 09:50:29.565686614 +0100
57567 @@ -0,0 +1,15 @@
57568 +/* { dg-do compile } */
57569 +/* { dg-require-effective-target arm_vfp_ok } */
57570 +/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
57571 +
57572 +extern void bar (double);
57573 +
57574 +void
57575 +foo (double *p, double a, int n)
57576 +{
57577 +  do
57578 +    bar (*--p + a);
57579 +  while (n--);
57580 +}
57581 +
57582 +/* { dg-final { scan-assembler "fldmdbd" } } */
57583 diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c b/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c
57584 --- a/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c 1970-01-01 01:00:00.000000000 +0100
57585 +++ b/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c 2010-01-25 09:50:29.565686614 +0100
57586 @@ -0,0 +1,15 @@
57587 +/* { dg-do compile } */
57588 +/* { dg-require-effective-target arm_vfp_ok } */
57589 +/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
57590 +
57591 +extern void baz (float);
57592 +
57593 +void
57594 +foo (float *p, float a, int n)
57595 +{
57596 +  do
57597 +    bar (*--p + a);
57598 +  while (n--);
57599 +}
57600 +
57601 +/* { dg-final { scan-assembler "fldmdbs" } } */
57602 diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c b/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c
57603 --- a/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c 1970-01-01 01:00:00.000000000 +0100
57604 +++ b/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c 2010-01-25 09:50:29.565686614 +0100
57605 @@ -0,0 +1,15 @@
57606 +/* { dg-do compile } */
57607 +/* { dg-require-effective-target arm_vfp_ok } */
57608 +/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
57609 +
57610 +extern void bar (double);
57611 +
57612 +void
57613 +foo (double *p, double a, int n)
57614 +{
57615 +  do
57616 +    bar (*p++ + a);
57617 +  while (n--);
57618 +}
57619 +
57620 +/* { dg-final { scan-assembler "fldmiad" } } */
57621 diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-ldmias.c b/gcc/testsuite/gcc.target/arm/vfp-ldmias.c
57622 --- a/gcc/testsuite/gcc.target/arm/vfp-ldmias.c 1970-01-01 01:00:00.000000000 +0100
57623 +++ b/gcc/testsuite/gcc.target/arm/vfp-ldmias.c 2010-01-25 09:50:29.565686614 +0100
57624 @@ -0,0 +1,15 @@
57625 +/* { dg-do compile } */
57626 +/* { dg-require-effective-target arm_vfp_ok } */
57627 +/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
57628 +
57629 +extern void baz (float);
57630 +
57631 +void
57632 +foo (float *p, float a, int n)
57633 +{
57634 +  do
57635 +    bar (*p++ + a);
57636 +  while (n--);
57637 +}
57638 +
57639 +/* { dg-final { scan-assembler "fldmias" } } */
57640 diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c b/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c
57641 --- a/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c 1970-01-01 01:00:00.000000000 +0100
57642 +++ b/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c 2010-01-25 09:50:29.565686614 +0100
57643 @@ -0,0 +1,14 @@
57644 +/* { dg-do compile } */
57645 +/* { dg-require-effective-target arm_vfp_ok } */
57646 +/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
57647 +
57648 +void
57649 +foo (double *p, double a, double b, int n)
57650 +{
57651 +  double c = a + b;
57652 +  do
57653 +    *--p = c;
57654 +  while (n--);
57655 +}
57656 +
57657 +/* { dg-final { scan-assembler "fstmdbd" } } */
57658 diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c b/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c
57659 --- a/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c 1970-01-01 01:00:00.000000000 +0100
57660 +++ b/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c 2010-01-25 09:50:29.565686614 +0100
57661 @@ -0,0 +1,14 @@
57662 +/* { dg-do compile } */
57663 +/* { dg-require-effective-target arm_vfp_ok } */
57664 +/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
57665 +
57666 +void
57667 +foo (float *p, float a, float b, int n)
57668 +{
57669 +  float c = a + b;
57670 +  do
57671 +    *--p = c;
57672 +  while (n--);
57673 +}
57674 +
57675 +/* { dg-final { scan-assembler "fstmdbs" } } */
57676 diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-stmiad.c b/gcc/testsuite/gcc.target/arm/vfp-stmiad.c
57677 --- a/gcc/testsuite/gcc.target/arm/vfp-stmiad.c 1970-01-01 01:00:00.000000000 +0100
57678 +++ b/gcc/testsuite/gcc.target/arm/vfp-stmiad.c 2010-01-25 09:50:29.565686614 +0100
57679 @@ -0,0 +1,14 @@
57680 +/* { dg-do compile } */
57681 +/* { dg-require-effective-target arm_vfp_ok } */
57682 +/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
57683 +
57684 +void
57685 +foo (double *p, double a, double b, int n)
57686 +{
57687 +  double c = a + b;
57688 +  do
57689 +    *p++ = c;
57690 +  while (n--);
57691 +}
57692 +
57693 +/* { dg-final { scan-assembler "fstmiad" } } */
57694 diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-stmias.c b/gcc/testsuite/gcc.target/arm/vfp-stmias.c
57695 --- a/gcc/testsuite/gcc.target/arm/vfp-stmias.c 1970-01-01 01:00:00.000000000 +0100
57696 +++ b/gcc/testsuite/gcc.target/arm/vfp-stmias.c 2010-01-25 09:50:29.565686614 +0100
57697 @@ -0,0 +1,14 @@
57698 +/* { dg-do compile } */
57699 +/* { dg-require-effective-target arm_vfp_ok } */
57700 +/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
57701 +
57702 +void
57703 +foo (float *p, float a, float b, int n)
57704 +{
57705 +  float c = a + b;
57706 +  do
57707 +    *p++ = c;
57708 +  while (n--);
57709 +}
57710 +
57711 +/* { dg-final { scan-assembler "fstmias" } } */
57712 diff -Nur a/gcc/testsuite/gcc.target/i386/387-1.c b/gcc/testsuite/gcc.target/i386/387-1.c
57713 --- a/gcc/testsuite/gcc.target/i386/387-1.c     2007-08-22 11:59:14.000000000 +0200
57714 +++ b/gcc/testsuite/gcc.target/i386/387-1.c     2010-01-25 09:50:29.565686614 +0100
57715 @@ -1,6 +1,7 @@
57716  /* Verify that -mno-fancy-math-387 works.  */
57717  /* { dg-do compile } */
57718  /* { dg-require-effective-target ilp32 } */
57719 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
57720  /* { dg-options "-O -ffast-math -mfpmath=387 -mno-fancy-math-387 -march=i386" } */
57721  /* { dg-final { scan-assembler "call\t(.*)sin" } } */
57722  /* { dg-final { scan-assembler "call\t(.*)cos" } } */
57723 diff -Nur a/gcc/testsuite/gcc.target/i386/387-5.c b/gcc/testsuite/gcc.target/i386/387-5.c
57724 --- a/gcc/testsuite/gcc.target/i386/387-5.c     2007-08-22 11:59:14.000000000 +0200
57725 +++ b/gcc/testsuite/gcc.target/i386/387-5.c     2010-01-25 09:50:29.565686614 +0100
57726 @@ -1,6 +1,7 @@
57727  /* Verify that -mno-fancy-math-387 works.  */
57728  /* { dg-do compile } */
57729  /* { dg-require-effective-target ilp32 } */
57730 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
57731  /* { dg-options "-O -ffast-math -mfpmath=387 -mno-fancy-math-387 -march=i386" } */
57732  /* { dg-final { scan-assembler "call\t(.*)atan" } } */
57733  /* { dg-final { scan-assembler "call\t(.*)log1p" } } */
57734 diff -Nur a/gcc/testsuite/gcc.target/i386/cmov7.c b/gcc/testsuite/gcc.target/i386/cmov7.c
57735 --- a/gcc/testsuite/gcc.target/i386/cmov7.c     2008-01-10 19:31:43.000000000 +0100
57736 +++ b/gcc/testsuite/gcc.target/i386/cmov7.c     2010-01-25 09:50:29.565686614 +0100
57737 @@ -1,6 +1,7 @@
57738  /* PR middle-end/33187 */
57739  
57740  /* { dg-do compile } */
57741 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
57742  /* { dg-options "-O2 -ffast-math -march=k8 -mbranch-cost=5 -mfpmath=387" } */
57743  /* { dg-final { scan-assembler "fcmov" } } */
57744  
57745 diff -Nur a/gcc/testsuite/gcc.target/i386/funcspec-1.c b/gcc/testsuite/gcc.target/i386/funcspec-1.c
57746 --- a/gcc/testsuite/gcc.target/i386/funcspec-1.c        2008-08-31 01:50:40.000000000 +0200
57747 +++ b/gcc/testsuite/gcc.target/i386/funcspec-1.c        2010-01-25 09:50:29.575686558 +0100
57748 @@ -3,6 +3,7 @@
57749     for a function that doesn't use attribute((option)).  */
57750  /* { dg-do compile } */
57751  /* { dg-require-effective-target ilp32 } */
57752 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
57753  /* { dg-options "-O3 -ftree-vectorize -march=i386" } */
57754  /* { dg-final { scan-assembler "addps\[ \t\]" } } */
57755  /* { dg-final { scan-assembler "fsubs\[ \t\]" } } */
57756 diff -Nur a/gcc/testsuite/gcc.target/i386/funcspec-8.c b/gcc/testsuite/gcc.target/i386/funcspec-8.c
57757 --- a/gcc/testsuite/gcc.target/i386/funcspec-8.c        2008-08-31 01:50:40.000000000 +0200
57758 +++ b/gcc/testsuite/gcc.target/i386/funcspec-8.c        2010-01-25 09:50:29.575686558 +0100
57759 @@ -1,6 +1,7 @@
57760  /* Test whether using target specific options, we can use the x86 builtin
57761     functions in functions with the appropriate function specific options.  */
57762  /* { dg-do compile } */
57763 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
57764  /* { dg-options "-O2 -march=k8 -mfpmath=sse" } */
57765  
57766  typedef float     __m128  __attribute__ ((__vector_size__ (16), __may_alias__));
57767 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
57768 --- a/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-1.c  2007-08-22 11:59:14.000000000 +0200
57769 +++ b/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-1.c  2010-01-25 09:50:29.575686558 +0100
57770 @@ -1,5 +1,6 @@
57771  /* { dg-do preprocess } */
57772  /* { dg-require-effective-target ilp32 } */
57773 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
57774  /* { dg-options "-march=i386" } */
57775  
57776  #ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
57777 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
57778 --- a/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-2.c  2007-08-22 11:59:14.000000000 +0200
57779 +++ b/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-2.c  2010-01-25 09:50:29.575686558 +0100
57780 @@ -1,5 +1,6 @@
57781  /* { dg-do preprocess } */
57782  /* { dg-require-effective-target ilp32 } */
57783 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i486" } } */
57784  /* { dg-options "-march=i486" } */
57785  
57786  #ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
57787 diff -Nur a/gcc/testsuite/gcc.target/i386/isa-10.c b/gcc/testsuite/gcc.target/i386/isa-10.c
57788 --- a/gcc/testsuite/gcc.target/i386/isa-10.c    2008-03-08 23:33:54.000000000 +0100
57789 +++ b/gcc/testsuite/gcc.target/i386/isa-10.c    2010-01-25 09:50:29.575686558 +0100
57790 @@ -1,4 +1,5 @@
57791  /* { dg-do run } */
57792 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=x86-64" } } */
57793  /* { dg-options "-march=x86-64 -msse5 -mno-sse4" } */
57794  
57795  extern void abort (void);
57796 diff -Nur a/gcc/testsuite/gcc.target/i386/isa-6.c b/gcc/testsuite/gcc.target/i386/isa-6.c
57797 --- a/gcc/testsuite/gcc.target/i386/isa-6.c     2008-02-19 02:21:03.000000000 +0100
57798 +++ b/gcc/testsuite/gcc.target/i386/isa-6.c     2010-01-25 09:50:29.575686558 +0100
57799 @@ -1,4 +1,5 @@
57800  /* { dg-do run } */
57801 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
57802  /* { dg-options "-march=amdfam10 -mno-sse4" } */
57803  
57804  extern void abort (void);
57805 diff -Nur a/gcc/testsuite/gcc.target/i386/isa-7.c b/gcc/testsuite/gcc.target/i386/isa-7.c
57806 --- a/gcc/testsuite/gcc.target/i386/isa-7.c     2008-02-19 02:21:03.000000000 +0100
57807 +++ b/gcc/testsuite/gcc.target/i386/isa-7.c     2010-01-25 09:50:29.575686558 +0100
57808 @@ -1,4 +1,5 @@
57809  /* { dg-do run } */
57810 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
57811  /* { dg-options "-march=amdfam10 -msse5 -mno-sse4" } */
57812  
57813  extern void abort (void);
57814 diff -Nur a/gcc/testsuite/gcc.target/i386/isa-8.c b/gcc/testsuite/gcc.target/i386/isa-8.c
57815 --- a/gcc/testsuite/gcc.target/i386/isa-8.c     2008-02-19 02:21:03.000000000 +0100
57816 +++ b/gcc/testsuite/gcc.target/i386/isa-8.c     2010-01-25 09:50:29.575686558 +0100
57817 @@ -1,4 +1,5 @@
57818  /* { dg-do run } */
57819 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
57820  /* { dg-options "-march=amdfam10 -msse5 -mno-sse4a" } */
57821  
57822  extern void abort (void);
57823 diff -Nur a/gcc/testsuite/gcc.target/i386/isa-9.c b/gcc/testsuite/gcc.target/i386/isa-9.c
57824 --- a/gcc/testsuite/gcc.target/i386/isa-9.c     2008-02-19 02:21:03.000000000 +0100
57825 +++ b/gcc/testsuite/gcc.target/i386/isa-9.c     2010-01-25 09:50:29.575686558 +0100
57826 @@ -1,4 +1,5 @@
57827  /* { dg-do run } */
57828 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
57829  /* { dg-options "-march=amdfam10 -mno-sse5" } */
57830  
57831  extern void abort (void);
57832 diff -Nur a/gcc/testsuite/gcc.target/i386/lea.c b/gcc/testsuite/gcc.target/i386/lea.c
57833 --- a/gcc/testsuite/gcc.target/i386/lea.c       2007-08-22 11:59:14.000000000 +0200
57834 +++ b/gcc/testsuite/gcc.target/i386/lea.c       2010-01-25 09:50:29.575686558 +0100
57835 @@ -1,5 +1,6 @@
57836  /* { dg-do compile } */
57837  /* { dg-require-effective-target ilp32 } */
57838 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=pentiumpro" } } */
57839  /* { dg-options "-O2 -march=pentiumpro" } */
57840  /* { dg-final { scan-assembler "leal" } } */
57841  typedef struct {
57842 diff -Nur a/gcc/testsuite/gcc.target/i386/movbe-1.c b/gcc/testsuite/gcc.target/i386/movbe-1.c
57843 --- a/gcc/testsuite/gcc.target/i386/movbe-1.c   1970-01-01 01:00:00.000000000 +0100
57844 +++ b/gcc/testsuite/gcc.target/i386/movbe-1.c   2010-01-25 09:50:29.575686558 +0100
57845 @@ -0,0 +1,18 @@
57846 +/* { dg-do compile } */
57847 +/* { dg-options "-O2 -mmovbe" } */
57848 +
57849 +extern int x;
57850 +
57851 +void
57852 +foo (int i)
57853 +{
57854 +  x = __builtin_bswap32 (i);
57855 +}
57856 +
57857 +int
57858 +bar ()
57859 +{
57860 +  return __builtin_bswap32 (x);
57861 +}
57862 +
57863 +/* { dg-final { scan-assembler-times "movbe\[ \t\]" 2 } } */
57864 diff -Nur a/gcc/testsuite/gcc.target/i386/movbe-2.c b/gcc/testsuite/gcc.target/i386/movbe-2.c
57865 --- a/gcc/testsuite/gcc.target/i386/movbe-2.c   1970-01-01 01:00:00.000000000 +0100
57866 +++ b/gcc/testsuite/gcc.target/i386/movbe-2.c   2010-01-25 09:50:29.575686558 +0100
57867 @@ -0,0 +1,19 @@
57868 +/* { dg-do compile } */
57869 +/* { dg-options "-O2 -mmovbe" } */
57870 +
57871 +extern long long x;
57872 +
57873 +void
57874 +foo (long long i)
57875 +{
57876 +  x = __builtin_bswap64 (i);
57877 +}
57878 +
57879 +long long
57880 +bar ()
57881 +{
57882 +  return __builtin_bswap64 (x);
57883 +}
57884 +
57885 +/* { dg-final { scan-assembler-times "movbe\[ \t\]" 4 { target ilp32 } } } */
57886 +/* { dg-final { scan-assembler-times "movbe\[ \t\]" 2 { target lp64 } } } */
57887 diff -Nur a/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c b/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
57888 --- a/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c 2007-08-22 11:59:14.000000000 +0200
57889 +++ b/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c 2010-01-25 09:50:29.575686558 +0100
57890 @@ -1,5 +1,6 @@
57891  /* { dg-do compile } */
57892  /* { dg-require-effective-target ilp32 } */
57893 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=pentium4" } } */
57894  /* { dg-options "-O2 -march=pentium4" } */
57895  /* { dg-final { scan-assembler-not "imull" } } */
57896  
57897 diff -Nur a/gcc/testsuite/gcc.target/i386/pr37216.c b/gcc/testsuite/gcc.target/i386/pr37216.c
57898 --- a/gcc/testsuite/gcc.target/i386/pr37216.c   1970-01-01 01:00:00.000000000 +0100
57899 +++ b/gcc/testsuite/gcc.target/i386/pr37216.c   2010-01-25 09:50:29.575686558 +0100
57900 @@ -0,0 +1,17 @@
57901 +/* { dg-do run } */
57902 +/* { dg-options "-O3 -msse2" } */
57903 +/* { dg-options "-O3 -msse2 -mpe-aligned-commons" { target pe_aligned_commons } } */
57904 +
57905 +#include "sse2-check.h"
57906 +
57907 +int iarr[64];
57908 +int iint = 0;
57909 +
57910 +void
57911 +sse2_test (void)
57912 +{
57913 +  int i;
57914 +
57915 +  for (i = 0; i < 64; i++)
57916 +    iarr[i] = -2;
57917 +}
57918 diff -Nur a/gcc/testsuite/gcc.target/i386/pr37843-1.c b/gcc/testsuite/gcc.target/i386/pr37843-1.c
57919 --- a/gcc/testsuite/gcc.target/i386/pr37843-1.c 2008-11-28 17:30:56.000000000 +0100
57920 +++ b/gcc/testsuite/gcc.target/i386/pr37843-1.c 2010-01-25 09:50:29.575686558 +0100
57921 @@ -2,8 +2,8 @@
57922  /* { dg-do compile { target nonpic } } */
57923  /* { dg-options "-O2 -mpreferred-stack-boundary=6 -mincoming-stack-boundary=5" } */
57924  /* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */
57925 -/* { dg-final { scan-assembler "call\[\\t \]*foo" } } */
57926 -/* { dg-final { scan-assembler-not "jmp\[\\t \]*foo" } } */
57927 +/* { dg-final { scan-assembler "call\[\\t \]*_?foo" } } */
57928 +/* { dg-final { scan-assembler-not "jmp\[\\t \]*_?foo" } } */
57929  
57930  extern int foo (void);
57931  
57932 diff -Nur a/gcc/testsuite/gcc.target/i386/pr37843-2.c b/gcc/testsuite/gcc.target/i386/pr37843-2.c
57933 --- a/gcc/testsuite/gcc.target/i386/pr37843-2.c 2008-11-28 17:30:56.000000000 +0100
57934 +++ b/gcc/testsuite/gcc.target/i386/pr37843-2.c 2010-01-25 09:50:29.575686558 +0100
57935 @@ -2,8 +2,8 @@
57936  /* { dg-do compile { target nonpic } } */
57937  /* { dg-options "-O2 -mpreferred-stack-boundary=6 -mincoming-stack-boundary=6" } */
57938  /* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */
57939 -/* { dg-final { scan-assembler-not "call\[\\t \]*foo" } } */
57940 -/* { dg-final { scan-assembler "jmp\[\\t \]*foo" } } */
57941 +/* { dg-final { scan-assembler-not "call\[\\t \]*_?foo" } } */
57942 +/* { dg-final { scan-assembler "jmp\[\\t \]*_?foo" } } */
57943  
57944  extern int foo (void);
57945  
57946 diff -Nur a/gcc/testsuite/gcc.target/i386/pr37843-3.c b/gcc/testsuite/gcc.target/i386/pr37843-3.c
57947 --- a/gcc/testsuite/gcc.target/i386/pr37843-3.c 2009-01-15 16:44:41.000000000 +0100
57948 +++ b/gcc/testsuite/gcc.target/i386/pr37843-3.c 2010-01-25 09:50:29.575686558 +0100
57949 @@ -2,8 +2,8 @@
57950  /* { dg-do compile { target { ilp32 && nonpic } } } */
57951  /* { dg-options "-O2 -msse2 -mpreferred-stack-boundary=4 -mstackrealign" } */
57952  /* { dg-final { scan-assembler-not "andl\[\\t \]*\\$-16,\[\\t \]*%\[re\]?sp" } } */
57953 -/* { dg-final { scan-assembler-not "call\[\\t \]*foo" } } */
57954 -/* { dg-final { scan-assembler "jmp\[\\t \]*foo" } } */
57955 +/* { dg-final { scan-assembler-not "call\[\\t \]*_?foo" } } */
57956 +/* { dg-final { scan-assembler "jmp\[\\t \]*_?foo" } } */
57957  
57958  #include <emmintrin.h>
57959  
57960 diff -Nur a/gcc/testsuite/gcc.target/i386/sse-5.c b/gcc/testsuite/gcc.target/i386/sse-5.c
57961 --- a/gcc/testsuite/gcc.target/i386/sse-5.c     2008-09-09 16:48:15.000000000 +0200
57962 +++ b/gcc/testsuite/gcc.target/i386/sse-5.c     2010-01-25 09:50:29.575686558 +0100
57963 @@ -1,5 +1,6 @@
57964  /* { dg-do compile } */
57965  /* { dg-require-effective-target ilp32 } */
57966 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
57967  /* { dg-options "-Winline -O2 -march=i386" } */
57968  
57969  typedef double v2df __attribute__ ((vector_size (16)));
57970 diff -Nur a/gcc/testsuite/gcc.target/i386/ssefn-1.c b/gcc/testsuite/gcc.target/i386/ssefn-1.c
57971 --- a/gcc/testsuite/gcc.target/i386/ssefn-1.c   2007-08-22 11:59:14.000000000 +0200
57972 +++ b/gcc/testsuite/gcc.target/i386/ssefn-1.c   2010-01-25 09:50:29.575686558 +0100
57973 @@ -7,6 +7,7 @@
57974  /* { dg-final { scan-assembler "mulss" } } */
57975  /* { dg-final { scan-assembler-not "movsd" } } */
57976  /* { dg-final { scan-assembler-not "mulsd" } } */
57977 +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
57978  /* { dg-options "-O2 -march=i386 -msse -mfpmath=sse -fno-inline" } */
57979  
57980  static float xs (void)
57981 diff -Nur a/gcc/testsuite/gcc.target/m68k/20090709-1.c b/gcc/testsuite/gcc.target/m68k/20090709-1.c
57982 --- a/gcc/testsuite/gcc.target/m68k/20090709-1.c        1970-01-01 01:00:00.000000000 +0100
57983 +++ b/gcc/testsuite/gcc.target/m68k/20090709-1.c        2010-01-25 09:50:29.575686558 +0100
57984 @@ -0,0 +1,20 @@
57985 +/* { dg-do compile } */
57986 +/* There should be 3 occurrences of .LC0 in the code:
57987 +   one for the definition of "0",
57988 +   one for use in test1() and
57989 +   one for use in test2().
57990 +   FIXME: At the moment m68k GCC does not optimize test1() to nop
57991 +   for some reason.  */
57992 +/* { dg-final { scan-assembler-times ".LC0" 3 } } */
57993 +
57994 +void dummy(char *arg);
57995 +
57996 +void test1(void)
57997 +{
57998 +  char tmp[2] = "0";
57999 +}
58000 +
58001 +void test2(void)
58002 +{
58003 +  dummy("0");
58004 +}
58005 diff -Nur a/gcc/testsuite/gcc.target/m68k/pr36134.c b/gcc/testsuite/gcc.target/m68k/pr36134.c
58006 --- a/gcc/testsuite/gcc.target/m68k/pr36134.c   2008-11-14 11:49:06.000000000 +0100
58007 +++ b/gcc/testsuite/gcc.target/m68k/pr36134.c   2010-01-25 09:50:29.575686558 +0100
58008 @@ -1,10 +1,15 @@
58009  /* pr36134.c
58010  
58011     This test ensures that the shorter LEA instruction is used in preference
58012 -   to the longer ADD instruction.  */
58013 +   to the longer ADD instruction.
58014 +
58015 +   This preference is applicable to ColdFire only.  On CPU32, we can
58016 +   use a sequence of two ADDQ instructions, which is faster than the
58017 +   LEA instruction.  */
58018  
58019  /* { dg-do compile }  */
58020 -/* { dg-options "-O2" }  */
58021 +/* { dg-skip-if "" { *-*-* } { "-mcpu=*" } { "-mcpu=5208" } } */
58022 +/* { dg-options "-O2 -mcpu=5208" }  */
58023  /* { dg-final { scan-assembler "lea" } } */
58024  /* { dg-final { scan-assembler-not "add" } } */
58025  
58026 diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-gd.c b/gcc/testsuite/gcc.target/m68k/tls-gd.c
58027 --- a/gcc/testsuite/gcc.target/m68k/tls-gd.c    1970-01-01 01:00:00.000000000 +0100
58028 +++ b/gcc/testsuite/gcc.target/m68k/tls-gd.c    2010-01-25 09:50:29.575686558 +0100
58029 @@ -0,0 +1,13 @@
58030 +/* { dg-do compile } */
58031 +/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
58032 +/* { dg-options "-O2 -fpic" } */
58033 +/* { dg-final { scan-assembler "foo@TLSGD\\(\%a5\\)" } } */
58034 +/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
58035 +
58036 +extern int __thread foo;
58037 +
58038 +int *
58039 +bar (void)
58040 +{
58041 +  return &foo;
58042 +}
58043 diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c b/gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c
58044 --- a/gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c       1970-01-01 01:00:00.000000000 +0100
58045 +++ b/gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c       2010-01-25 09:50:29.575686558 +0100
58046 @@ -0,0 +1,13 @@
58047 +/* { dg-do compile } */
58048 +/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
58049 +/* { dg-options "-O2 -fpic -mxgot" } */
58050 +/* { dg-final { scan-assembler "#foo@TLSGD,\%\[ad\]\[0-7\]" } } */
58051 +/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
58052 +
58053 +extern int __thread foo;
58054 +
58055 +int *
58056 +bar (void)
58057 +{
58058 +  return &foo;
58059 +}
58060 diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-ie.c b/gcc/testsuite/gcc.target/m68k/tls-ie.c
58061 --- a/gcc/testsuite/gcc.target/m68k/tls-ie.c    1970-01-01 01:00:00.000000000 +0100
58062 +++ b/gcc/testsuite/gcc.target/m68k/tls-ie.c    2010-01-25 09:50:29.575686558 +0100
58063 @@ -0,0 +1,13 @@
58064 +/* { dg-do compile } */
58065 +/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
58066 +/* { dg-options "-O2" } */
58067 +/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */
58068 +/* { dg-final { scan-assembler "foo@TLSIE\\(\%a5\\)" } } */
58069 +
58070 +extern int __thread foo;
58071 +
58072 +int *
58073 +bar (void)
58074 +{
58075 +  return &foo;
58076 +}
58077 diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c b/gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c
58078 --- a/gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c       1970-01-01 01:00:00.000000000 +0100
58079 +++ b/gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c       2010-01-25 09:50:29.575686558 +0100
58080 @@ -0,0 +1,13 @@
58081 +/* { dg-do compile } */
58082 +/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
58083 +/* { dg-options "-O2 -mxgot" } */
58084 +/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */
58085 +/* { dg-final { scan-assembler "#foo@TLSIE,\%\[ad\]\[0-7\]" } } */
58086 +
58087 +extern int __thread foo;
58088 +
58089 +int *
58090 +bar (void)
58091 +{
58092 +  return &foo;
58093 +}
58094 diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-ld.c b/gcc/testsuite/gcc.target/m68k/tls-ld.c
58095 --- a/gcc/testsuite/gcc.target/m68k/tls-ld.c    1970-01-01 01:00:00.000000000 +0100
58096 +++ b/gcc/testsuite/gcc.target/m68k/tls-ld.c    2010-01-25 09:50:29.575686558 +0100
58097 @@ -0,0 +1,14 @@
58098 +/* { dg-do compile } */
58099 +/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
58100 +/* { dg-options "-O2 -fpic" } */
58101 +/* { dg-final { scan-assembler "foo@TLSLDM\\(\%a5\\)" } } */
58102 +/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
58103 +/* { dg-final { scan-assembler "lea \\(foo@TLSLDO,\%a0\\)" } } */
58104 +
58105 +static int __thread foo;
58106 +
58107 +int *
58108 +bar (void)
58109 +{
58110 +  return &foo;
58111 +}
58112 diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c b/gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c
58113 --- a/gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c       1970-01-01 01:00:00.000000000 +0100
58114 +++ b/gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c       2010-01-25 09:50:29.575686558 +0100
58115 @@ -0,0 +1,14 @@
58116 +/* { dg-do compile } */
58117 +/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
58118 +/* { dg-options "-O2 -fpic -mxgot" } */
58119 +/* { dg-final { scan-assembler "#foo@TLSLDM,\%\[ad\]\[0-7\]" } } */
58120 +/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
58121 +/* { dg-final { scan-assembler "lea \\(foo@TLSLDO,\%a0\\)" } } */
58122 +
58123 +static int __thread foo;
58124 +
58125 +int *
58126 +bar (void)
58127 +{
58128 +  return &foo;
58129 +}
58130 diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c b/gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c
58131 --- a/gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c  1970-01-01 01:00:00.000000000 +0100
58132 +++ b/gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c  2010-01-25 09:50:29.575686558 +0100
58133 @@ -0,0 +1,14 @@
58134 +/* { dg-do compile } */
58135 +/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
58136 +/* { dg-options "-O2 -fpic -mxgot -mxtls" } */
58137 +/* { dg-final { scan-assembler "#foo@TLSLDM,\%\[ad\]\[0-7\]" } } */
58138 +/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
58139 +/* { dg-final { scan-assembler "#foo@TLSLDO,\%\[ad\]\[0-7\]" } } */
58140 +
58141 +static int __thread foo;
58142 +
58143 +int *
58144 +bar (void)
58145 +{
58146 +  return &foo;
58147 +}
58148 diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c b/gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c
58149 --- a/gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c       1970-01-01 01:00:00.000000000 +0100
58150 +++ b/gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c       2010-01-25 09:50:29.575686558 +0100
58151 @@ -0,0 +1,14 @@
58152 +/* { dg-do compile } */
58153 +/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
58154 +/* { dg-options "-O2 -fpic -mxtls" } */
58155 +/* { dg-final { scan-assembler "foo@TLSLDM\\(\%a5\\)" } } */
58156 +/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
58157 +/* { dg-final { scan-assembler "#foo@TLSLDO,\%\[ad\]\[0-7\]" } } */
58158 +
58159 +static int __thread foo;
58160 +
58161 +int *
58162 +bar (void)
58163 +{
58164 +  return &foo;
58165 +}
58166 diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-le.c b/gcc/testsuite/gcc.target/m68k/tls-le.c
58167 --- a/gcc/testsuite/gcc.target/m68k/tls-le.c    1970-01-01 01:00:00.000000000 +0100
58168 +++ b/gcc/testsuite/gcc.target/m68k/tls-le.c    2010-01-25 09:50:29.575686558 +0100
58169 @@ -0,0 +1,13 @@
58170 +/* { dg-do compile } */
58171 +/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
58172 +/* { dg-options "-O2" } */
58173 +/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */
58174 +/* { dg-final { scan-assembler "lea \\(foo@TLSLE,\%a0\\)" } } */
58175 +
58176 +static int __thread foo;
58177 +
58178 +int *
58179 +bar (void)
58180 +{
58181 +  return &foo;
58182 +}
58183 diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-le-xtls.c b/gcc/testsuite/gcc.target/m68k/tls-le-xtls.c
58184 --- a/gcc/testsuite/gcc.target/m68k/tls-le-xtls.c       1970-01-01 01:00:00.000000000 +0100
58185 +++ b/gcc/testsuite/gcc.target/m68k/tls-le-xtls.c       2010-01-25 09:50:29.575686558 +0100
58186 @@ -0,0 +1,13 @@
58187 +/* { dg-do compile } */
58188 +/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
58189 +/* { dg-options "-O2 -mxtls" } */
58190 +/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */
58191 +/* { dg-final { scan-assembler "#foo@TLSLE,\%\[ad\]\[0-7\]" } } */
58192 +
58193 +static int __thread foo;
58194 +
58195 +int *
58196 +bar (void)
58197 +{
58198 +  return &foo;
58199 +}
58200 diff -Nur a/gcc/testsuite/gcc.target/mips/branch-2.c b/gcc/testsuite/gcc.target/mips/branch-2.c
58201 --- a/gcc/testsuite/gcc.target/mips/branch-2.c  1970-01-01 01:00:00.000000000 +0100
58202 +++ b/gcc/testsuite/gcc.target/mips/branch-2.c  2010-01-25 09:50:29.575686558 +0100
58203 @@ -0,0 +1,44 @@
58204 +/* Check that we correctly expand out-of-range branches */
58205 +/* { dg-do run } */
58206 +/* { dg-options "-O2 -mabi=32 -fPIC" } */
58207 +
58208 +#include <stdlib.h>
58209 +
58210 +/* This is weak so the compiler cannot assume that calls from this TU
58211 +   necessarily arrive here.   And hence that $gp may be clobbered in
58212 +   o32 and o64 ABIs.  */
58213 +
58214 +void __attribute__ ((weak)) Foo (int i)
58215 +{
58216 +  static int once = 0;
58217 +
58218 +  if (!i && once++)
58219 +    exit (0);
58220 +
58221 +#if (_ABIO32 || _ABIO64)
58222 +  /* Clobber $gp */
58223 +  __asm volatile ("li $gp,0");
58224 +#endif
58225 +}
58226 +
58227 +#define N1(X)  (Foo (X))
58228 +#define N2(X)  (N1 (X), N1 (X+(1<<0)))
58229 +#define N3(X)  (N2 (X), N2 (X+(1<<1)))
58230 +#define N4(X)  (N3 (X), N3 (X+(1<<2)))
58231 +#define N5(X)  (N4 (X), N4 (X+(1<<3)))
58232 +#define N6(X)  (N5 (X), N5 (X+(1<<4)))
58233 +#define N7(X)  (N6 (X), N6 (X+(1<<5)))
58234 +#define N8(X)  (N7 (X), N7 (X+(1<<6)))
58235 +#define N9(X)  (N8 (X), N8 (X+(1<<7)))
58236 +#define N10(X)  (N9 (X), N9 (X+(1<<8)))
58237 +#define N11(X)  (N10 (X), N10 (X+(1<<9)))
58238 +#define N12(X)  (N11 (X), N11 (X+(1<<10)))
58239 +#define N13(X)  (N12 (X), N12 (X+(1<<11)))
58240 +#define N14(X)  (N13 (X), N13 (X+(1<<12)))
58241 +
58242 +int main (void)
58243 +{
58244 +  while (1)
58245 +    N14 (0);
58246 +  return 0;
58247 +}
58248 diff -Nur a/gcc/testsuite/gcc.target/mips/clear-cache-2.c b/gcc/testsuite/gcc.target/mips/clear-cache-2.c
58249 --- a/gcc/testsuite/gcc.target/mips/clear-cache-2.c     2008-12-21 22:47:38.000000000 +0100
58250 +++ b/gcc/testsuite/gcc.target/mips/clear-cache-2.c     2010-01-25 09:50:29.575686558 +0100
58251 @@ -2,7 +2,8 @@
58252  /* { dg-options "-O2 -mips32" } */
58253  /* { dg-final { scan-assembler-not "synci" } } */
58254  /* { dg-final { scan-assembler-not "jr.hb" } } */
58255 -/* { dg-final { scan-assembler "_flush_cache" } } */
58256 +/* { dg-final { scan-assembler "mips_sync_icache" { target { *-sde-* } } } } */
58257 +/* { dg-final { scan-assembler "_flush_cache" { target { ! *-sde-* } } } } */
58258  
58259  void f()
58260  {
58261 diff -Nur a/gcc/testsuite/gcc.target/mips/fpr-moves-5.c b/gcc/testsuite/gcc.target/mips/fpr-moves-5.c
58262 --- a/gcc/testsuite/gcc.target/mips/fpr-moves-5.c       2008-12-21 22:47:38.000000000 +0100
58263 +++ b/gcc/testsuite/gcc.target/mips/fpr-moves-5.c       2010-01-25 09:50:29.575686558 +0100
58264 @@ -1,4 +1,5 @@
58265  /* { dg-options "-mabi=64 -mhard-float -O2 -EL" } */
58266 +/* { dg-require-effective-target mips_newabi_large_long_double } */
58267  
58268  NOMIPS16 void
58269  foo (long double d, long double *x)
58270 diff -Nur a/gcc/testsuite/gcc.target/mips/fpr-moves-6.c b/gcc/testsuite/gcc.target/mips/fpr-moves-6.c
58271 --- a/gcc/testsuite/gcc.target/mips/fpr-moves-6.c       2008-12-21 22:47:38.000000000 +0100
58272 +++ b/gcc/testsuite/gcc.target/mips/fpr-moves-6.c       2010-01-25 09:50:29.575686558 +0100
58273 @@ -1,4 +1,5 @@
58274  /* { dg-options "-mabi=64 -mhard-float -O2 -EB" } */
58275 +/* { dg-require-effective-target mips_newabi_large_long_double } */
58276  
58277  NOMIPS16 void
58278  foo (long double d, long double *x)
58279 diff -Nur a/gcc/testsuite/gcc.target/mips/mips.exp b/gcc/testsuite/gcc.target/mips/mips.exp
58280 --- a/gcc/testsuite/gcc.target/mips/mips.exp    2009-02-20 16:20:38.000000000 +0100
58281 +++ b/gcc/testsuite/gcc.target/mips/mips.exp    2010-01-25 09:50:29.575686558 +0100
58282 @@ -229,6 +229,7 @@
58283      gpopt
58284      local-sdata
58285      long-calls
58286 +    octeon-useun
58287      paired-single
58288      plt
58289      shared
58290 diff -Nur a/gcc/testsuite/gcc.target/mips/octeon-useun.c b/gcc/testsuite/gcc.target/mips/octeon-useun.c
58291 --- a/gcc/testsuite/gcc.target/mips/octeon-useun.c      1970-01-01 01:00:00.000000000 +0100
58292 +++ b/gcc/testsuite/gcc.target/mips/octeon-useun.c      2010-01-25 09:50:29.575686558 +0100
58293 @@ -0,0 +1,16 @@
58294 +/* Check the mov_u[ls][dw] patterns.  */
58295 +/* { dg-options "-march=octeon -O2 -mabi=64 -mocteon-useun -meb" } */
58296 +struct __attribute__((packed)) sl { unsigned long x; };
58297 +struct __attribute__((packed)) si { unsigned int x; };
58298 +unsigned long f1 (struct sl *s) { return s[0].x; };
58299 +unsigned int f2 (struct si *s) { return s[1].x; };
58300 +void f3 (struct sl *s, unsigned long x) { s[10].x = x; }
58301 +void f4 (struct si *s, unsigned int x) { s[11].x = x; }
58302 +void f5 (struct sl *s) { s[100].x = 0; }
58303 +void f6 (struct si *s) { s[101].x = 0; }
58304 +/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tuld\t\\\$2,0\\(\\\$4\\)\n" } } */
58305 +/* { dg-final { scan-assembler "\tulw\t\\\$2,4\\(\\\$4\\)\n" } } */
58306 +/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tusd\t\\\$5,80\\(\\\$4\\)\n" } } */
58307 +/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tusw\t\\\$5,44\\(\\\$4\\)\n" } } */
58308 +/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tusd\t\\\$0,800\\(\\\$4\\)\n" } } */
58309 +/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tusw\t\\\$0,404\\(\\\$4\\)\n" } } */
58310 diff -Nur a/gcc/testsuite/gcc.target/powerpc/altivec-consts.c b/gcc/testsuite/gcc.target/powerpc/altivec-consts.c
58311 --- a/gcc/testsuite/gcc.target/powerpc/altivec-consts.c 2009-01-13 18:52:32.000000000 +0100
58312 +++ b/gcc/testsuite/gcc.target/powerpc/altivec-consts.c 2010-01-25 09:50:29.575686558 +0100
58313 @@ -1,7 +1,7 @@
58314  /* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
58315  /* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
58316  /* { dg-require-effective-target powerpc_altivec_ok } */
58317 -/* { dg-options "-maltivec -mabi=altivec -O2" } */
58318 +/* { dg-options "-maltivec -O2" } */
58319  
58320  /* Check that "easy" AltiVec constants are correctly synthesized.  */
58321  
58322 diff -Nur a/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c b/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c
58323 --- a/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c      2009-01-13 18:52:32.000000000 +0100
58324 +++ b/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c      2010-01-25 09:50:29.575686558 +0100
58325 @@ -1,7 +1,7 @@
58326  /* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
58327  /* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
58328  /* { dg-require-effective-target powerpc_altivec_ok } */
58329 -/* { dg-options "-maltivec -mabi=altivec -fno-inline" } */
58330 +/* { dg-options "-maltivec -fno-inline" } */
58331  
58332  #include <stdarg.h>
58333  
58334 diff -Nur a/gcc/testsuite/gcc.target/sh/20080410-1.c b/gcc/testsuite/gcc.target/sh/20080410-1.c
58335 --- a/gcc/testsuite/gcc.target/sh/20080410-1.c  2008-09-13 15:26:46.000000000 +0200
58336 +++ b/gcc/testsuite/gcc.target/sh/20080410-1.c  2010-01-25 09:50:29.575686558 +0100
58337 @@ -1,5 +1,5 @@
58338  /* { dg-do compile { target "sh-*-*" } } */
58339 -/* { dg-options "-O0 -m4 -ml -fira" } */
58340 +/* { dg-options "-O0 -m4 -ml" } */
58341  /* { dg-final { scan-assembler-not "add\tr0,r0" } } */
58342  
58343  /* This test checks that chain reloads conflict.  I they don't
58344 diff -Nur a/gcc/testsuite/gcc.target/sh/sh4a-bitmovua.c b/gcc/testsuite/gcc.target/sh/sh4a-bitmovua.c
58345 --- a/gcc/testsuite/gcc.target/sh/sh4a-bitmovua.c       2007-08-27 10:47:33.000000000 +0200
58346 +++ b/gcc/testsuite/gcc.target/sh/sh4a-bitmovua.c       2010-01-25 09:50:29.575686558 +0100
58347 @@ -35,15 +35,15 @@
58348  }
58349  
58350  /* Aligned.  */
58351 -struct u0 { unsigned long long d : 32; } y0;
58352 +struct u0 { unsigned long long d : 32; } y_0;
58353  unsigned long long g0() {
58354 -  return y0.d;
58355 +  return y_0.d;
58356  }
58357  
58358  /* Unaligned load.  */
58359 -struct u1 { long long c : 8; unsigned long long d : 32; } y1;
58360 +struct u1 { long long c : 8; unsigned long long d : 32; } y_1;
58361  unsigned long long g1() {
58362 -  return y1.d;
58363 +  return y_1.d;
58364  }
58365  
58366  /* Unaligned load.  */
58367 diff -Nur a/gcc/testsuite/gcc.target/sh/sh4a-memmovua.c b/gcc/testsuite/gcc.target/sh/sh4a-memmovua.c
58368 --- a/gcc/testsuite/gcc.target/sh/sh4a-memmovua.c       2007-08-27 10:47:33.000000000 +0200
58369 +++ b/gcc/testsuite/gcc.target/sh/sh4a-memmovua.c       2010-01-25 09:50:29.575686558 +0100
58370 @@ -5,7 +5,7 @@
58371  /* { dg-final { scan-assembler-times "\tmovua\\.l\t(.*)+" 2 } } */
58372  
58373  #ifdef __SH4A__
58374 -#include <stdlib.h>
58375 +#include <string.h>
58376  
58377  struct s { int i; char a[10], b[10]; } x;
58378  int f() {
58379 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
58380 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c     1970-01-01 01:00:00.000000000 +0100
58381 +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c     2010-01-25 09:50:29.575686558 +0100
58382 @@ -0,0 +1,27 @@
58383 +/* Test for cross x86_64<->w64 abi standard calls.  */
58384 +/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
58385 +/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
58386 +/* { dg-additional-sources "func-2b.c" } */
58387 +
58388 +extern void __attribute__ ((sysv_abi)) abort (void);
58389 +long double func_cross (long double, double, float, long, int, char);
58390 +
58391 +long double __attribute__ ((sysv_abi))
58392 +func_native (long double a, double b, float c, long d, int e, char f)
58393 +{
58394 +  long double ret;
58395 +  ret = a + (long double) b + (long double) c;
58396 +  ret *= (long double) (d + (long) e);
58397 +  if (f>0)
58398 +    ret += func_native (a,b,c,d,e,-f);
58399 +  return ret;
58400 +}
58401 +
58402 +int __attribute__ ((sysv_abi))
58403 +main ()
58404 +{
58405 +  if (func_cross (1.0,2.0,3.0,1,2,3)
58406 +      != func_native (1.0,2.0,3.0,1,2,3))
58407 +    abort ();
58408 +  return 0;
58409 +}
58410 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
58411 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2b.c     1970-01-01 01:00:00.000000000 +0100
58412 +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2b.c     2010-01-25 09:50:29.575686558 +0100
58413 @@ -0,0 +1,13 @@
58414 +/* Test for cross x86_64<->w64 abi standard calls.  */
58415 +/* { dg-options "-mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
58416 +
58417 +long double func_cross (long double a, double b, float c, long d, int e,
58418 +                       char f)
58419 +{
58420 +  long double ret;
58421 +  ret = a + (long double) b + (long double) c;
58422 +  ret *= (long double) (d + (long) e);
58423 +  if (f>0)
58424 +    ret += func_cross (a,b,c,d,e,-f);
58425 +  return ret;
58426 +}
58427 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
58428 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c    1970-01-01 01:00:00.000000000 +0100
58429 +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c    2010-01-25 09:50:29.575686558 +0100
58430 @@ -0,0 +1,17 @@
58431 +/* Test for cross x86_64<->w64 abi standard calls via variable.  */
58432 +/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
58433 +/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
58434 +/* { dg-additional-sources "func-indirect-2b.c" } */
58435 +
58436 +extern void __attribute__ ((sysv_abi)) abort (void);
58437 +typedef int (*func)(void *, char *, char *, short, long long);
58438 +extern func get_callback (void);
58439 +
58440 +int __attribute__ ((sysv_abi))
58441 +main ()
58442 +{
58443 +  func callme = get_callback ();
58444 +  if (callme (0, 0, 0, 0x1234, 0x1234567890abcdefLL))
58445 +    abort ();
58446 +  return 0;
58447 +}
58448 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
58449 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2b.c    1970-01-01 01:00:00.000000000 +0100
58450 +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2b.c    2010-01-25 09:50:29.575686558 +0100
58451 @@ -0,0 +1,24 @@
58452 +/* Test for cross x86_64<->w64 abi standard calls via variable.  */
58453 +/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
58454 +
58455 +typedef int (*func)(void *, char *, char *, short, long long);
58456 +
58457 +static int
58458 +callback (void *ptr, char *string1, char *string2, short number,
58459 +         long long rand)
58460 +{
58461 +  if (ptr != 0
58462 +      || string1 != 0
58463 +      || string2 != 0
58464 +      || number != 0x1234
58465 +      || rand != 0x1234567890abcdefLL)
58466 +    return 1;
58467 +  else
58468 +    return 0;
58469 +}
58470 +
58471 +func
58472 +get_callback (void)
58473 +{
58474 +  return callback;
58475 +}
58476 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
58477 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c    1970-01-01 01:00:00.000000000 +0100
58478 +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c    2010-01-25 09:50:29.575686558 +0100
58479 @@ -0,0 +1,24 @@
58480 +/* Test for cross x86_64<->w64 abi va_list calls.  */
58481 +/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
58482 +/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
58483 +/* { dg-additional-sources "vaarg-4b.c" } */
58484 +
58485 +extern __SIZE_TYPE__ __attribute__ ((sysv_abi)) strlen (const char *);
58486 +extern int __attribute__ ((sysv_abi)) sprintf (char *,const char *, ...);
58487 +extern void __attribute__ ((sysv_abi)) abort (void);
58488 +
58489 +extern void do_cpy (char *, ...);
58490 +
58491 +int __attribute__ ((sysv_abi))
58492 +main ()
58493 +{
58494 +  char s[256];
58495 +
58496 +  do_cpy (s, "1","2","3","4", "5", "6", "7", "");
58497 +
58498 +  if (s[0] != '1' || s[1] !='2' || s[2] != '3' || s[3] != '4'
58499 +      || s[4] != '5' || s[5] != '6' || s[6] != '7' || s[7] != 0)
58500 +    abort ();
58501 +
58502 +  return 0;
58503 +}
58504 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
58505 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4b.c    1970-01-01 01:00:00.000000000 +0100
58506 +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4b.c    2010-01-25 09:50:29.575686558 +0100
58507 @@ -0,0 +1,31 @@
58508 +/* Test for cross x86_64<->w64 abi va_list calls.  */
58509 +/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
58510 +
58511 +#include <stdarg.h>
58512 +
58513 +extern __SIZE_TYPE__ __attribute__ ((sysv_abi)) strlen (const char *);
58514 +extern int __attribute__ ((sysv_abi)) sprintf (char *, const char *, ...);
58515 +
58516 +static void
58517 +vdo_cpy (char *s, va_list argp)
58518 +{
58519 +  __SIZE_TYPE__ len;
58520 +  char *r = s;
58521 +  char *e;
58522 +  *r = 0;
58523 +  for (;;) {
58524 +    e = va_arg (argp, char *);
58525 +    if (*e == 0) break;
58526 +    sprintf (r,"%s", e);
58527 +    r += strlen (r);
58528 +  }
58529 +}
58530 +
58531 +void
58532 +do_cpy (char *s, ...)
58533 +{
58534 +  va_list argp;
58535 +  va_start (argp, s);
58536 +  vdo_cpy (s, argp);
58537 +  va_end (argp);
58538 +}
58539 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
58540 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c    1970-01-01 01:00:00.000000000 +0100
58541 +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c    2010-01-25 09:50:29.575686558 +0100
58542 @@ -0,0 +1,17 @@
58543 +/* Test for cross x86_64<->w64 abi va_list calls.  */
58544 +/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
58545 +/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
58546 +/* { dg-additional-sources "vaarg-5b.c" } */
58547 +
58548 +extern void __attribute__ ((sysv_abi)) abort (void);
58549 +extern int fct2 (int, ...);
58550 +
58551 +#define SZ_ARGS        1ll,2ll,3ll,4ll,5ll,6ll,7ll,0ll
58552 +
58553 +int __attribute__ ((sysv_abi))
58554 +main()
58555 +{
58556 +  if (fct2 (-1, SZ_ARGS) != 0)
58557 +    abort ();
58558 +  return 0;
58559 +}
58560 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
58561 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5b.c    1970-01-01 01:00:00.000000000 +0100
58562 +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5b.c    2010-01-25 09:50:29.575686558 +0100
58563 @@ -0,0 +1,37 @@
58564 +/* Test for cross x86_64<->w64 abi va_list calls.  */
58565 +/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
58566 +
58567 +#include <stdarg.h>
58568 +
58569 +#define SZ_ARGS        1ll,2ll,3ll,4ll,5ll,6ll,7ll,0ll
58570 +
58571 +static int __attribute__ ((sysv_abi))
58572 +fct1 (va_list argp, ...)
58573 +{
58574 +  long long p1,p2;
58575 +  int ret = 1;
58576 +  __builtin_sysv_va_list argp_2;
58577 +
58578 +  __builtin_sysv_va_start (argp_2, argp);
58579 +  do {
58580 +    p1 = va_arg (argp_2, long long);
58581 +    p2 = va_arg (argp, long long);
58582 +    if (p1 != p2)
58583 +      ret = 0;
58584 +  } while (ret && p1 != 0);
58585 +  __builtin_sysv_va_end (argp_2);
58586 +
58587 +  return ret;
58588 +}
58589 +
58590 +int
58591 +fct2 (int dummy, ...)
58592 +{
58593 +  va_list argp;
58594 +  int ret = dummy;
58595 +
58596 +  va_start (argp, dummy);
58597 +  ret += fct1 (argp, SZ_ARGS);
58598 +  va_end (argp);
58599 +  return ret;
58600 +}
58601 diff -Nur a/gcc/testsuite/g++.dg/abi/mangle-neon.C b/gcc/testsuite/g++.dg/abi/mangle-neon.C
58602 --- a/gcc/testsuite/g++.dg/abi/mangle-neon.C    2008-08-30 00:19:24.000000000 +0200
58603 +++ b/gcc/testsuite/g++.dg/abi/mangle-neon.C    2010-01-25 09:50:29.575686558 +0100
58604 @@ -2,7 +2,7 @@
58605  
58606  // { dg-do compile }
58607  // { dg-require-effective-target arm_neon_ok }
58608 -// { dg-options "-mfpu=neon -mfloat-abi=softfp" }
58609 +// { dg-add-options arm_neon }
58610  
58611  #include <arm_neon.h>
58612  
58613 diff -Nur a/gcc/testsuite/g++.dg/eh/ref1.C b/gcc/testsuite/g++.dg/eh/ref1.C
58614 --- a/gcc/testsuite/g++.dg/eh/ref1.C    1970-01-01 01:00:00.000000000 +0100
58615 +++ b/gcc/testsuite/g++.dg/eh/ref1.C    2010-01-25 09:50:29.575686558 +0100
58616 @@ -0,0 +1,61 @@
58617 +// { dg-do run { xfail { ! arm-*-*eabi } } }
58618 +
58619 +// catching a pointer to class by reference prohibits derived->base
58620 +// transformation.   The generic C++ ABI gets this wrong.  ARM EABI
58621 +// gets this right, except for exception specifications where a bug is
58622 +// acknowledged. 
58623 +
58624 +#include <stdio.h>
58625 +
58626 +struct A {};
58627 +
58628 +struct B : A {};
58629 +
58630 +int Foo ()
58631 +{
58632 +  B b;
58633 +  
58634 +  try
58635 +    {
58636 +      throw &b;
58637 +    }
58638 +  catch (A *&a)  // { dg-bogus "earlier handler" "" { xfail { ! arm-*-*eabi } } }
58639 +    {
58640 +      printf ("fail, caught A*&%p\n", a);
58641 +      return 1;
58642 +    }
58643 +  catch (B *&b)  // { dg-bogus "will be caught" "" { xfail { ! arm-*-*eabi } } }
58644 +    {
58645 +      printf ("pass, caught B*&%p\n", b);
58646 +    }
58647 +  catch (...)
58648 +    {
58649 +      printf ("fail, caught ...");
58650 +      return 2;
58651 +    }
58652 +  try
58653 +    {
58654 +      throw &b;
58655 +    }
58656 +  catch (A *a) // { dg-warning "by earlier handler" }
58657 +    {
58658 +      printf ("pass, caught A*%p\n", a);
58659 +    }
58660 +  catch (B *b) // { dg-warning "will be caught" }
58661 +    {
58662 +      printf ("fail, caught B*%p\n", b);
58663 +      return 3;
58664 +    }
58665 +  catch (...)
58666 +    {
58667 +      printf ("fail, caught ...");
58668 +      return 4;
58669 +    }
58670 +  return 0;
58671 +}
58672 +
58673 +
58674 +int main ()
58675 +{
58676 +  return Foo ();
58677 +}
58678 diff -Nur a/gcc/testsuite/g++.dg/eh/ref2.C b/gcc/testsuite/g++.dg/eh/ref2.C
58679 --- a/gcc/testsuite/g++.dg/eh/ref2.C    1970-01-01 01:00:00.000000000 +0100
58680 +++ b/gcc/testsuite/g++.dg/eh/ref2.C    2010-01-25 09:50:29.575686558 +0100
58681 @@ -0,0 +1,70 @@
58682 +// { dg-do run { xfail { ! arm-*-*eabi } } }
58683 +
58684 +// catching a pointer to class by reference prohibits derived->base
58685 +// transformation.   The generic C++ ABI gets this wrong.  ARM EABI
58686 +// gets this right, except for exception specifications where a bug is
58687 +// acknowledged. 
58688 +
58689 +#include <stdio.h>
58690 +#include <exception>
58691 +#include <stdlib.h>
58692 +
58693 +struct A {};
58694 +
58695 +struct B : A {};
58696 +
58697 +B b;
58698 +
58699 +void One () throw (A *&)
58700 +{
58701 +  throw &b;
58702 +}
58703 +
58704 +void Two () throw (A *&, B *&)
58705 +{
58706 +  throw &b;
58707 +}
58708 +
58709 +void Three () throw (A *)
58710 +{
58711 +  throw &b;
58712 +}
58713 +
58714 +int Foo (void (*fn)())
58715 +{
58716 +  try
58717 +    {
58718 +      fn ();
58719 +    }
58720 +  catch (B *b)
58721 +    {
58722 +      printf ("pass, caught B*%p\n", b);
58723 +    }
58724 +  catch (...)
58725 +    {
58726 +      printf ("fail, caught ...");
58727 +      return 1;
58728 +    }
58729 +  return 0;
58730 +}
58731 +
58732 +void handler ()
58733 +{
58734 +  printf ("pass, got unexpected exception\n");
58735 +  exit (0);
58736 +}
58737 +
58738 +int main ()
58739 +{
58740 +  if (Foo (&Three))
58741 +    return 1;
58742 +
58743 +  if (Foo (&Two))
58744 +    return 2;
58745 +
58746 +  std::set_unexpected (handler);
58747 +  if (Foo (&One))
58748 +    return 3;
58749 +  printf ("fail, did not get unexpected exception\n");
58750 +  return 4;
58751 +}
58752 diff -Nur a/gcc/testsuite/g++.dg/ext/altivec-17.C b/gcc/testsuite/g++.dg/ext/altivec-17.C
58753 --- a/gcc/testsuite/g++.dg/ext/altivec-17.C     1970-01-01 01:00:00.000000000 +0100
58754 +++ b/gcc/testsuite/g++.dg/ext/altivec-17.C     2010-01-25 09:50:29.575686558 +0100
58755 @@ -0,0 +1,16 @@
58756 +// { dg-do compile { target powerpc*-*-* } }
58757 +// { dg-require-effective-target powerpc_altivec_ok }
58758 +// { dg-options "-maltivec" }
58759 +
58760 +// Make sure that bool vectors have distinct names to int vectors
58761 +
58762 +#define vector__ __attribute__((altivec (vector__)))
58763 +#define bool__ __attribute__((altivec(bool__)))
58764 +
58765 +typedef vector__ unsigned int simd_type;
58766 +typedef vector__ bool__ int bool_simd_type;
58767 +
58768 +void Foo (bool_simd_type const &a)
58769 +{
58770 +  simd_type const &v = a; // { dg-error "'const unsigned int __vector__&' from expression of type 'const __bool int __vector__'" }
58771 +}
58772 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
58773 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C        1970-01-01 01:00:00.000000000 +0100
58774 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C        2010-01-25 09:50:29.575686558 +0100
58775 @@ -0,0 +1,5 @@
58776 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
58777 +/* { dg-do run { target arm*-*-* } } */
58778 +/* { dg-options "-mfp16-format=ieee" } */
58779 +
58780 +#include "arm-fp16-ops.h"
58781 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
58782 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C        1970-01-01 01:00:00.000000000 +0100
58783 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C        2010-01-25 09:50:29.575686558 +0100
58784 @@ -0,0 +1,5 @@
58785 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
58786 +/* { dg-do run { target arm*-*-* } } */
58787 +/* { dg-options "-mfp16-format=ieee -ffast-math" } */
58788 +
58789 +#include "arm-fp16-ops.h"
58790 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
58791 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C        1970-01-01 01:00:00.000000000 +0100
58792 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C        2010-01-25 09:50:29.575686558 +0100
58793 @@ -0,0 +1,5 @@
58794 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
58795 +/* { dg-do run { target arm*-*-* } } */
58796 +/* { dg-options "-mfp16-format=alternative" } */
58797 +
58798 +#include "arm-fp16-ops.h"
58799 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
58800 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C        1970-01-01 01:00:00.000000000 +0100
58801 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C        2010-01-25 09:50:29.575686558 +0100
58802 @@ -0,0 +1,5 @@
58803 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
58804 +/* { dg-do run { target arm*-*-* } } */
58805 +/* { dg-options "-mfp16-format=alternative -ffast-math" } */
58806 +
58807 +#include "arm-fp16-ops.h"
58808 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
58809 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C        1970-01-01 01:00:00.000000000 +0100
58810 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C        2010-01-25 09:50:29.575686558 +0100
58811 @@ -0,0 +1,15 @@
58812 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
58813 +/* { dg-do compile { target arm*-*-* } } */
58814 +/* { dg-require-effective-target arm_neon_fp16_ok } */
58815 +/* { dg-options "-mfp16-format=ieee" } */
58816 +/* { dg-add-options arm_neon_fp16 } */
58817 +
58818 +#include "arm-fp16-ops.h"
58819 +
58820 +/* We've specified options for hardware float, including fp16 support, so
58821 +   we should not see any calls to libfuncs here.  */
58822 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
58823 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
58824 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
58825 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
58826 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
58827 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
58828 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C        1970-01-01 01:00:00.000000000 +0100
58829 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C        2010-01-25 09:50:29.575686558 +0100
58830 @@ -0,0 +1,15 @@
58831 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
58832 +/* { dg-do compile { target arm*-*-* } } */
58833 +/* { dg-require-effective-target arm_neon_fp16_ok } */
58834 +/* { dg-options "-mfp16-format=ieee -ffast-math" } */
58835 +/* { dg-add-options arm_neon_fp16 } */
58836 +
58837 +#include "arm-fp16-ops.h"
58838 +
58839 +/* We've specified options for hardware float, including fp16 support, so
58840 +   we should not see any calls to libfuncs here.  */
58841 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
58842 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
58843 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
58844 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
58845 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
58846 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
58847 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C        1970-01-01 01:00:00.000000000 +0100
58848 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C        2010-01-25 09:50:29.575686558 +0100
58849 @@ -0,0 +1,13 @@
58850 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
58851 +/* { dg-do compile { target arm*-*-* } } */
58852 +/* { dg-require-effective-target arm_neon_ok } */
58853 +/* { dg-options "-mfp16-format=ieee" } */
58854 +/* { dg-add-options arm_neon } */
58855 +
58856 +#include "arm-fp16-ops.h"
58857 +
58858 +/* We've specified options for hardware float, so we should not see any 
58859 +   calls to libfuncs here except for those to the conversion functions.  */
58860 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
58861 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
58862 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
58863 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
58864 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C        1970-01-01 01:00:00.000000000 +0100
58865 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C        2010-01-25 09:50:29.575686558 +0100
58866 @@ -0,0 +1,13 @@
58867 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
58868 +/* { dg-do compile { target arm*-*-* } } */
58869 +/* { dg-require-effective-target arm_neon_ok } */
58870 +/* { dg-options "-mfp16-format=ieee -ffast-math" } */
58871 +/* { dg-add-options arm_neon } */
58872 +
58873 +#include "arm-fp16-ops.h"
58874 +
58875 +/* We've specified options for hardware float, so we should not see any 
58876 +   calls to libfuncs here except for those to the conversion functions.  */
58877 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
58878 +/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
58879 +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
58880 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
58881 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops.h  1970-01-01 01:00:00.000000000 +0100
58882 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops.h  2010-01-25 09:50:29.575686558 +0100
58883 @@ -0,0 +1,135 @@
58884 +/* Test various operators on __fp16 and mixed __fp16/float operands.  */
58885 +
58886 +#include <assert.h>
58887 +
58888 +#define CHECK(e,r) assert ((e) == r)
58889 +#define CHECK2(e,r) (assert ((e) == r), temp = (e), assert (temp == r))
58890 +#define TEST(e) assert (e)
58891 +#define TESTNOT(e) assert (!(e))
58892 +
58893 +volatile __fp16 h0 = 0.0;
58894 +volatile __fp16 h1 = 1.0;
58895 +volatile __fp16 h42 = 42.0;
58896 +volatile __fp16 hm2 = -2.0;
58897 +volatile __fp16 temp;
58898 +
58899 +volatile float f0 = 0.0;
58900 +volatile float f1 = 1.0;
58901 +volatile float f42 = 42.0;
58902 +volatile float fm2 = -2.0;
58903 +
58904 +int main (void)
58905 +{
58906 +  TEST (h1);
58907 +  TESTNOT (h0);
58908 +  TEST (!h0);
58909 +  TESTNOT (!h1);
58910 +
58911 +  CHECK2 (-h1, -1.0);
58912 +  CHECK2 (+h1, 1.0);
58913 +
58914 +  CHECK (h1++, 1.0);
58915 +  CHECK (h1, 2.0);
58916 +  CHECK (++h1, 3.0);
58917 +  CHECK (h1, 3.0);
58918 +
58919 +  CHECK (--h1, 2.0);
58920 +  CHECK (h1, 2.0);
58921 +  CHECK (h1--, 2.0);
58922 +  CHECK (h1, 1.0);
58923 +
58924 +  CHECK2 (h42 * hm2, -84.0);
58925 +  CHECK2 (h42 * (__fp16) -2.0, -84.0);
58926 +  CHECK2 (h42 * fm2, -84.0);
58927 +  CHECK2 (f42 * hm2, -84.0);
58928 +
58929 +  CHECK2 (h42 / hm2, -21.0);
58930 +  CHECK2 (h42 / (__fp16) -2.0, -21.0);
58931 +  CHECK2 (h42 / fm2, -21.0);
58932 +  CHECK2 (f42 / hm2, -21.0);
58933 +
58934 +  CHECK2 (hm2 + h42, 40.0);
58935 +  CHECK2 ((__fp16)-2.0 + h42, 40.0);
58936 +  CHECK2 (hm2 + f42, 40.0);
58937 +  CHECK2 (fm2 + h42, 40.0);
58938 +
58939 +  CHECK2 (hm2 - h42, -44.0);
58940 +  CHECK2 ((__fp16)-2.0 - h42, -44.0);
58941 +  CHECK2 (hm2 - f42, -44.0);
58942 +  CHECK2 (fm2 - h42, -44.0);
58943 +
58944 +  TEST (hm2 < h42);
58945 +  TEST (hm2 < (__fp16)42.0);
58946 +  TEST (hm2 < f42);
58947 +  TEST (fm2 < h42);
58948 +
58949 +  TEST (h42 > hm2);
58950 +  TEST ((__fp16)42.0 > hm2);
58951 +  TEST (h42 > fm2);
58952 +  TEST (f42 > hm2);
58953 +
58954 +  TEST (hm2 <= h42);
58955 +  TEST (hm2 <= (__fp16)42.0);
58956 +  TEST (hm2 <= f42);
58957 +  TEST (fm2 <= h42);
58958 +
58959 +  TEST (h42 >= hm2);
58960 +  TEST (h42 >= (__fp16)-2.0);
58961 +  TEST (h42 >= fm2);
58962 +  TEST (f42 >= hm2);
58963 +
58964 +  TESTNOT (h1 == hm2);
58965 +  TEST (h1 == h1);
58966 +  TEST (h1 == (__fp16)1.0);
58967 +  TEST (h1 == f1);
58968 +  TEST (f1 == h1);
58969 +
58970 +  TEST (h1 != hm2);
58971 +  TESTNOT (h1 != h1);
58972 +  TESTNOT (h1 != (__fp16)1.0);
58973 +  TESTNOT (h1 != f1);
58974 +  TESTNOT (f1 != h1);
58975 +
58976 +  CHECK2 ((h1 ? hm2 : h42), -2.0);
58977 +  CHECK2 ((h0 ? hm2 : h42), 42.0);
58978 +
58979 +  CHECK (h0 = h42, 42.0);
58980 +  CHECK (h0, 42.0);
58981 +  CHECK (h0 = (__fp16)-2.0, -2.0);
58982 +  CHECK (h0, -2.0);
58983 +  CHECK (h0 = f0, 0.0);
58984 +  CHECK (h0, 0.0);
58985 +
58986 +  CHECK (h0 += h1, 1.0);
58987 +  CHECK (h0, 1.0);
58988 +  CHECK (h0 += (__fp16)1.0, 2.0);
58989 +  CHECK (h0, 2.0);
58990 +  CHECK (h0 += fm2, 0.0);
58991 +  CHECK (h0, 0.0);
58992 +
58993 +  CHECK (h0 -= h1, -1.0);
58994 +  CHECK (h0, -1.0);
58995 +  CHECK (h0 -= (__fp16)1.0, -2.0);
58996 +  CHECK (h0, -2.0);
58997 +  CHECK (h0 -= fm2, 0.0);
58998 +  CHECK (h0, 0.0);
58999 +
59000 +  h0 = hm2;
59001 +  CHECK (h0 *= hm2, 4.0);
59002 +  CHECK (h0, 4.0);
59003 +  CHECK (h0 *= (__fp16)-2.0, -8.0);
59004 +  CHECK (h0, -8.0);
59005 +  CHECK (h0 *= fm2, 16.0);
59006 +  CHECK (h0, 16.0);
59007 +
59008 +  CHECK (h0 /= hm2, -8.0);
59009 +  CHECK (h0, -8.0);
59010 +  CHECK (h0 /= (__fp16)-2.0, 4.0);
59011 +  CHECK (h0, 4.0);
59012 +  CHECK (h0 /= fm2, -2.0);
59013 +  CHECK (h0, -2.0);
59014 +
59015 +  CHECK ((h0, h1), 1.0);
59016 +
59017 +  return 0;
59018 +}
59019 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
59020 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C 1970-01-01 01:00:00.000000000 +0100
59021 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C 2010-01-25 09:50:29.575686558 +0100
59022 @@ -0,0 +1,14 @@
59023 +/* { dg-do compile { target arm*-*-* } } */
59024 +/* { dg-options "-mfp16-format=ieee" } */
59025 +
59026 +/* Test mangling */
59027 +
59028 +/* { dg-final { scan-assembler "\t.global\t_Z1fPDh" } } */
59029 +void f (__fp16 *x) { }
59030 +
59031 +/* { dg-final { scan-assembler "\t.global\t_Z1gPDhS_" } } */
59032 +void g (__fp16 *x, __fp16 *y) { }
59033 +
59034 +/* { dg-final { scan-assembler "\t.global\t_ZN1SIDhDhE1iE" } } */
59035 +template <typename T, typename U> struct S { static int i; }; 
59036 +template <> int S<__fp16, __fp16>::i = 3;
59037 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
59038 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-overload-1.C       1970-01-01 01:00:00.000000000 +0100
59039 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-overload-1.C       2010-01-25 09:50:29.575686558 +0100
59040 @@ -0,0 +1,16 @@
59041 +/* { dg-do compile { target arm*-*-* } } */
59042 +/* { dg-options "-mfp16-format=ieee" } */
59043 +
59044 +/* __fp16 values are autoconverted to float and should therefore be treated
59045 + * just like float for overloading purposes.  */
59046 +
59047 +extern int frobnify (float x);
59048 +extern int frobnify (double x);
59049 +
59050 +int g (void)
59051 +{
59052 +  return frobnify ((__fp16)1.0);
59053 +}
59054 +
59055 +/* { dg-final { scan-assembler "_Z8frobnifyf" } } */
59056 +/* { dg-final { scan-assembler-not " _Z8frobnifyd" } } */
59057 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
59058 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-param-1.C  1970-01-01 01:00:00.000000000 +0100
59059 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-param-1.C  2010-01-25 09:50:29.575686558 +0100
59060 @@ -0,0 +1,10 @@
59061 +/* { dg-do compile { target arm*-*-* } } */
59062 +/* { dg-options "-mfp16-format=ieee" } */
59063 +
59064 +/* Functions cannot have parameters of type __fp16.  */
59065 +extern void f (__fp16);                /* { dg-error "parameters cannot have __fp16 type" } */
59066 +extern void (*pf) (__fp16);    /* { dg-error "parameters cannot have __fp16 type" } */
59067 +
59068 +/* These should be OK.  */
59069 +extern void g (__fp16 *);
59070 +extern void (*pg) (__fp16 *);
59071 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
59072 --- a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-return-1.C 1970-01-01 01:00:00.000000000 +0100
59073 +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-return-1.C 2010-01-25 09:50:29.575686558 +0100
59074 @@ -0,0 +1,10 @@
59075 +/* { dg-do compile { target arm*-*-* } } */
59076 +/* { dg-options "-mfp16-format=ieee" } */
59077 +
59078 +/* Functions cannot return type __fp16.  */
59079 +extern __fp16 f (void);                /* { dg-error "cannot return __fp16" } */
59080 +extern __fp16 (*pf) (void);    /* { dg-error "cannot return __fp16" } */
59081 +
59082 +/* These should be OK.  */
59083 +extern __fp16 *g (void);
59084 +extern __fp16 *(*pg) (void);
59085 diff -Nur a/gcc/testsuite/g++.dg/ext/dllexport2a.cc b/gcc/testsuite/g++.dg/ext/dllexport2a.cc
59086 --- a/gcc/testsuite/g++.dg/ext/dllexport2a.cc   1970-01-01 01:00:00.000000000 +0100
59087 +++ b/gcc/testsuite/g++.dg/ext/dllexport2a.cc   2010-01-25 09:50:29.575686558 +0100
59088 @@ -0,0 +1,21 @@
59089 +extern void i1();
59090 +extern void i3();
59091 +extern void i4();
59092 +extern void i5();
59093 +
59094 +extern void e1();
59095 +extern void e3();
59096 +extern void e4();
59097 +extern void e5();
59098 +
59099 +int main () {
59100 +  i1();
59101 +  i3();
59102 +  i4();
59103 +  i5();
59104 +
59105 +  e1();
59106 +  e3();
59107 +  e4();
59108 +  e5();
59109 +}
59110 diff -Nur a/gcc/testsuite/g++.dg/ext/dllexport2.C b/gcc/testsuite/g++.dg/ext/dllexport2.C
59111 --- a/gcc/testsuite/g++.dg/ext/dllexport2.C     1970-01-01 01:00:00.000000000 +0100
59112 +++ b/gcc/testsuite/g++.dg/ext/dllexport2.C     2010-01-25 09:50:29.575686558 +0100
59113 @@ -0,0 +1,52 @@
59114 +// { dg-do link }
59115 +// { dg-require-dll "" }
59116 +// { dg-additional-sources "dllexport2a.cc" }
59117 +// { dg-options "-O2" }
59118 +
59119 +/* Test that inline functions declared "dllexport" appear in object
59120 +   files, even if they are not called.
59121 +
59122 +   This behavior is required by the ARM C++ ABI:
59123 +
59124 +     Exporting a function that can be inlined should force the
59125 +     creation and export of an out-of-line copy of it.
59126 +
59127 +   and should presumably also apply.
59128 +
59129 +   Visual Studio 2005 also honors that rule.  */
59130 +
59131 +__declspec(dllexport) inline void i1() {}
59132 +
59133 +__declspec(dllexport) extern inline void e1() {}
59134 +
59135 +/* It is invalid to declare the function inline after its definition.  */
59136 +#if 0
59137 +__declspec(dllexport) void i2() {}
59138 +inline void i2();
59139 +
59140 +__declspec(dllexport) extern void e2() {}
59141 +inline void e2();
59142 +#endif
59143 +
59144 +__declspec(dllexport) inline void i3() {}
59145 +void i3();
59146 +
59147 +__declspec(dllexport) inline void e3() {}
59148 +extern void e3();
59149 +
59150 +__declspec(dllexport) void i4();
59151 +inline void i4() {};
59152 +
59153 +__declspec(dllexport) extern void e4();
59154 +inline void e4() {};
59155 +
59156 +__declspec(dllexport) inline void i5();
59157 +void i5() {};
59158 +
59159 +__declspec(dllexport) inline void e5();
59160 +extern void e5() {};
59161 +
59162 +/* Make sure that just declaring the function -- without defining it
59163 +   -- does not cause errors.  */
59164 +__declspec(dllexport) inline void i6();
59165 +__declspec(dllexport) extern inline void e6();
59166 diff -Nur a/gcc/testsuite/g++.dg/ext/ms-1.C b/gcc/testsuite/g++.dg/ext/ms-1.C
59167 --- a/gcc/testsuite/g++.dg/ext/ms-1.C   1970-01-01 01:00:00.000000000 +0100
59168 +++ b/gcc/testsuite/g++.dg/ext/ms-1.C   2010-01-25 09:50:29.575686558 +0100
59169 @@ -0,0 +1,17 @@
59170 +
59171 +// MS allows more things to be pointers to member functions
59172 +// { dg-options "-fms-extensions" }
59173 +
59174 +struct X
59175 +{
59176 +  void Foo (X *);
59177 +  void Bar ();
59178 +};
59179 +
59180 +void Quux (void (X::*) ());
59181 +
59182 +void X::Foo (X *ptr)  // { dg-message "candidates" }
59183 +{
59184 +  Quux (Foo); // { dg-error "no matches" }
59185 +  Quux (Bar);
59186 +}
59187 diff -Nur a/gcc/testsuite/g++.dg/init/ref15.C b/gcc/testsuite/g++.dg/init/ref15.C
59188 --- a/gcc/testsuite/g++.dg/init/ref15.C 2007-10-04 19:58:07.000000000 +0200
59189 +++ b/gcc/testsuite/g++.dg/init/ref15.C 2010-01-25 09:50:29.575686558 +0100
59190 @@ -1,6 +1,8 @@
59191  // PR c++/20416.  We correctly constructed the temporary S in foo(),
59192  // but incorrectly destroyed it every time foo() was called.
59193 -// { dg-do run }
59194 +// When using a wrapped target, there is no way to override the exit
59195 +// code after returning from main.
59196 +// { dg-do run { target unwrapped } }
59197  extern "C" void abort (void);
59198  extern "C" void _exit (int);
59199  
59200 diff -Nur a/gcc/testsuite/g++.dg/opt/alias5.C b/gcc/testsuite/g++.dg/opt/alias5.C
59201 --- a/gcc/testsuite/g++.dg/opt/alias5.C 1970-01-01 01:00:00.000000000 +0100
59202 +++ b/gcc/testsuite/g++.dg/opt/alias5.C 2010-01-25 09:50:29.575686558 +0100
59203 @@ -0,0 +1,24 @@
59204 +// { dg-options "-O2" }
59205 +// ICE in struct-alias
59206 +
59207 +typedef int (*PFN)(void);
59208 +int f (void);
59209 +struct Container
59210 +{
59211 +  PFN ptr;
59212 +};
59213 +
59214 +inline PFN Get (struct Container *tpl)
59215 +{
59216 +  return tpl->ptr;
59217 +}
59218 +void Other (PFN);
59219 +
59220 +inline void Foo (PFN pfn)
59221 +{
59222 +  Other (Get ((struct Container *)&pfn));
59223 +}
59224 +void Bar (void)
59225 +{
59226 +  Foo (f);
59227 +}
59228 diff -Nur a/gcc/testsuite/g++.dg/other/arm-neon-1.C b/gcc/testsuite/g++.dg/other/arm-neon-1.C
59229 --- a/gcc/testsuite/g++.dg/other/arm-neon-1.C   1970-01-01 01:00:00.000000000 +0100
59230 +++ b/gcc/testsuite/g++.dg/other/arm-neon-1.C   2010-01-25 09:50:29.585686502 +0100
59231 @@ -0,0 +1,18 @@
59232 +/* Basic smoke test for arm_neon.h */
59233 +
59234 +/* { dg-do assemble } */
59235 +/* { dg-require-effective-target arm_neon_ok } */
59236 +/* { dg-add-options arm_neon } */
59237 +
59238 +#include "arm_neon.h"
59239 +
59240 +float a[4];
59241 +
59242 +void test(void)
59243 +{
59244 +  float32x2x2_t v;
59245 +  float32x2_t res;
59246 +  v = vld2_f32(a);
59247 +  res = vadd_f32(v.val[0], v.val[1]);
59248 +  vst1_f32(a, res);
59249 +}
59250 diff -Nur a/gcc/testsuite/g++.dg/other/armv7m-1.C b/gcc/testsuite/g++.dg/other/armv7m-1.C
59251 --- a/gcc/testsuite/g++.dg/other/armv7m-1.C     1970-01-01 01:00:00.000000000 +0100
59252 +++ b/gcc/testsuite/g++.dg/other/armv7m-1.C     2010-01-25 09:50:29.585686502 +0100
59253 @@ -0,0 +1,69 @@
59254 +/* { dg-do run { target arm*-*-* } } */
59255 +/* Test Armv7m interrupt routines.  */
59256 +#include <stdlib.h>
59257 +
59258 +#ifdef __ARM_ARCH_7M__
59259 +void __attribute__((interrupt))
59260 +foo(void)
59261 +{
59262 +  long long n;
59263 +  long p;
59264 +  asm volatile ("" : "=r" (p) : "0" (&n));
59265 +  if (p & 4)
59266 +    abort ();
59267 +  return;
59268 +}
59269 +
59270 +void __attribute__((interrupt))
59271 +bar(void)
59272 +{
59273 +  throw 42;
59274 +}
59275 +
59276 +int main()
59277 +{
59278 +  int a;
59279 +  int before;
59280 +  int after;
59281 +  volatile register int sp asm("sp");
59282 +
59283 +  asm volatile ("mov %0, sp\n"
59284 +               "blx %2\n"
59285 +               "mov %1, sp\n"
59286 +               : "=&r" (before), "=r" (after) : "r" (foo)
59287 +               : "memory", "cc", "r0", "r1", "r2", "r3", "ip", "lr");
59288 +  if (before != after)
59289 +    abort();
59290 +  asm volatile ("mov %0, sp\n"
59291 +               "sub sp, sp, #4\n"
59292 +               "blx %2\n"
59293 +               "add sp, sp, #4\n"
59294 +               "mov %1, sp\n"
59295 +               : "=&r" (before), "=r" (after) : "r" (foo)
59296 +               : "memory", "cc", "r0", "r1", "r2", "r3", "ip", "lr");
59297 +  if (before != after)
59298 +    abort();
59299 +  before = sp;
59300 +  try
59301 +    {
59302 +      bar();
59303 +    }
59304 +  catch (int i)
59305 +    {
59306 +      if (i != 42)
59307 +       abort();
59308 +    }
59309 +  catch (...)
59310 +    {
59311 +      abort();
59312 +    }
59313 +  if (before != sp)
59314 +    abort();
59315 +  exit(0);
59316 +}
59317 +#else
59318 +int main()
59319 +{
59320 +  exit (0);
59321 +}
59322 +#endif
59323 diff -Nur a/gcc/testsuite/g++.dg/remove-local-statics-1.C b/gcc/testsuite/g++.dg/remove-local-statics-1.C
59324 --- a/gcc/testsuite/g++.dg/remove-local-statics-1.C     1970-01-01 01:00:00.000000000 +0100
59325 +++ b/gcc/testsuite/g++.dg/remove-local-statics-1.C     2010-01-25 09:50:29.585686502 +0100
59326 @@ -0,0 +1,21 @@
59327 +/* Verify that we do not eliminate a static variable in
59328 +   main::Local::Foo.  */
59329 +
59330 +/* { dg-do compile } */
59331 +/* { dg-options "-O2 -fremove-local-statics" } */
59332 +/* { dg-final { scan-assembler "thestatic" } } */
59333 +
59334 +int
59335 +main (void)
59336 +{
59337 +   static int thestatic = 0;
59338 +   struct Local {
59339 +     __attribute__((__noinline__))
59340 +     static void Foo () { thestatic = 1; }
59341 +   };
59342 +
59343 +   thestatic = 2;
59344 +   Local::Foo();
59345 +
59346 +   return thestatic++;
59347 +}
59348 diff -Nur a/gcc/testsuite/g++.dg/remove-local-statics-2.C b/gcc/testsuite/g++.dg/remove-local-statics-2.C
59349 --- a/gcc/testsuite/g++.dg/remove-local-statics-2.C     1970-01-01 01:00:00.000000000 +0100
59350 +++ b/gcc/testsuite/g++.dg/remove-local-statics-2.C     2010-01-25 09:50:29.585686502 +0100
59351 @@ -0,0 +1,21 @@
59352 +/* Verify that we do not eliminate a static variable in
59353 +   main due to its use in Local::Foo.  */
59354 +
59355 +/* { dg-do compile } */
59356 +/* { dg-options "-O2 -fremove-local-statics" } */
59357 +/* { dg-final { scan-assembler "thestatic" } } */
59358 +
59359 +int
59360 +main (void)
59361 +{
59362 +   static int thestatic = 0;
59363 +   struct Local {
59364 +     __attribute__((__noinline__))
59365 +     static int Foo () { return thestatic; }
59366 +   };
59367 +
59368 +   thestatic = 2;
59369 +   thestatic = Local::Foo();
59370 +
59371 +   return thestatic++;
59372 +}
59373 diff -Nur a/gcc/testsuite/g++.dg/template/overload9.C b/gcc/testsuite/g++.dg/template/overload9.C
59374 --- a/gcc/testsuite/g++.dg/template/overload9.C 2008-09-19 00:29:39.000000000 +0200
59375 +++ b/gcc/testsuite/g++.dg/template/overload9.C 2010-01-25 09:50:29.585686502 +0100
59376 @@ -7,12 +7,12 @@
59377  template <typename T>
59378  struct A 
59379  {
59380 -  A<T>& operator<<(A<T>& (*)(A<T>&)); // { dg-message "candidate" }
59381 +  A<T>& operator<<(A<T>& (*)(A<T>&));
59382  };
59383  
59384  template <typename T> A<T>& foo(A<T>&);
59385  extern A<char> c;
59386  
59387  int main () {
59388 -  c << (1, foo); // { dg-error "no match" }
59389 +  c << (1, foo); // { dg-error "no context" }
59390  }
59391 diff -Nur a/gcc/testsuite/g++.dg/torture/pr36191.C b/gcc/testsuite/g++.dg/torture/pr36191.C
59392 --- a/gcc/testsuite/g++.dg/torture/pr36191.C    2008-12-29 19:25:19.000000000 +0100
59393 +++ b/gcc/testsuite/g++.dg/torture/pr36191.C    2010-01-25 09:50:29.585686502 +0100
59394 @@ -1,6 +1,7 @@
59395  // PR c++/36191
59396  // { dg-do compile }
59397  // { dg-options "-fnon-call-exceptions" }
59398 +// { dg-skip-if "Frame pointer required for unwind tables" { sh*-*-* } "-fomit-frame-pointer" "" }
59399  
59400  __complex__ double
59401  foo (__complex__ double x, double y)
59402 diff -Nur a/gcc/testsuite/g++.dg/tree-ssa/sink-1.C b/gcc/testsuite/g++.dg/tree-ssa/sink-1.C
59403 --- a/gcc/testsuite/g++.dg/tree-ssa/sink-1.C    1970-01-01 01:00:00.000000000 +0100
59404 +++ b/gcc/testsuite/g++.dg/tree-ssa/sink-1.C    2010-01-25 09:50:29.585686502 +0100
59405 @@ -0,0 +1,50 @@
59406 +/* { dg-do run } */
59407 +/* { dg-options "-O1" } */
59408 +
59409 +class A {
59410 + public:
59411 +  A() {}
59412 +  virtual ~A() {}  
59413 +  void * dostuff();
59414 +  
59415 +  virtual int dovirtual() = 0;
59416 +};
59417 +
59418 +
59419 +class B : public A {
59420 + public:
59421 +  B() {}
59422 +  int dovirtual() { return 0;}
59423 +  virtual ~B() {};
59424 +}; 
59425 +
59426 +class C : public B {
59427 + public:
59428 +  C() {}
59429 +  virtual ~C() {};
59430 +};
59431 +
59432 +void* A::dostuff()
59433 +{
59434 +  return (void*)dovirtual();
59435 +}
59436 +
59437 +/* tree-ssa-sink was sinking the inlined destructor for STUFF out of
59438 +   the first inner block and into the second one, where it was ending up
59439 +   after the inlined constructor for STUFF2.  This is bad because
59440 +   cfgexpand aliases STUFF and STUFF2 to the same storage at -O1
59441 +   (i.e., without -fstrict-aliasing), with the result that STUFF2's
59442 +   vtable was getting trashed. */
59443 +
59444 +int main() {
59445 +  {
59446 +    B stuff;
59447 +    stuff.dostuff();
59448 +  }
59449 +  {
59450 +    C stuff2;
59451 +    stuff2.dostuff();
59452 +  }
59453 +  return 0;
59454 +}
59455 +
59456 diff -Nur a/gcc/testsuite/g++.dg/vect/vect.exp b/gcc/testsuite/g++.dg/vect/vect.exp
59457 --- a/gcc/testsuite/g++.dg/vect/vect.exp        2009-02-20 16:20:38.000000000 +0100
59458 +++ b/gcc/testsuite/g++.dg/vect/vect.exp        2010-01-25 09:50:29.585686502 +0100
59459 @@ -105,7 +105,7 @@
59460  } elseif [istarget "ia64-*-*"] {
59461      set dg-do-what-default run
59462  } elseif [is-effective-target arm_neon_ok] {
59463 -    lappend DEFAULT_VECTCFLAGS "-mfpu=neon" "-mfloat-abi=softfp"
59464 +    eval lappend DEFAULT_VECTCFLAGS [add_options_for_arm_neon ""]
59465      if [is-effective-target arm_neon_hw] {
59466        set dg-do-what-default run
59467      } else {
59468 diff -Nur a/gcc/testsuite/g++.dg/warn/null4.C b/gcc/testsuite/g++.dg/warn/null4.C
59469 --- a/gcc/testsuite/g++.dg/warn/null4.C 2007-01-30 23:29:11.000000000 +0100
59470 +++ b/gcc/testsuite/g++.dg/warn/null4.C 2010-01-25 09:50:29.585686502 +0100
59471 @@ -11,9 +11,22 @@
59472    if (NULL < NULL) return -1; // { dg-warning "NULL used in arithmetic" } 
59473    if (NULL >= 0) return -1;   // { dg-warning "NULL used in arithmetic" } 
59474    if (NULL <= 0) return -1;   // { dg-warning "NULL used in arithmetic" } 
59475 +  // Adding to the NULL pointer, which has no specific type, should
59476 +  // result in a warning; the type of the resulting expression is
59477 +  // actually "int", not a pointer type.
59478 +  if (NULL + 1) return -1;    // { dg-warning "NULL used in arithmetic" }
59479 +  if (1 + NULL) return -1;    // { dg-warning "NULL used in arithmetic" }
59480    return 0;
59481  }
59482  
59483 +int *ip;
59484 +
59485 +struct S {};
59486 +typedef int S::*SPD;
59487 +typedef void (S::*SPF)(void);
59488 +SPD spd;
59489 +SPF spf;
59490 +
59491  int bar (void) 
59492  {
59493    if (NULL) return -1;
59494 @@ -25,5 +38,18 @@
59495    if (NULL != NULL) return -1;
59496    if (NULL == 0) return -1;
59497    if (NULL != 0) return -1;
59498 +  // Subtraction of pointers is vaild, so using NULL is OK.
59499 +  if (ip - NULL) return -1;
59500 +  if (NULL - NULL) return -1;
59501 +  // Comparing NULL with a pointer-to-member is OK.
59502 +  if (NULL == spd) return -1;
59503 +  if (spd == NULL) return -1;
59504 +  if (NULL != spd) return -1;
59505 +  if (spd != NULL) return -1;
59506 +  if (NULL == spf) return -1;
59507 +  if (spf == NULL) return -1;
59508 +  if (NULL != spf) return -1;
59509 +  if (spf != NULL) return -1;
59510 +
59511    return 0;
59512  }
59513 diff -Nur a/gcc/testsuite/gfortran.dg/vect/vect.exp b/gcc/testsuite/gfortran.dg/vect/vect.exp
59514 --- a/gcc/testsuite/gfortran.dg/vect/vect.exp   2009-02-20 16:20:38.000000000 +0100
59515 +++ b/gcc/testsuite/gfortran.dg/vect/vect.exp   2010-01-25 09:50:29.585686502 +0100
59516 @@ -98,7 +98,7 @@
59517  } elseif [istarget "ia64-*-*"] {
59518      set dg-do-what-default run
59519  } elseif [is-effective-target arm_neon_ok] {
59520 -    lappend DEFAULT_VECTCFLAGS "-mfpu=neon" "-mfloat-abi=softfp"
59521 +    eval lappend DEFAULT_VECTCFLAGS [add_options_for_arm_neon ""]
59522      if [is-effective-target arm_neon_hw] {
59523        set dg-do-what-default run
59524      } else {
59525 diff -Nur a/gcc/testsuite/g++.old-deja/g++.other/overload11.C b/gcc/testsuite/g++.old-deja/g++.other/overload11.C
59526 --- a/gcc/testsuite/g++.old-deja/g++.other/overload11.C 2008-09-19 00:29:39.000000000 +0200
59527 +++ b/gcc/testsuite/g++.old-deja/g++.other/overload11.C 2010-01-25 09:50:29.585686502 +0100
59528 @@ -54,11 +54,10 @@
59529    
59530    ptr = (ovl);              // ok
59531    ptr = (&ovl);             // ok
59532 -  // 13.4 indicates these are ok.
59533 -  ptr = (0, ovl);           // ok { dg-bogus "" "" { xfail *-*-* } }
59534 -  ptr = (0, &ovl);          // ok { dg-bogus "" "" { xfail *-*-* } }
59535 -  ptr = (argc ? ovl : ovl); // ok { dg-bogus "" "" { xfail *-*-* } }
59536 -  ptr = (argc ? &ovl : &ovl);// ok { dg-bogus "" "" { xfail *-*-* } }
59537 +  ptr = (0, ovl);           // ok { dg-error "no context" }
59538 +  ptr = (0, &ovl);          // ok { dg-error "no context" }
59539 +  ptr = (argc ? ovl : ovl); // ok { dg-error "no context" }
59540 +  ptr = (argc ? &ovl : &ovl);// ok { dg-error "no context" }
59541    
59542    vptr = (ovl);              // { dg-error "" } no matching candidates
59543    vptr = (&ovl);             // { dg-error "" } no matching candidates
59544 diff -Nur a/gcc/testsuite/lib/prune.exp b/gcc/testsuite/lib/prune.exp
59545 --- a/gcc/testsuite/lib/prune.exp       2009-02-20 16:20:38.000000000 +0100
59546 +++ b/gcc/testsuite/lib/prune.exp       2010-01-25 09:50:29.585686502 +0100
59547 @@ -57,3 +57,34 @@
59548         return $text
59549      }
59550  }
59551 +
59552 +# Extend prune_warnings (provided by DejaGNU itself) to prune more
59553 +# things.  The prune_gcc_output function above is called only by some
59554 +# tests; prune_warnings is used by all.
59555 +if { [info procs prune_warnings_orig] == "" } {
59556 +    rename prune_warnings prune_warnings_orig
59557 +    
59558 +    proc prune_warnings { text } {
59559 +       set text [prune_warnings_orig $text]
59560 +       
59561 +       if { [ishost "sparc*-*-solaris2*"] } {
59562 +           # When testing a compiler built for SPARC Solaris 2.9 (or earlier)
59563 +           # on a host running Solaris 2.10 (or later), we get this warning 
59564 +           # from the static linker when building with g++:
59565 +           #
59566 +           #   libm.so.1, needed by .../libstdc++.so may conflict with
59567 +           #   libm.so
59568 +           #
59569 +           # The warning is issued because libstdc++ is linked against
59570 +           # libm.so.1 (from the Solaris 2.9 sysroot), whereas Solaris 2.10
59571 +           # provides both libm.so.2 and libm.so.1.  On Solaris 2.10, libc.so
59572 +           # depends on libm.so.2, so all programs pull in libm.so.2.
59573 +           #
59574 +           # Pulling both libraries must in fact be harmless, as, otherwise,
59575 +           # programs built for Solaris 2.9 would break on Solaris 2.10.
59576 +           regsub -all "(^|\n)\[^\n\]*: warning: libm.so.1, needed by \[^\n\]*, may conflict with libm.so.2" $text "" text
59577 +       }
59578 +
59579 +       return $text
59580 +    }
59581 +}
59582 diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
59583 --- a/gcc/testsuite/lib/target-supports.exp     2009-07-21 09:22:51.000000000 +0200
59584 +++ b/gcc/testsuite/lib/target-supports.exp     2010-01-25 09:50:29.585686502 +0100
59585 @@ -491,6 +491,7 @@
59586              || [istarget avr-*-*]
59587              || [istarget bfin-*-*]
59588              || [istarget powerpc-*-eabi*]
59589 +            || [istarget powerpc-*-elf]
59590              || [istarget cris-*-*]
59591              || [istarget crisv32-*-*]
59592              || [istarget fido-*-elf]
59593 @@ -611,6 +612,18 @@
59594      } "-pthread"]
59595  }
59596  
59597 +# Return 1 if compilation with -mpe-aligned-commons is error-free
59598 +# for trivial code, 0 otherwise.
59599 +
59600 +proc check_effective_target_pe_aligned_commons {} {
59601 +    if { [istarget *-*-cygwin*] || [istarget *-*-mingw*] } {
59602 +       return [check_no_compiler_messages pe_aligned_commons object {
59603 +           int foo;
59604 +       } "-mpe-aligned-commons"]
59605 +    }
59606 +    return 0
59607 +}
59608 +
59609  # Return 1 if the target supports -fstack-protector
59610  proc check_effective_target_fstack_protector {} {
59611      return [check_runtime fstack_protector {
59612 @@ -720,6 +733,15 @@
59613      } [add_options_for_mips16_attribute ""]]
59614  }
59615  
59616 +# Return 1 if the target supports long double larger than double when
59617 +# using the new ABI, 0 otherwise.
59618 +
59619 +proc check_effective_target_mips_newabi_large_long_double { } {
59620 +    return [check_no_compiler_messages mips_newabi_large_long_double object {
59621 +       int dummy[sizeof(long double) > sizeof(double) ? 1 : -1];
59622 +    } "-mabi=64"]
59623 +}
59624 +
59625  # Return 1 if the current multilib does not generate PIC by default.
59626  
59627  proc check_effective_target_nonpic { } {
59628 @@ -1408,6 +1430,18 @@
59629      }]
59630  }
59631  
59632 +# Return 1 if this is an ARM target that only supports aligned vector accesses
59633 +proc check_effective_target_arm_vect_no_misalign { } {
59634 +    return [check_no_compiler_messages arm_vect_no_misalign assembly {
59635 +       #if !defined(__arm__) \
59636 +           || (defined(__ARMEL__) \
59637 +               && (!defined(__thumb__) || defined(__thumb2__)))
59638 +       #error FOO
59639 +       #endif
59640 +    }]
59641 +}
59642 +
59643 +
59644  # Return 1 if this is an ARM target supporting -mfpu=vfp
59645  # -mfloat-abi=softfp.  Some multilibs may be incompatible with these
59646  # options.
59647 @@ -1422,18 +1456,110 @@
59648      }
59649  }
59650  
59651 -# Return 1 if this is an ARM target supporting -mfpu=neon
59652 -# -mfloat-abi=softfp.  Some multilibs may be incompatible with these
59653 +# Return 1 if this is an ARM target supporting -mfpu=vfp
59654 +# -mfloat-abi=hard.  Some multilibs may be incompatible with these
59655  # options.
59656  
59657 -proc check_effective_target_arm_neon_ok { } {
59658 +proc check_effective_target_arm_hard_vfp_ok { } {
59659      if { [check_effective_target_arm32] } {
59660 -        return [check_no_compiler_messages arm_neon_ok object {
59661 -            int dummy;
59662 -        } "-mfpu=neon -mfloat-abi=softfp"]
59663 +       return [check_no_compiler_messages arm_hard_vfp_ok executable {
59664 +           int main() { return 0;}
59665 +       } "-mfpu=vfp -mfloat-abi=hard"]
59666      } else {
59667 -        return 0
59668 +       return 0
59669 +    }
59670 +}
59671 +
59672 +# Add the options needed for NEON.  We need either -mfloat-abi=softfp
59673 +# or -mfloat-abi=hard, but if one is already specified by the
59674 +# multilib, use it.  Similarly, if a -mfpu option already enables
59675 +# NEON, do not add -mfpu=neon.
59676 +
59677 +proc add_options_for_arm_neon { flags } {
59678 +    if { ! [check_effective_target_arm_neon_ok] } {
59679 +       return "$flags"
59680 +    }
59681 +    global et_arm_neon_flags
59682 +    return "$flags $et_arm_neon_flags"
59683 +}
59684 +
59685 +# Return 1 if this is an ARM target supporting -mfpu=neon
59686 +# -mfloat-abi=softfp or equivalent options.  Some multilibs may be
59687 +# incompatible with these options.  Also set et_arm_neon_flags to the
59688 +# best options to add.
59689 +
59690 +proc check_effective_target_arm_neon_ok_nocache { } {
59691 +    global et_arm_neon_flags
59692 +    set et_arm_neon_flags ""
59693 +    if { [check_effective_target_arm32] } {
59694 +       foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon" "-mfpu=neon -mfloat-abi=softfp"} {
59695 +           if { [check_no_compiler_messages_nocache arm_neon_ok object {
59696 +               #include "arm_neon.h"
59697 +               int dummy;
59698 +           } "$flags"] } {
59699 +               set et_arm_neon_flags $flags
59700 +               return 1
59701 +           }
59702 +       }
59703      }
59704 +
59705 +    return 0
59706 +}
59707 +
59708 +proc check_effective_target_arm_neon_ok { } {
59709 +    return [check_cached_effective_target arm_neon_ok \
59710 +               check_effective_target_arm_neon_ok_nocache]
59711 +}
59712 +
59713 +# Add the options needed for NEON.  We need either -mfloat-abi=softfp
59714 +# or -mfloat-abi=hard, but if one is already specified by the
59715 +# multilib, use it.
59716 +
59717 +proc add_options_for_arm_neon_fp16 { flags } {
59718 +    if { ! [check_effective_target_arm_neon_fp16_ok] } {
59719 +       return "$flags"
59720 +    }
59721 +    global et_arm_neon_fp16_flags
59722 +    return "$flags $et_arm_neon_fp16_flags"
59723 +}
59724 +
59725 +# Return 1 if this is an ARM target supporting -mfpu=neon-fp16
59726 +# -mfloat-abi=softfp or equivalent options.  Some multilibs may be
59727 +# incompatible with these options.  Also set et_arm_neon_flags to the
59728 +# best options to add.
59729 +
59730 +proc check_effective_target_arm_neon_fp16_ok_nocache { } {
59731 +    global et_arm_neon_fp16_flags
59732 +    set et_arm_neon_fp16_flags ""
59733 +    if { [check_effective_target_arm32] } {
59734 +       # Always add -mfpu=neon-fp16, since there is no preprocessor
59735 +       # macro for FP16 support.
59736 +       foreach flags {"-mfpu=neon-fp16" "-mfpu=neon-fp16 -mfloat-abi=softfp"} {
59737 +           if { [check_no_compiler_messages_nocache arm_neon_fp16_ok object {
59738 +               #include "arm_neon.h"
59739 +               int dummy;
59740 +           } "$flags"] } {
59741 +               set et_arm_neon_fp16_flags $flags
59742 +               return 1
59743 +           }
59744 +       }
59745 +    }
59746 +
59747 +    return 0
59748 +}
59749 +
59750 +proc check_effective_target_arm_neon_fp16_ok { } {
59751 +    return [check_cached_effective_target arm_neon_fp16_ok \
59752 +               check_effective_target_arm_neon_fp16_ok_nocache]
59753 +}
59754 +
59755 +# Return 1 if this is an arm target using 32-bit instructions, but not thumb
59756 +proc check_effective_target_arm_not_thumb { } {
59757 +    return [check_no_compiler_messages arm_not_thumb assembly {
59758 +      #if !defined(__arm__) || defined(__thumb__)
59759 +      #error FOO
59760 +      #endif
59761 +    }]
59762  }
59763  
59764  # Return 1 is this is an ARM target where -mthumb causes Thumb-1 to be
59765 @@ -1447,6 +1573,17 @@
59766      } "-mthumb"]
59767  }
59768  
59769 +# Return 1 is this is an ARM target where -mthumb causes Thumb-2 to be
59770 +# used.
59771 +
59772 +proc check_effective_target_arm_thumb2_ok { } {
59773 +    return [check_no_compiler_messages arm_thumb2_ok assembly {
59774 +       #if !defined(__thumb2__)
59775 +       #error FOO
59776 +       #endif
59777 +    } "-mthumb"]
59778 +}
59779 +
59780  # Return 1 if the target supports executing NEON instructions, 0
59781  # otherwise.  Cache the result.
59782  
59783 @@ -1461,7 +1598,7 @@
59784                : "0" (a), "w" (b));
59785           return (a != 1);
59786         }
59787 -    } "-mfpu=neon -mfloat-abi=softfp"]
59788 +    } [add_options_for_arm_neon ""]]
59789  }
59790  
59791  # Return 1 if this is a ARM target with NEON enabled.
59792 @@ -1504,6 +1641,19 @@
59793      }]
59794  }
59795  
59796 +# Return 1 if this is an ARM target supporting -mcpu=iwmmxt.
59797 +# Some multilibs may be incompatible with this option.
59798 +
59799 +proc check_effective_target_arm_iwmmxt_ok { } {
59800 +    if { [check_effective_target_arm32] } {
59801 +       return [check_no_compiler_messages arm_iwmmxt_ok object {
59802 +           int dummy;
59803 +       } "-mcpu=iwmmxt"]
59804 +    } else {
59805 +       return 0
59806 +    }
59807 +}
59808 +
59809  # Return 1 if this is a PowerPC target with floating-point registers.
59810  
59811  proc check_effective_target_powerpc_fprs { } {
59812 @@ -1700,6 +1850,26 @@
59813      return $et_vect_shift_saved
59814  }
59815  
59816 +# Return 1 if the target supports hardware vector shift operation for char.
59817 +
59818 +proc check_effective_target_vect_shift_char { } {
59819 +    global et_vect_shift_char_saved
59820 +
59821 +    if [info exists et_vect_shift_char_saved] {
59822 +       verbose "check_effective_target_vect_shift_char: using cached result" 2
59823 +    } else {
59824 +       set et_vect_shift_char_saved 0
59825 +       if { ([istarget powerpc*-*-*]
59826 +             && ![istarget powerpc-*-linux*paired*])
59827 +            || [check_effective_target_arm32] } {
59828 +          set et_vect_shift_char_saved 1
59829 +       }
59830 +    }
59831 +
59832 +    verbose "check_effective_target_vect_shift_char: returning $et_vect_shift_char_saved" 2
59833 +    return $et_vect_shift_char_saved
59834 +}
59835 +
59836  # Return 1 if the target supports hardware vectors of long, 0 otherwise.
59837  #
59838  # This can change for different subtargets so do not cache the result.
59839 @@ -2159,7 +2329,7 @@
59840         if { [istarget mipsisa64*-*-*]
59841              || [istarget sparc*-*-*]
59842              || [istarget ia64-*-*]
59843 -            || [check_effective_target_arm32] } { 
59844 +            || [check_effective_target_arm_vect_no_misalign] } { 
59845             set et_vect_no_align_saved 1
59846         }
59847      }
59848 @@ -2273,6 +2443,24 @@
59849      return $et_vector_alignment_reachable_for_64bit_saved
59850  }
59851  
59852 +# Return 1 if the target only requires element alignment for vector accesses
59853 +
59854 +proc check_effective_target_vect_element_align { } {
59855 +    global et_vect_element_align
59856 +
59857 +    if [info exists et_vect_element_align] {
59858 +       verbose "check_effective_target_vect_elemetn_align: using cached result" 2
59859 +    } else {
59860 +       set et_vect_element_align 0
59861 +       if { [istarget arm*-*-*] } {
59862 +          set et_vect_element_align 1
59863 +       }
59864 +    }
59865 +
59866 +    verbose "check_effective_target_vect_element_align: returning $et_vect_element_align" 2
59867 +    return $et_vect_element_align
59868 +}
59869 +
59870  # Return 1 if the target supports vector conditional operations, 0 otherwise.
59871  
59872  proc check_effective_target_vect_condition { } {
59873 @@ -2468,7 +2656,8 @@
59874          verbose "check_effective_target_section_anchors: using cached result" 2
59875      } else {
59876          set et_section_anchors_saved 0
59877 -        if { [istarget powerpc*-*-*] } {
59878 +        if { [istarget powerpc*-*-*] 
59879 +             || [istarget arm*-*-*] } {
59880             set et_section_anchors_saved 1
59881          }
59882      }
59883 diff -Nur a/gcc/timevar.def b/gcc/timevar.def
59884 --- a/gcc/timevar.def   2009-02-20 16:20:38.000000000 +0100
59885 +++ b/gcc/timevar.def   2010-01-25 09:50:29.585686502 +0100
59886 @@ -134,6 +134,7 @@
59887  DEFTIMEVAR (TV_PREDCOM              , "predictive commoning")
59888  DEFTIMEVAR (TV_TREE_LOOP_INIT       , "tree loop init")
59889  DEFTIMEVAR (TV_TREE_LOOP_FINI       , "tree loop fini")
59890 +DEFTIMEVAR (TV_TREE_LOOP_PROMOTE     , "tree loop index promotion")
59891  DEFTIMEVAR (TV_TREE_CH              , "tree copy headers")
59892  DEFTIMEVAR (TV_TREE_SSA_UNCPROP             , "tree SSA uncprop")
59893  DEFTIMEVAR (TV_TREE_SSA_TO_NORMAL    , "tree SSA to normal")
59894 @@ -141,6 +142,7 @@
59895  DEFTIMEVAR (TV_TREE_COPY_RENAME             , "tree rename SSA copies")
59896  DEFTIMEVAR (TV_TREE_SSA_VERIFY       , "tree SSA verifier")
59897  DEFTIMEVAR (TV_TREE_STMT_VERIFY      , "tree STMT verifier")
59898 +DEFTIMEVAR (TV_TREE_RLS              , "tree local static removal")
59899  DEFTIMEVAR (TV_TREE_SWITCH_CONVERSION, "tree switch initialization conversion")
59900  DEFTIMEVAR (TV_CGRAPH_VERIFY         , "callgraph verifier")
59901  DEFTIMEVAR (TV_DOM_FRONTIERS         , "dominance frontiers")
59902 diff -Nur a/gcc/toplev.h b/gcc/toplev.h
59903 --- a/gcc/toplev.h      2009-02-20 16:20:38.000000000 +0100
59904 +++ b/gcc/toplev.h      2010-01-25 09:50:29.585686502 +0100
59905 @@ -139,6 +139,7 @@
59906  extern int flag_unroll_all_loops;
59907  extern int flag_unswitch_loops;
59908  extern int flag_cprop_registers;
59909 +extern int flag_remove_local_statics;
59910  extern int time_report;
59911  extern int flag_ira_coalesce;
59912  extern int flag_ira_move_spills;
59913 diff -Nur a/gcc/tree.c b/gcc/tree.c
59914 --- a/gcc/tree.c        2009-07-20 16:39:32.000000000 +0200
59915 +++ b/gcc/tree.c        2010-01-25 09:50:29.585686502 +0100
59916 @@ -4062,6 +4062,7 @@
59917                       bool *no_add_attrs)
59918  {
59919    tree node = *pnode;
59920 +  bool is_dllimport;
59921  
59922    /* These attributes may apply to structure and union types being created,
59923       but otherwise should pass to the declaration involved.  */
59924 @@ -4109,9 +4110,11 @@
59925        return NULL_TREE;
59926      }
59927  
59928 +  is_dllimport = is_attribute_p ("dllimport", name);
59929 +
59930    /* Report error on dllimport ambiguities seen now before they cause
59931       any damage.  */
59932 -  else if (is_attribute_p ("dllimport", name))
59933 +  if (is_dllimport)
59934      {
59935        /* Honor any target-specific overrides. */ 
59936        if (!targetm.valid_dllimport_attribute_p (node))
59937 @@ -4153,6 +4156,9 @@
59938        if (*no_add_attrs == false)
59939          DECL_DLLIMPORT_P (node) = 1;
59940      }
59941 +  else if (DECL_DECLARED_INLINE_P (node))
59942 +    /* An exported function, even if inline, must be emitted.  */
59943 +    DECL_EXTERNAL (node) = 0;
59944  
59945    /*  Report error if symbol is not accessible at global scope.  */
59946    if (!TREE_PUBLIC (node)
59947 diff -Nur a/gcc/tree-cfg.c b/gcc/tree-cfg.c
59948 --- a/gcc/tree-cfg.c    2009-07-02 14:16:39.000000000 +0200
59949 +++ b/gcc/tree-cfg.c    2010-01-25 09:50:29.585686502 +0100
59950 @@ -47,6 +47,7 @@
59951  #include "value-prof.h"
59952  #include "pointer-set.h"
59953  #include "tree-inline.h"
59954 +#include "target.h"
59955  
59956  /* This file contains functions for building the Control Flow Graph (CFG)
59957     for a function tree.  */
59958 @@ -7052,6 +7053,9 @@
59959    edge e;
59960    edge_iterator ei;
59961  
59962 +  if (!targetm.warn_func_result())
59963 +    return 0;
59964 +
59965    /* If we have a path to EXIT, then we do return.  */
59966    if (TREE_THIS_VOLATILE (cfun->decl)
59967        && EDGE_COUNT (EXIT_BLOCK_PTR->preds) > 0)
59968 diff -Nur a/gcc/tree.h b/gcc/tree.h
59969 --- a/gcc/tree.h        2009-06-02 09:18:16.000000000 +0200
59970 +++ b/gcc/tree.h        2010-01-25 09:50:29.585686502 +0100
59971 @@ -381,8 +381,10 @@
59972    unsigned lang_flag_5 : 1;
59973    unsigned lang_flag_6 : 1;
59974    unsigned visited : 1;
59975 +  unsigned packed_flag : 1;
59976 +  unsigned user_align : 1;
59977  
59978 -  unsigned spare : 23;
59979 +  unsigned spare : 21;
59980  
59981    union tree_ann_d *ann;
59982  };
59983 @@ -2140,7 +2142,7 @@
59984  
59985  /* 1 if the alignment for this type was requested by "aligned" attribute,
59986     0 if it is the default for this type.  */
59987 -#define TYPE_USER_ALIGN(NODE) (TYPE_CHECK (NODE)->type.user_align)
59988 +#define TYPE_USER_ALIGN(NODE) (TYPE_CHECK (NODE)->common.base.user_align)
59989  
59990  /* The alignment for NODE, in bytes.  */
59991  #define TYPE_ALIGN_UNIT(NODE) (TYPE_ALIGN (NODE) / BITS_PER_UNIT)
59992 @@ -2246,7 +2248,7 @@
59993  
59994  /* Indicated that objects of this type should be laid out in as
59995     compact a way as possible.  */
59996 -#define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->type.packed_flag)
59997 +#define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->common.base.packed_flag)
59998  
59999  /* Used by type_contains_placeholder_p to avoid recomputation.
60000     Values are: 0 (unknown), 1 (false), 2 (true).  Never access
60001 @@ -2265,17 +2267,16 @@
60002    tree attributes;
60003    unsigned int uid;
60004  
60005 -  unsigned int precision : 9;
60006 -  ENUM_BITFIELD(machine_mode) mode : 7;
60007 -
60008 -  unsigned string_flag : 1;
60009 +  unsigned int precision : 10;
60010    unsigned no_force_blk_flag : 1;
60011    unsigned needs_constructing_flag : 1;
60012    unsigned transparent_union_flag : 1;
60013 -  unsigned packed_flag : 1;
60014    unsigned restrict_flag : 1;
60015    unsigned contains_placeholder_bits : 2;
60016  
60017 +  ENUM_BITFIELD(machine_mode) mode : 8;
60018 +
60019 +  unsigned string_flag : 1;
60020    unsigned lang_flag_0 : 1;
60021    unsigned lang_flag_1 : 1;
60022    unsigned lang_flag_2 : 1;
60023 @@ -2283,7 +2284,6 @@
60024    unsigned lang_flag_4 : 1;
60025    unsigned lang_flag_5 : 1;
60026    unsigned lang_flag_6 : 1;
60027 -  unsigned user_align : 1;
60028  
60029    unsigned int align;
60030    alias_set_type alias_set;
60031 @@ -2584,7 +2584,7 @@
60032  #define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT)
60033  /* Set if the alignment of this DECL has been set by the user, for
60034     example with an 'aligned' attribute.  */
60035 -#define DECL_USER_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.user_align)
60036 +#define DECL_USER_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->common.base.user_align)
60037  /* Holds the machine mode corresponding to the declaration of a variable or
60038     field.  Always equal to TYPE_MODE (TREE_TYPE (decl)) except for a
60039     FIELD_DECL.  */
60040 @@ -2621,7 +2621,7 @@
60041     example, for a FUNCTION_DECL, DECL_SAVED_TREE may be non-NULL and
60042     DECL_EXTERNAL may be true simultaneously; that can be the case for
60043     a C99 "extern inline" function.  */
60044 -#define DECL_EXTERNAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.decl_flag_2)
60045 +#define DECL_EXTERNAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.decl_flag_1)
60046  
60047  /* Nonzero in a ..._DECL means this variable is ref'd from a nested function.
60048     For VAR_DECL nodes, PARM_DECL nodes, and FUNCTION_DECL nodes.
60049 @@ -2696,7 +2696,6 @@
60050    unsigned ignored_flag : 1;
60051    unsigned abstract_flag : 1;
60052    unsigned artificial_flag : 1;
60053 -  unsigned user_align : 1;
60054    unsigned preserve_flag: 1;
60055    unsigned debug_expr_is_from : 1;
60056  
60057 @@ -2712,22 +2711,20 @@
60058    /* In LABEL_DECL, this is DECL_ERROR_ISSUED.
60059       In VAR_DECL and PARM_DECL, this is DECL_REGISTER.  */
60060    unsigned decl_flag_0 : 1;
60061 -  /* In FIELD_DECL, this is DECL_PACKED.  */
60062 -  unsigned decl_flag_1 : 1;
60063    /* In FIELD_DECL, this is DECL_BIT_FIELD
60064       In VAR_DECL and FUNCTION_DECL, this is DECL_EXTERNAL.
60065 -     In TYPE_DECL, this is TYPE_DECL_SUPRESS_DEBUG.  */
60066 -  unsigned decl_flag_2 : 1;
60067 +     In TYPE_DECL, this is TYPE_DECL_SUPPRESS_DEBUG.  */
60068 +  unsigned decl_flag_1 : 1;
60069    /* In FIELD_DECL, this is DECL_NONADDRESSABLE_P
60070 -     In VAR_DECL and PARM_DECL, this is DECL_HAS_VALUE_EXPR.  */
60071 -  unsigned decl_flag_3 : 1;
60072 +     In VAR_DECL and PARM_DECL, this is DECL_HAS_VALUE_EXPR_P.  */
60073 +  unsigned decl_flag_2 : 1;
60074    /* Logically, these two would go in a theoretical base shared by var and
60075       parm decl. */
60076    unsigned gimple_reg_flag : 1;
60077    /* In a DECL with pointer type, set if no TBAA should be done.  */
60078    unsigned no_tbaa_flag : 1;
60079    /* Padding so that 'align' can be on a 32-bit boundary.  */
60080 -  unsigned decl_common_unused : 2;
60081 +  unsigned decl_common_unused : 4;
60082  
60083    unsigned int align : 24;
60084    /* DECL_OFFSET_ALIGN, used only for FIELD_DECLs.  */
60085 @@ -2751,7 +2748,7 @@
60086     decl itself.  This should only be used for debugging; once this field has
60087     been set, the decl itself may not legitimately appear in the function.  */
60088  #define DECL_HAS_VALUE_EXPR_P(NODE) \
60089 -  (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_3)
60090 +  (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_2)
60091  #define DECL_VALUE_EXPR(NODE) \
60092    (decl_value_expr_lookup (DECL_WRTL_CHECK (NODE)))
60093  #define SET_DECL_VALUE_EXPR(NODE, VAL)                 \
60094 @@ -2830,11 +2827,11 @@
60095  #define DECL_FCONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.fcontext)
60096  
60097  /* In a FIELD_DECL, indicates this field should be bit-packed.  */
60098 -#define DECL_PACKED(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_1)
60099 +#define DECL_PACKED(NODE) (FIELD_DECL_CHECK (NODE)->common.base.packed_flag)
60100  
60101  /* Nonzero in a FIELD_DECL means it is a bit field, and must be accessed
60102     specially.  */
60103 -#define DECL_BIT_FIELD(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_2)
60104 +#define DECL_BIT_FIELD(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_1)
60105  
60106  /* Used in a FIELD_DECL to indicate that we cannot form the address of
60107     this component.  This makes it possible for Type-Based Alias Analysis
60108 @@ -2852,7 +2849,7 @@
60109     accesses to s.i must not be given the alias set of the type of 'i'
60110     (int) but instead directly that of the type of 's' (struct S).  */
60111  #define DECL_NONADDRESSABLE_P(NODE) \
60112 -  (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_3)
60113 +  (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_2)
60114  
60115  struct tree_field_decl GTY(())
60116  {
60117 @@ -3337,7 +3334,7 @@
60118     into stabs.  Instead it will generate cross reference ('x') of names.
60119     This uses the same flag as DECL_EXTERNAL.  */
60120  #define TYPE_DECL_SUPPRESS_DEBUG(NODE) \
60121 -  (TYPE_DECL_CHECK (NODE)->decl_common.decl_flag_2)
60122 +  (TYPE_DECL_CHECK (NODE)->decl_common.decl_flag_1)
60123  
60124  /* Getter of the imported declaration associated to the
60125     IMPORTED_DECL node.  */
60126 diff -Nur a/gcc/tree-pass.h b/gcc/tree-pass.h
60127 --- a/gcc/tree-pass.h   2009-02-20 16:20:38.000000000 +0100
60128 +++ b/gcc/tree-pass.h   2010-01-25 09:50:29.585686502 +0100
60129 @@ -323,6 +323,7 @@
60130  extern struct gimple_opt_pass pass_empty_loop;
60131  extern struct gimple_opt_pass pass_record_bounds;
60132  extern struct gimple_opt_pass pass_graphite_transforms;
60133 +extern struct gimple_opt_pass pass_promote_indices;
60134  extern struct gimple_opt_pass pass_if_conversion;
60135  extern struct gimple_opt_pass pass_loop_distribution;
60136  extern struct gimple_opt_pass pass_vectorize;
60137 @@ -388,6 +389,7 @@
60138  extern struct gimple_opt_pass pass_rebuild_cgraph_edges;
60139  extern struct gimple_opt_pass pass_build_cgraph_edges;
60140  extern struct gimple_opt_pass pass_reset_cc_flags;
60141 +extern struct gimple_opt_pass pass_remove_local_statics;
60142  
60143  /* IPA Passes */
60144  extern struct ipa_opt_pass pass_ipa_inline;
60145 diff -Nur a/gcc/tree-sra.c b/gcc/tree-sra.c
60146 --- a/gcc/tree-sra.c    2009-03-04 10:02:59.000000000 +0100
60147 +++ b/gcc/tree-sra.c    2010-01-25 09:50:29.585686502 +0100
60148 @@ -274,6 +274,12 @@
60149                       != TYPE_PRECISION (TREE_TYPE (t))))
60150                 goto fail;
60151  
60152 +             /* Disable optimization of bitfields on BITS_BIG_ENDIAN
60153 +                architectures.  SRA doesn't properly handle padding bits
60154 +                at the bottom, see issue6713.  */
60155 +             if (DECL_BIT_FIELD (t) && BITS_BIG_ENDIAN)
60156 +               goto fail;
60157 +
60158               saw_one_field = true;
60159             }
60160  
60161 diff -Nur a/gcc/tree-ssa-loop-promote.c b/gcc/tree-ssa-loop-promote.c
60162 --- a/gcc/tree-ssa-loop-promote.c       1970-01-01 01:00:00.000000000 +0100
60163 +++ b/gcc/tree-ssa-loop-promote.c       2010-01-25 09:50:29.585686502 +0100
60164 @@ -0,0 +1,1628 @@
60165 +/* Promotion of shorter-than-word-size loop indices.
60166 +   Copyright (C) 2009 Free Software Foundation, Inc.
60167 +   
60168 +This file is part of GCC.
60169 +   
60170 +GCC is free software; you can redistribute it and/or modify it
60171 +under the terms of the GNU General Public License as published by the
60172 +Free Software Foundation; either version 3, or (at your option) any
60173 +later version.
60174 +   
60175 +GCC is distributed in the hope that it will be useful, but WITHOUT
60176 +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
60177 +FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
60178 +for more details.
60179 +   
60180 +You should have received a copy of the GNU General Public License
60181 +along with GCC; see the file COPYING3.  If not see
60182 +<http://www.gnu.org/licenses/>.  */
60183 +
60184 +/* This pass finds loop indices that are declared as
60185 +   shorter-than-word-size and replaces them with word-sized loop
60186 +   indices.  (It assumes that word-sized quantities are the most
60187 +   efficient type on which to do arithmetic.)  The loop optimization
60188 +   machinery has a difficult time seeing through the casts required to
60189 +   promote such indices to word-sized quantities for memory addressing
60190 +   and/or preserving the semantics of the source language (such as C).
60191 +   The transformation also helps eliminate unnecessary
60192 +   {sign,zero}-extensions required for the same.
60193 +
60194 +   Although this is most naturally expressed as a loop optimization
60195 +   pass, we choose to place this pass some ways before the loop
60196 +   optimization passes proper, so that other scalar optimizations will
60197 +   run on our "cleaned-up" code.  This decision has the negative of
60198 +   requiring us to build and destroy all the loop optimization
60199 +   infrastructure.
60200 +
60201 +   The algorithm is relatively simple.  For each single-exit loop, we
60202 +   identify the loop index variable.  If the loop index variable is
60203 +   shorter than the word size, then we have a candidate for promotion.
60204 +   We determine whether the scalar evolution of the loop index fits a
60205 +   particular pattern (incremented by 1, compared against a
60206 +   similarly-typed loop bound, and only modified by a single increment
60207 +   within the loop), as well as examining the uses of the loop index to
60208 +   ensure we are able to safely promote those uses (e.g. the loop index
60209 +   must not be stored to memory or passed to function calls).  If these
60210 +   conditions are satisfied, we create an appropriate word-sized type
60211 +   and replace all uses and defs of the loop index variable with the new
60212 +   variable.  */
60213 +
60214 +#include "config.h"
60215 +#include "system.h"
60216 +#include "coretypes.h"
60217 +#include "tm.h"
60218 +
60219 +#include "toplev.h"
60220 +#include "rtl.h"
60221 +#include "tm_p.h"
60222 +#include "hard-reg-set.h"
60223 +#include "obstack.h"
60224 +#include "basic-block.h"
60225 +#include "pointer-set.h"
60226 +#include "intl.h"
60227 +
60228 +#include "tree.h"
60229 +#include "gimple.h"
60230 +#include "hashtab.h"
60231 +#include "diagnostic.h"
60232 +#include "tree-flow.h"
60233 +#include "tree-dump.h"
60234 +#include "cfgloop.h"
60235 +#include "flags.h"
60236 +#include "timevar.h"
60237 +#include "tree-pass.h"
60238 +
60239 +struct promote_info {
60240 +  /* The loop being analyzed.  */
60241 +  struct loop *loop;
60242 +
60243 +  /* The GIMPLE_COND controlling exit from the loop.  */
60244 +  gimple exit_expr;
60245 +
60246 +  /* The loop index variable's SSA_NAME that is defined in a phi node in
60247 +     LOOP->HEADER.  Note that this SSA_NAME may be different than the
60248 +     one appearing in EXIT_EXPR.  */
60249 +  tree loop_index_name;
60250 +
60251 +  /* The bound of the loop.  */
60252 +  tree loop_limit;
60253 +
60254 +  /* Whether we've warned about things with
60255 +     warn_unsafe_loop_optimizations.  */
60256 +  bool warned;
60257 +
60258 +  /* LOOP_INDEX_NAME's underlying VAR_DECL.  */
60259 +  tree var_decl;
60260 +
60261 +  /* The types to which defs/uses of LOOP_INDEX_NAME are cast via
60262 +     NOP_EXPRs.  */
60263 +  VEC(tree, heap) *cast_types;
60264 +
60265 +  /* The number of times we have seen a cast to the corresponding type
60266 +     (as determined by types_compatible_p) in CAST_TYPES.  */
60267 +  VEC(int, heap) *cast_counts;
60268 +
60269 +  /* Whether LOOP_INDEX_NAME is suitable for promotion.  */
60270 +  bool can_be_promoted_p;
60271 +
60272 +  /* If CAN_BE_PROMOTED_P, the promoted type.  */
60273 +  tree promoted_type;
60274 +
60275 +  /* If CAN_BE_PROMOTED_P, the promoted VAR_DECL.  */
60276 +  tree promoted_var;
60277 +};
60278 +
60279 +/* A set of `struct promote_info'.  */
60280 +
60281 +static struct pointer_set_t *promotion_info;
60282 +
60283 +/* A set of all potentially promotable SSA_NAMEs, used for quick
60284 +decision-making during analysis.  */
60285 +
60286 +static struct pointer_set_t *promotable_names;
60287 +
60288 +/* A map from SSA_NAMEs to the VAR_DECL to which they will be
60289 +   promoted.  */
60290 +
60291 +static struct pointer_map_t *variable_map;
60292 +
60293 +/* A set of the stmts that we have already rebuilt with promoted variables.  */
60294 +
60295 +static struct pointer_set_t *promoted_stmts;
60296 +
60297 +\f
60298 +/* Add CASTED to PI->CAST_TYPES if we haven't seen CASTED before.  */
60299 +
60300 +static void
60301 +add_casted_type (struct promote_info *pi, tree casted)
60302 +{
60303 +  int i;
60304 +  tree type;
60305 +
60306 +  /* For this information to be useful later, CASTED must be wider than
60307 +     the type of the variable.  */
60308 +  if (TYPE_PRECISION (casted) <= TYPE_PRECISION (TREE_TYPE (pi->var_decl)))
60309 +    return;
60310 +
60311 +  for (i = 0; VEC_iterate (tree, pi->cast_types, i, type); i++)
60312 +    if (types_compatible_p (casted, type))
60313 +      {
60314 +       int c = VEC_index(int, pi->cast_counts, i);
60315 +       VEC_replace(int, pi->cast_counts, i, ++c);
60316 +       return;
60317 +      }
60318 +
60319 +  /* Haven't see the type before.  */
60320 +  VEC_safe_push (tree, heap, pi->cast_types, casted);
60321 +  VEC_safe_push (int, heap, pi->cast_counts, 1);
60322 +}
60323 +
60324 +/* Return the most-casted-to type in PI->CAST_TYPES.  Return an
60325 +   appropriately signed variant of size_type_node if the variable wasn't
60326 +   cast in some fashion.  */
60327 +
60328 +static tree
60329 +choose_profitable_promoted_type (struct promote_info *pi)
60330 +{
60331 +  int i;
60332 +  int count;
60333 +  tree type = NULL_TREE;
60334 +  int maxuse = -1;
60335 +
60336 +  for (i = 0; VEC_iterate (int, pi->cast_counts, i, count); i++)
60337 +    if (count > maxuse)
60338 +      {
60339 +       maxuse = count;
60340 +       type = VEC_index (tree, pi->cast_types, i);
60341 +      }
60342 +
60343 +  if (type == NULL_TREE)
60344 +    {
60345 +      if (dump_file)
60346 +       {
60347 +         fprintf (dump_file, "Warning, failed to find upcast type for ");
60348 +         print_generic_expr (dump_file, pi->loop_index_name, 0);
60349 +         fprintf (dump_file, "\n");
60350 +       }
60351 +      return (TYPE_UNSIGNED (TREE_TYPE (pi->var_decl))
60352 +             ? size_type_node
60353 +             : signed_type_for (size_type_node));
60354 +    }
60355 +  else
60356 +    return signed_type_for (type);
60357 +}
60358 +
60359 +/* Intuit the loop index for LOOP from PHI.  There must be a path that
60360 +   only goes through NOP_EXPRs or CONVERT_EXPRs from the result of PHI
60361 +   to one of the operands of COND.  If such a path cannot be found,
60362 +   return NULL_TREE.  If LIMIT is not NULL and a path can be found,
60363 +   store the other operand of COND into LIMIT.  */
60364 +
60365 +static tree
60366 +find_promotion_candidate_from_phi (struct loop *loop, gimple cond,
60367 +                                  gimple phi, tree *limit)
60368 +{
60369 +  tree op0, op1;
60370 +  tree result, candidate;
60371 +
60372 +  result = candidate = PHI_RESULT (phi);
60373 +  /* Must be an integer variable.  */
60374 +  if (TREE_CODE (TREE_TYPE (candidate)) != INTEGER_TYPE)
60375 +    return NULL_TREE;
60376 +
60377 +  op0 = gimple_cond_lhs (cond);
60378 +  op1 = gimple_cond_rhs (cond);
60379 +
60380 +  /* See if there's a path from CANDIDATE to an operand of COND.  */
60381 +  while (true)
60382 +    {
60383 +      use_operand_p use;
60384 +      imm_use_iterator iui;
60385 +      gimple use_stmt = NULL;
60386 +
60387 +      if (candidate == op0)
60388 +       {
60389 +         if (limit) *limit = op1;
60390 +         break;
60391 +       }
60392 +      if (candidate == op1)
60393 +       {
60394 +         if (limit) *limit = op0;
60395 +         break;
60396 +       }
60397 +
60398 +      /* Find a single use in the loop header.  Give up if there's
60399 +        multiple ones.  */
60400 +      FOR_EACH_IMM_USE_FAST (use, iui, candidate)
60401 +       {
60402 +         gimple stmt = USE_STMT (use);
60403 +
60404 +         if (gimple_bb (stmt) == loop->header)
60405 +           {
60406 +             if (use_stmt)
60407 +               {
60408 +                 if (dump_file)
60409 +                   {
60410 +                     fprintf (dump_file, "Rejecting ");
60411 +                     print_generic_expr (dump_file, candidate, 0);
60412 +                     fprintf (dump_file, " because it has multiple uses in the loop header (bb #%d).\n",
60413 +                              loop->header->index);
60414 +                     fprintf (dump_file, "first use: ");
60415 +                     print_gimple_stmt (dump_file, use_stmt, 0, 0);
60416 +                     fprintf (dump_file, "\nsecond use: ");
60417 +                     print_gimple_stmt (dump_file, stmt, 0, 0);
60418 +                     fprintf (dump_file, "\n(possibly more, but unanalyzed)\n");
60419 +                   }
60420 +                 return NULL_TREE;
60421 +               }
60422 +             else
60423 +               use_stmt = stmt;
60424 +           }
60425 +       }
60426 +
60427 +      /* No uses in the loop header, bail.  */
60428 +      if (use_stmt == NULL)
60429 +       return NULL_TREE;
60430 +
60431 +      if (gimple_code (use_stmt) != GIMPLE_ASSIGN
60432 +         || TREE_CODE (gimple_assign_lhs (use_stmt)) != SSA_NAME
60433 +         || (gimple_assign_rhs_code (use_stmt) != NOP_EXPR
60434 +             && gimple_assign_rhs_code (use_stmt) != CONVERT_EXPR))
60435 +       {
60436 +         if (dump_file)
60437 +           {
60438 +             fprintf (dump_file, "Rejecting ");
60439 +             print_generic_expr (dump_file, candidate, 0);
60440 +             fprintf (dump_file, " because of use in ");
60441 +             print_gimple_stmt (dump_file, use_stmt, 0, 0);
60442 +             fprintf (dump_file, "\n");
60443 +           }
60444 +         return NULL_TREE;
60445 +       }
60446 +
60447 +      candidate = gimple_assign_lhs (use_stmt);
60448 +    }
60449 +
60450 +  /* CANDIDATE is now what we believe to be the loop index variable.  There
60451 +     are two possibilities:
60452 +
60453 +     - CANDIDATE is not the "true" loop index variable, but rather is a
60454 +       promoted version of RESULT, done for purposes of satisfying a
60455 +       language's semantics;
60456 +
60457 +     - CANDIDATE is the "true" loop index variable.  */
60458 +  if (!types_compatible_p (TREE_TYPE (result), TREE_TYPE (candidate)))
60459 +    candidate = result;
60460 +
60461 +  /* The type of candidate must be "short" to consider promoting it.  */
60462 +  if (TREE_CODE (TREE_TYPE (candidate)) != INTEGER_TYPE
60463 +      || TYPE_PRECISION (TREE_TYPE (candidate)) >= TYPE_PRECISION (size_type_node))
60464 +    return NULL_TREE;
60465 +
60466 +  return candidate;
60467 +}
60468 +
60469 +/* Find the loop index variable of LOOP.  LOOP's exit is controlled by
60470 +   the COND_EXPR EXPR.  IF we can't determine what the loop index
60471 +   variable is, or EXPR does not appear to be analyzable, then return
60472 +   NULL_TREE.  */
60473 +
60474 +static tree
60475 +find_promotion_candidate (struct loop *loop, gimple cond, tree *limit)
60476 +{
60477 +  tree candidate = NULL_TREE;
60478 +  gimple_stmt_iterator gsi;
60479 +
60480 +  switch (gimple_cond_code (cond))
60481 +    {
60482 +    case GT_EXPR:
60483 +    case GE_EXPR:
60484 +    case NE_EXPR:
60485 +    case LT_EXPR:
60486 +    case LE_EXPR:
60487 +      break;
60488 +
60489 +    default:
60490 +      return NULL_TREE;
60491 +    }
60492 +
60493 +  /* We'd like to examine COND and intuit the loop index variable from
60494 +     there.  Instead, we're going to start from the phi nodes in BB and
60495 +     attempt to work our way forwards to one of the operands of COND,
60496 +     since starting from COND might yield an upcast loop index.  If we
60497 +     find multiple phi nodes whose results reach COND, then give up.  */
60498 +  for (gsi = gsi_start_phis (loop->header); !gsi_end_p (gsi); gsi_next (&gsi))
60499 +    {
60500 +      gimple phi = gsi_stmt (gsi);
60501 +      tree t = find_promotion_candidate_from_phi (loop, cond, phi, limit);
60502 +
60503 +      if (t == NULL_TREE)
60504 +       continue;
60505 +      else if (candidate == NULL_TREE)
60506 +       candidate = t;
60507 +      else
60508 +       {
60509 +         if (dump_file)
60510 +           {
60511 +             fprintf (dump_file, "Can't find a candidate from ");
60512 +             print_gimple_stmt (dump_file, cond, 0, 0);
60513 +             fprintf (dump_file, "\n  because too many phi node results reach the condition.\n");
60514 +           }
60515 +         return NULL_TREE;
60516 +       }
60517 +    }
60518 +
60519 +  return candidate;
60520 +}
60521 +
60522 +/* Return true if X is something that could be promoted.  */
60523 +
60524 +static bool
60525 +could_be_promoted (tree x)
60526 +{
60527 +  return (TREE_CODE (x) == INTEGER_CST
60528 +         || (TREE_CODE (x) == SSA_NAME
60529 +             && pointer_set_contains (promotable_names, x)));
60530 +}
60531 +
60532 +/* Examine the RHS of STMT's suitability with respect to being able to
60533 +   promote VAR.  */
60534 +
60535 +static bool
60536 +check_rhs_for_promotability (struct promote_info *pi, tree var, gimple stmt,
60537 +                            bool is_assign)
60538 +{
60539 +  enum tree_code subcode = gimple_assign_rhs_code (stmt);
60540 +
60541 +  bool ok = true;
60542 +
60543 +  switch (subcode)
60544 +    {
60545 +    case PLUS_EXPR:
60546 +    case MINUS_EXPR:
60547 +    case MULT_EXPR:
60548 +    case EQ_EXPR:
60549 +    case NE_EXPR:
60550 +    case LT_EXPR:
60551 +    case LE_EXPR:
60552 +    case GT_EXPR:
60553 +    case GE_EXPR:
60554 +      {
60555 +       tree op0 = gimple_assign_rhs1 (stmt);
60556 +       tree op1 = gimple_assign_rhs2 (stmt);
60557 +
60558 +       ok = ((op0 == var && could_be_promoted (op1))
60559 +             || (op1 == var && could_be_promoted (op0)));
60560 +       break;
60561 +      }
60562 +    case COND_EXPR:
60563 +      if (gimple_expr_type (stmt) == NULL
60564 +         || gimple_expr_type (stmt) == void_type_node)
60565 +       ok = true;
60566 +      else
60567 +       /* This is conservative; it's possible that these sorts of nodes
60568 +          could be promoted, but we'd have to be very careful about
60569 +          checking in which parts of the COND_EXPR the promotable
60570 +          variable(s) are.  */
60571 +       ok = false;
60572 +      break;
60573 +    case SSA_NAME:
60574 +      {
60575 +       tree expr = gimple_assign_rhs1 (stmt);
60576 +       ok = (expr == var || could_be_promoted (expr));
60577 +      }
60578 +      break;
60579 +    case INTEGER_CST:
60580 +      break;
60581 +    case NOP_EXPR:
60582 +    case CONVERT_EXPR:
60583 +      if (!is_assign)
60584 +       {
60585 +         add_casted_type (pi, gimple_expr_type (stmt));
60586 +         break;
60587 +       }
60588 +      /* Fallthrough.  */
60589 +    default:
60590 +      ok = false;
60591 +      break;
60592 +    }
60593 +
60594 +  return ok;
60595 +}
60596 +
60597 +/* Analyze the loop index VAR for promotability.  The rules for
60598 +   promotability are:
60599 +
60600 +   For uses:
60601 +
60602 +   - The underlying variable may be used in NOP_EXPRs.
60603 +
60604 +   - The underlying variable may be used in simple arithmmetic
60605 +     expressions so long as the other parts are potentially promotable
60606 +     variables or constants (so we don't go willy-nilly on promoting
60607 +     things).
60608 +
60609 +   - The underlying variable may not be stored to memory.
60610 +
60611 +   - All uses must occur inside the loop.
60612 +
60613 +   For defs:
60614 +
60615 +   - The underlying variable may not be loaded from memory; and
60616 +
60617 +   - The underlying variable may only be formed from expressions
60618 +     involving potentially promotable varibles or constants.
60619 +
60620 +   Note that defs may occur outside of the loop; we do this to handle
60621 +   initial conditions before entering the loop.  */
60622 +
60623 +static void
60624 +analyze_loop_index_uses (tree var, struct promote_info *pi)
60625 +{
60626 +  imm_use_iterator iui;
60627 +  use_operand_p use;
60628 +  gimple bad_stmt = NULL;
60629 +  const char *reason = NULL;
60630 +
60631 +  FOR_EACH_IMM_USE_FAST (use, iui, var)
60632 +    {
60633 +      basic_block bb;
60634 +      gimple use_stmt = USE_STMT (use);
60635 +
60636 +      /* Uses must exist only within the loop.  */
60637 +      bb = gimple_bb (use_stmt);
60638 +
60639 +      if (dump_file)
60640 +       {
60641 +         fprintf (dump_file, "Checking ");
60642 +         print_gimple_stmt (dump_file, use_stmt, 0, 0);
60643 +         fprintf (dump_file, "\n");
60644 +       }
60645 +
60646 +      if (!flow_bb_inside_loop_p (pi->loop, bb))
60647 +       {
60648 +         bad_stmt = use_stmt;
60649 +         reason = " is involved in stmt outside loop ";
60650 +         break;
60651 +       }
60652 +
60653 +      /* We cannot store the index to memory.  */
60654 +      if (gimple_references_memory_p (use_stmt))
60655 +       {
60656 +         bad_stmt = use_stmt;
60657 +         reason = " is stored to memory in ";
60658 +         break;
60659 +       }
60660 +
60661 +      if (gimple_code (use_stmt) == GIMPLE_CALL)
60662 +       {
60663 +         /* We cannot pass the variable to a function.  */
60664 +         bad_stmt = use_stmt;
60665 +         reason = " is passed to function in ";
60666 +         break;
60667 +       }
60668 +      else if (gimple_code (use_stmt) == GIMPLE_ASSIGN)
60669 +       {
60670 +         tree lhs = gimple_assign_lhs (use_stmt);
60671 +
60672 +         if (!check_rhs_for_promotability (pi, var, use_stmt,
60673 +                                           /*is_assign=*/false))
60674 +           {
60675 +             bad_stmt = use_stmt;
60676 +             reason = " is involved in non-promotable expression ";
60677 +             break;
60678 +           }
60679 +         else if ((TREE_CODE_CLASS (gimple_assign_rhs_code (use_stmt)) == tcc_binary
60680 +                   || gimple_assign_rhs_code (use_stmt) == SSA_NAME)
60681 +                  && !could_be_promoted (lhs))
60682 +           {
60683 +             bad_stmt = use_stmt;
60684 +             reason = " is being assigned to non-promotable variable ";
60685 +             break;
60686 +           }
60687 +       }
60688 +      else if (gimple_code (use_stmt) != GIMPLE_COND
60689 +              && gimple_code (use_stmt) != GIMPLE_PHI)
60690 +       {
60691 +         /* Use of the variable in some statement we don't know how to
60692 +            analyze.  */
60693 +         bad_stmt = use_stmt;
60694 +         reason = " is used in unanalyzable expression in ";
60695 +         break;
60696 +       }
60697 +    }
60698 +
60699 +  if (bad_stmt && reason)
60700 +    {
60701 +      if (dump_file)
60702 +       {
60703 +         fprintf (dump_file, "Loop index ");
60704 +         print_generic_expr (dump_file, var, 0);
60705 +         fprintf (dump_file, "%s", reason);
60706 +         print_gimple_stmt (dump_file, bad_stmt, 0, 0);
60707 +         fprintf (dump_file, "\n");
60708 +       }
60709 +      pi->can_be_promoted_p = false;
60710 +    }
60711 +}
60712 +
60713 +/* Check that the uses and def of VAR, defined in STMT, conform to the
60714 +   rules given above.  */
60715 +
60716 +static bool
60717 +analyze_loop_index (tree var, gimple stmt, void *data)
60718 +{
60719 +  struct promote_info *pi = (struct promote_info *) data;
60720 +
60721 +  if (dump_file)
60722 +    {
60723 +      fprintf (dump_file, "Analyzing loop index ");
60724 +      print_generic_expr (dump_file, var, 0);
60725 +      fprintf (dump_file, " defined in ");
60726 +      print_gimple_stmt (dump_file, stmt, 0, 0);
60727 +      fprintf (dump_file, "\n");
60728 +    }
60729 +
60730 +  /* Check the definition.  */
60731 +  switch (gimple_code (stmt))
60732 +    {
60733 +    case GIMPLE_PHI:
60734 +      /* Phi nodes are OK.  */
60735 +      break;
60736 +
60737 +    case GIMPLE_ASSIGN:
60738 +      if (!check_rhs_for_promotability (pi, var, stmt,
60739 +                                       /*is_assign=*/true))
60740 +       break;
60741 +      /* Fallthrough.  */
60742 +
60743 +    default:
60744 +      /* Something we can't handle or the variable is being loaded from
60745 +        memory.  */
60746 +      pi->can_be_promoted_p = false;
60747 +      goto done;
60748 +    }
60749 +
60750 +  if (gimple_code (stmt) == GIMPLE_PHI)
60751 +    {
60752 +      unsigned int i;
60753 +
60754 +      for (i = 0; i < gimple_phi_num_args (stmt); i++)
60755 +       {
60756 +         tree arg = PHI_ARG_DEF (stmt, i);
60757 +
60758 +         if (TREE_CODE (arg) == SSA_NAME)
60759 +           pointer_set_insert (promotable_names, arg);
60760 +       }
60761 +
60762 +      analyze_loop_index_uses (PHI_RESULT (stmt), pi);
60763 +    }
60764 +  else
60765 +    analyze_loop_index_uses (var, pi);
60766 +
60767 +  /* Only worth continuing if we think the loop index can be
60768 +     promoted.  */
60769 + done:
60770 +  if (dump_file)
60771 +    {
60772 +      fprintf (dump_file, "Done analyzing ");
60773 +      print_generic_expr (dump_file, var, 0);
60774 +      fprintf (dump_file, " defined in ");
60775 +      print_gimple_stmt (dump_file, stmt, 0, 0);
60776 +      fprintf (dump_file, "...%s to analyze\n\n",
60777 +              pi->can_be_promoted_p ? "continuing" : "not continuing");
60778 +    }
60779 +  return !pi->can_be_promoted_p;
60780 +}
60781 +
60782 +/* Determine whether T is an INTEGER_CST or a single-use SSA_NAME
60783 +   defined as the result of a NOP_EXPR or CONVERT_EXPR.  Return the
60784 +   operand of the NOP_EXPR or CONVERT_EXPR if so.  */
60785 +
60786 +static tree
60787 +upcast_operand_p (tree t)
60788 +{
60789 +  gimple def;
60790 +
60791 +  if (TREE_CODE (t) == INTEGER_CST)
60792 +    return t;
60793 +
60794 +  if (TREE_CODE (t) != SSA_NAME
60795 +      || !has_single_use (t))
60796 +    return NULL_TREE;
60797 +
60798 +  def = SSA_NAME_DEF_STMT (t);
60799 +  if (gimple_code (def) != GIMPLE_ASSIGN)
60800 +    return NULL_TREE;
60801 +
60802 +  if (gimple_assign_rhs_code (def) != CONVERT_EXPR
60803 +      && gimple_assign_rhs_code (def) != NOP_EXPR)
60804 +    return NULL_TREE;
60805 +
60806 +  return gimple_assign_rhs1 (def);
60807 +}
60808 +
60809 +/* Check for the idiom:
60810 +
60811 +     short x, y;
60812 +     unsigned short x.2, y.2, tmp;
60813 +     ...
60814 +     x.2 = (unsigned short) x;
60815 +     y.2 = (unsigned short) y;
60816 +     tmp = x.2 + y.2;
60817 +     x = (short) tmp;
60818 +
60819 +   which is generated by convert for avoiding signed arithmetic
60820 +   overflow.  RHS is TMP in the above statement.  If RHS is
60821 +   defined via such an idiom, store x and y into *OP0 and *OP1,
60822 +   respectively.  We permit y.2 to be a constant if necessary.  */
60823 +
60824 +static bool
60825 +signed_arithmetic_overflow_idiom_p (tree rhs, tree *op0, tree *op1)
60826 +{
60827 +  gimple op_stmt = SSA_NAME_DEF_STMT (rhs);
60828 +  tree x2, y2;
60829 +  bool yes = false;
60830 +  enum tree_code code;
60831 +
60832 +  if (!has_single_use (rhs)
60833 +      || gimple_code (op_stmt) != GIMPLE_ASSIGN)
60834 +    goto done;
60835 +
60836 +  /* This could probably profitably be expanded to consider
60837 +     MINUS_EXPR, MULT_EXPR, etc.  */
60838 +  code = gimple_assign_rhs_code (op_stmt);
60839 +  if (code != PLUS_EXPR)
60840 +    goto done;
60841 +  x2 = gimple_assign_rhs1 (op_stmt);
60842 +  y2 = gimple_assign_rhs2 (op_stmt);
60843 +
60844 +  x2 = upcast_operand_p (x2);
60845 +  if (x2 == NULL_TREE)
60846 +    goto done;
60847 +  y2 = upcast_operand_p (y2);
60848 +  if (y2 == NULL_TREE)
60849 +    goto done;
60850 +
60851 +  *op0 = x2;
60852 +  *op1 = y2;
60853 +  yes = true;
60854 +
60855 + done:
60856 +  return yes;
60857 +}
60858 +
60859 +/* Simple wrapper around flow_bb_inside_loop_p that handles NULL
60860 +   statements and initial definitions of variables.  */
60861 +
60862 +static bool
60863 +stmt_in_loop_p (gimple t, struct loop *loop)
60864 +{
60865 +  basic_block bb;
60866 +
60867 +  if (t == NULL)
60868 +    return false;
60869 +
60870 +  bb = gimple_bb (t);
60871 +  if (bb == NULL)
60872 +    return false;
60873 +
60874 +  return flow_bb_inside_loop_p (loop, bb);
60875 +}
60876 +
60877 +/* The loop index should have a specific usage pattern:
60878 +
60879 +   - It should be defined in a phi node with two incoming values:
60880 +
60881 +     LI_phi = PHI (LI_out, LI_in)
60882 +
60883 +   - One incoming value, LI_out, should be from outside the loop.
60884 +
60885 +   - The other incoming value, LI_in, should be defined thusly:
60886 +
60887 +     LI_in = LI_phi + increment
60888 +
60889 +   - increment should be 1.  We permit other increments with
60890 +     -funsafe-loop-optimizations.
60891 +
60892 +   - Finally, in the comparison to exit the loop, the loop index must be
60893 +     compared against a variable that has a type at least as precise as
60894 +     the loop index's type.  For instance, something like:
60895 +
60896 +       char limit;
60897 +       short i;
60898 +
60899 +       for (i = 0; i < limit; i++) ... 
60900 +
60901 +     would not be permitted.  */
60902 +
60903 +static bool
60904 +analyze_loop_index_definition_pattern (struct promote_info *pi)
60905 +{
60906 +  gimple phi = SSA_NAME_DEF_STMT (pi->loop_index_name);
60907 +  bool ok = false, warn = false;
60908 +  tree in0, in1;
60909 +  bool inside0, inside1;
60910 +  gimple def0, def1;
60911 +  tree op0, op1, increment = NULL_TREE;
60912 +
60913 +  if (gimple_code (phi) != GIMPLE_PHI
60914 +      || gimple_phi_num_args (phi) != 2)
60915 +    goto done;
60916 +
60917 +  in0 = PHI_ARG_DEF (phi, 0);
60918 +  in1 = PHI_ARG_DEF (phi, 1);
60919 +
60920 +  /* Figure out which value comes from outside the loop.  */
60921 +  def0 = TREE_CODE (in0) == SSA_NAME ? SSA_NAME_DEF_STMT (in0) : NULL;
60922 +  def1 = TREE_CODE (in1) == SSA_NAME ? SSA_NAME_DEF_STMT (in1) : NULL;
60923 +
60924 +  inside0 = stmt_in_loop_p (def0, pi->loop);
60925 +  inside1 = stmt_in_loop_p (def1, pi->loop);
60926 +
60927 +  if (inside0 && inside1)
60928 +    goto done;
60929 +  else if (inside0)
60930 +    {
60931 +      tree t = in0;
60932 +      gimple g;
60933 +      in0 = in1;
60934 +      in1 = t;
60935 +      g = def0;
60936 +      def0 = def1;
60937 +      def1 = g;
60938 +    }
60939 +  else if (!inside1)
60940 +    goto done;
60941 +
60942 +  /* IN0 comes from outside the loop, IN1 from inside.  Analyze IN1.  */
60943 +  if (gimple_code (def1) != GIMPLE_ASSIGN)
60944 +    goto done;
60945 +
60946 +  switch (gimple_assign_rhs_code (def1))
60947 +    {
60948 +    case CONVERT_EXPR:
60949 +    case NOP_EXPR:
60950 +      if (!signed_arithmetic_overflow_idiom_p (gimple_assign_rhs1 (def1),
60951 +                                              &op0, &op1))
60952 +       goto done;
60953 +      goto plus;
60954 +    case PLUS_EXPR:
60955 +      op0 = gimple_assign_rhs1 (def1);
60956 +      op1 = gimple_assign_rhs2 (def1);
60957 +    plus:
60958 +      {
60959 +       bool op0_li = op0 == PHI_RESULT (phi);
60960 +       bool op1_li = op1 == PHI_RESULT (phi);
60961 +       if (op0_li && op1_li)
60962 +         /* This is weird, and definitely is not a case we can support
60963 +            for promotion.  */
60964 +         goto done;
60965 +       else if (op0_li)
60966 +         increment = op1;
60967 +       else if (op1_li)
60968 +         increment = op0;
60969 +       else
60970 +         goto done;
60971 +       break;
60972 +      }
60973 +    default:
60974 +      break;
60975 +    }
60976 +
60977 +
60978 +  /* Check that the exit condition for the loop is OK.  */
60979 +  {
60980 +    enum tree_code code = gimple_cond_code (pi->exit_expr);
60981 +
60982 +    op0 = gimple_cond_lhs (pi->exit_expr);
60983 +    op1 = gimple_cond_rhs (pi->exit_expr);
60984 +
60985 +    if (op0 == pi->loop_limit)
60986 +      {
60987 +       tree t = op0;
60988 +       op0 = op1;
60989 +       op1 = t;
60990 +       code = swap_tree_comparison (code);
60991 +      }
60992 +
60993 +    if (code != LT_EXPR && code != LE_EXPR)
60994 +      goto done;
60995 +
60996 +    if (!types_compatible_p (TREE_TYPE (pi->loop_index_name),
60997 +                            TREE_TYPE (pi->loop_limit)))
60998 +      {
60999 +       switch (TREE_CODE (pi->loop_limit))
61000 +         {
61001 +         case INTEGER_CST:
61002 +           if (!int_fits_type_p (pi->loop_limit,
61003 +                                 TREE_TYPE (pi->loop_index_name)))
61004 +             goto done;
61005 +           break;
61006 +         case SSA_NAME:
61007 +           {
61008 +             tree v = pi->loop_limit;
61009 +             gimple def = SSA_NAME_DEF_STMT (v);
61010 +
61011 +             /* Backtrack through CONVERT_EXPRs and/or NOP_EXPRs to
61012 +                determine if the variables "started out" as the same
61013 +                type.  */
61014 +             while (gimple_code (def) == GIMPLE_ASSIGN)
61015 +               {
61016 +                 enum tree_code rhs_code = gimple_assign_rhs_code (def);
61017 +
61018 +                 if (rhs_code != NOP_EXPR && rhs_code != CONVERT_EXPR)
61019 +                   break;
61020 +
61021 +                 v = gimple_assign_rhs1 (def);
61022 +                 def = SSA_NAME_DEF_STMT (v);
61023 +               }
61024 +             /* Permit comparisons between non-compatible types with
61025 +                flag_unsafe_loop_optimizations, since we can assume the
61026 +                loop index does not overflow.  */
61027 +             if (types_compatible_p (TREE_TYPE (pi->loop_index_name),
61028 +                                     TREE_TYPE (v))
61029 +                 || flag_unsafe_loop_optimizations)
61030 +               break;
61031 +             /* Fallthrough.  */
61032 +           default:
61033 +             goto done;
61034 +           }
61035 +         }
61036 +      }
61037 +  }
61038 +
61039 +  if (increment == NULL_TREE)
61040 +    goto done;
61041 +  if (TREE_CODE (increment) != INTEGER_CST
61042 +      || compare_tree_int (increment, 1) != 0)
61043 +    {
61044 +      warn = true;
61045 +      if (!flag_unsafe_loop_optimizations)
61046 +       goto done;
61047 +    }
61048 +
61049 +  ok = true;
61050 + done:
61051 +  if (warn && !pi->warned)
61052 +    {
61053 +      pi->warned = true;
61054 +      /* We can promote unsigned indices only if -funsafe-loop-optimizations
61055 +        is in effect, since the user might be depending on the modulo
61056 +        wraparound behavior of unsigned types.  */
61057 +      if (warn_unsafe_loop_optimizations)
61058 +       {
61059 +         const char *wording;
61060 +
61061 +         wording = (flag_unsafe_loop_optimizations
61062 +                    ? N_("assuming that the loop counter does not overflow")
61063 +                    : N_("cannot optimize loop, the loop counter may overflow"));
61064 +         warning (OPT_Wunsafe_loop_optimizations, "%s", gettext (wording));
61065 +       }
61066 +    }
61067 +
61068 +  return ok;
61069 +}
61070 +
61071 +/* Analyze the loop associated with PI_ to see if its loop index can be
61072 +   promoted.  */
61073 +
61074 +static bool
61075 +analyze_loop (const void *pi_, void *data)
61076 +{
61077 +  struct promote_info *pi = CONST_CAST (struct promote_info *,
61078 +                                       (const struct promote_info *) pi_);
61079 +  bool *changed = (bool *) data;
61080 +
61081 +  /* We previously determined we can't promote this; go ahead and
61082 +     continue iterating.  */
61083 +  if (pi->loop_index_name == NULL_TREE)
61084 +    return true;
61085 +
61086 +  /* Assume we can always promote the loop index, even if it doesn't
61087 +     exist.  */
61088 +  pi->can_be_promoted_p = true;
61089 +
61090 +  if (dump_file)
61091 +    {
61092 +      fprintf (dump_file, "Analyzing ");
61093 +      print_generic_expr (dump_file, pi->loop_index_name, 0);
61094 +      fprintf (dump_file, "\n");
61095 +    }
61096 +
61097 +  if (pi->loop_index_name
61098 +      && analyze_loop_index_definition_pattern (pi))
61099 +    {
61100 +      /* Clear any previously gathered information.  */
61101 +      VEC_truncate (tree, pi->cast_types, 0);
61102 +      VEC_truncate (int, pi->cast_counts, 0);
61103 +
61104 +      walk_use_def_chains (pi->loop_index_name, analyze_loop_index, pi, false);
61105 +    }
61106 +  else
61107 +    pi->can_be_promoted_p = false;
61108 +
61109 +  /* If we determined the loop index is used in strange ways, clear it
61110 +     so we don't examine it again.  */
61111 +  if (!pi->can_be_promoted_p)
61112 +    pi->loop_index_name = NULL_TREE;
61113 +
61114 +  /* Let our caller know whether to re-do the analysis.  */
61115 +  *changed = *changed || !pi->can_be_promoted_p;
61116 +  /* Continue if PI is promotable.  */
61117 +  return pi->can_be_promoted_p;
61118 +}
61119 +
61120 +/* Add PI_->LOOP_INDEX_NAME to the set of variables, DATA, that we are
61121 +   considering for promotion.  */
61122 +
61123 +static bool
61124 +add_variable (const void *pi_, void *data ATTRIBUTE_UNUSED)
61125 +{
61126 +  const struct promote_info *pi = (const struct promote_info *) pi_;
61127 +  struct pointer_set_t *pset = (struct pointer_set_t *) data;
61128 +  int presentp;
61129 +
61130 +  if (pi->loop_index_name != NULL_TREE)
61131 +    {
61132 +      presentp = pointer_set_insert (pset, pi->loop_index_name);
61133 +      gcc_assert (!presentp);
61134 +    }
61135 +
61136 +  /* Continue traversal.  */
61137 +  return true;
61138 +}
61139 +
61140 +/* For each promotable variable:
61141 +
61142 +   - create a new, promoted VAR_DECL;
61143 +
61144 +   - walk through all the uses and defs and create new statements using
61145 +     the promoted variables.  We don't create new phi nodes; post-pass
61146 +     SSA update will handle those for us.  */
61147 +
61148 +/* Make dump files readable.  */
61149 +#define PROMOTED_VAR_SUFFIX ".promoted"
61150 +
61151 +/* Create a variable NAME with TYPE and do the necessary work to inform
61152 +   the SSA machinery about it.  */
61153 +
61154 +static tree
61155 +create_pli_var (tree type, char *name)
61156 +{
61157 +  tree var = create_tmp_var (type, name);
61158 +  create_var_ann (var);
61159 +  mark_sym_for_renaming (var);
61160 +  add_referenced_var (var);
61161 +  return var;
61162 +}
61163 +
61164 +/* Associate the SSA_NAME VAR with the promoted variable DATA.  */
61165 +
61166 +static bool
61167 +associate_name_with_var (tree var, gimple def_stmt, void *data)
61168 +{
61169 +  tree promoted_var = (tree) data;
61170 +  void **p;
61171 +
61172 +  gcc_assert (promoted_var != NULL_TREE);
61173 +
61174 +  if (gimple_code (def_stmt) == GIMPLE_PHI)
61175 +    var = PHI_RESULT (def_stmt);
61176 +
61177 +  p = pointer_map_insert (variable_map, var);
61178 +
61179 +  if (!*p)
61180 +    {
61181 +      if (dump_file)
61182 +       {
61183 +         fprintf (dump_file, "Associating ");
61184 +         print_generic_expr (dump_file, var, 0);
61185 +         fprintf (dump_file, " with ");
61186 +         print_generic_expr (dump_file, promoted_var, 0);
61187 +         fprintf (dump_file, "\n\n");
61188 +       }
61189 +      *(tree *)p = promoted_var;
61190 +    }
61191 +
61192 +  /* Continue traversal.  */
61193 +  return false;
61194 +}
61195 +
61196 +/* Create a promoted variable for the variable from PI_.  */
61197 +
61198 +static bool
61199 +create_promoted_variable (const void *pi_, void *data ATTRIBUTE_UNUSED)
61200 +{
61201 +  struct promote_info *pi = CONST_CAST (struct promote_info *,
61202 +                                       (const struct promote_info *) pi_);
61203 +
61204 +  if (pi->can_be_promoted_p)
61205 +    {
61206 +      tree type = choose_profitable_promoted_type (pi);
61207 +      tree orig_name = DECL_NAME (pi->var_decl);
61208 +      size_t id_len = IDENTIFIER_LENGTH (orig_name);
61209 +      size_t name_len = id_len + strlen (PROMOTED_VAR_SUFFIX) + 1;
61210 +      char *name;
61211 +
61212 +      name = (char *) alloca (name_len);
61213 +      strcpy (name, IDENTIFIER_POINTER (orig_name));
61214 +      strcpy (name + id_len, PROMOTED_VAR_SUFFIX);
61215 +
61216 +      pi->promoted_type = type;
61217 +      pi->promoted_var = create_pli_var (type, name);
61218 +
61219 +      if (dump_file)
61220 +       {
61221 +         fprintf (dump_file, "Created new variable ");
61222 +         print_generic_expr (dump_file, pi->promoted_var, 0);
61223 +         fprintf (dump_file, " to stand in for ");
61224 +         print_generic_expr (dump_file, pi->loop_index_name, 0);
61225 +         fprintf (dump_file, "\n\n");
61226 +       }
61227 +
61228 +      walk_use_def_chains (pi->loop_index_name,
61229 +                          associate_name_with_var,
61230 +                          pi->promoted_var, false);
61231 +    }
61232 +
61233 +  /* Continue traversal.  */
61234 +  return true;
61235 +}
61236 +
61237 +/* Rebuild T with newly promoted variables; STMT is the original
61238 +   statement in which T appeared and may be equivalent to T.  TYPE is
61239 +   non-null when rebuilding the rhs of a GIMPLE_ASSIGN and indicates the
61240 +   type of the lhs.  */
61241 +
61242 +static tree
61243 +rebuild_tree_with_promotion (tree t, gimple stmt, tree type,
61244 +                            gimple_stmt_iterator gsi,
61245 +                            struct promote_info *pi)
61246 +{
61247 +  tree op0, op1;
61248 +
61249 +  switch (TREE_CODE (t))
61250 +    {
61251 +    case NOP_EXPR:
61252 +    case CONVERT_EXPR:
61253 +      {
61254 +       tree pvar = rebuild_tree_with_promotion (TREE_OPERAND (t, 0), stmt, type, gsi, pi);
61255 +
61256 +       if (types_compatible_p (type, TREE_TYPE (pvar)))
61257 +         return pvar;
61258 +       else
61259 +         return build1 (TREE_CODE (t), type, pvar);
61260 +      }
61261 +    case INTEGER_CST:
61262 +      {
61263 +       return build_int_cst_wide (pi->promoted_type,
61264 +                                  TREE_INT_CST_LOW (t),
61265 +                                  TREE_INT_CST_HIGH (t));
61266 +      }
61267 +    case COND_EXPR:
61268 +      {
61269 +       tree orig_op0 = TREE_OPERAND (t, 0);
61270 +       op0 = rebuild_tree_with_promotion (orig_op0, stmt, type, gsi, pi);
61271 +       gcc_assert (orig_op0 != op0);
61272 +       TREE_OPERAND (t, 0) = op0;
61273 +       return t;
61274 +      }
61275 +    case PLUS_EXPR:
61276 +    case MINUS_EXPR:
61277 +    case MULT_EXPR:
61278 +      type = pi->promoted_type;
61279 +      goto binary_expr;
61280 +    case EQ_EXPR:
61281 +    case NE_EXPR:
61282 +    case LT_EXPR:
61283 +    case LE_EXPR:
61284 +    case GT_EXPR:
61285 +    case GE_EXPR:
61286 +      type = TREE_TYPE (t);
61287 +    binary_expr:
61288 +      op0 = TREE_OPERAND (t, 0);
61289 +      op1 = TREE_OPERAND (t, 1);
61290 +      op0 = rebuild_tree_with_promotion (op0, stmt, type, gsi, pi);
61291 +      op1 = rebuild_tree_with_promotion (op1, stmt, type, gsi, pi);
61292 +      return build2 (TREE_CODE (t), type, op0, op1);
61293 +    case SSA_NAME:
61294 +      {
61295 +       void **p = pointer_map_contains (variable_map, t);
61296 +
61297 +       if (p == NULL)
61298 +         {
61299 +           /* This is unexpected, but it does happen if we were dealing
61300 +              with COND_EXPRs and such.  Just go ahead and create a
61301 +              temporary for it.  */
61302 +           if (types_compatible_p (TREE_TYPE (t), pi->promoted_type)
61303 +               || SSA_NAME_DEF_STMT (t) == stmt)
61304 +             return t;
61305 +           else
61306 +             goto insert_cast;
61307 +         }
61308 +       else
61309 +         return *(tree *)p;
61310 +      }
61311 +    case VAR_DECL:
61312 +      return t;
61313 +    default:
61314 +    insert_cast:
61315 +      {
61316 +       gimple cast;
61317 +       tree tmp, nop;
61318 +       tree to_upcast = t;
61319 +
61320 +       /* If we are dealing with a memory reference, then we can't have
61321 +          wrap it in a NOP_EXPR; we need to load the value from memory
61322 +          first, then convert it.  */
61323 +       if (!is_gimple_reg (to_upcast))
61324 +         {
61325 +           tree tmp = create_pli_var (TREE_TYPE (to_upcast),
61326 +                                      CONST_CAST (char *, "loadtmp"));
61327 +           gimple stmt = gimple_build_assign (tmp, to_upcast);
61328 +           gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
61329 +           to_upcast = tmp;
61330 +         }
61331 +
61332 +       tmp = create_pli_var (pi->promoted_type,
61333 +                             CONST_CAST (char *, "promotetmp"));
61334 +       nop = build1 (NOP_EXPR, pi->promoted_type, to_upcast);
61335 +       cast = gimple_build_assign (tmp, nop);
61336 +       if (dump_file)
61337 +         {
61338 +           fprintf (dump_file, "Inserting cast ");
61339 +           print_gimple_stmt (dump_file, cast, 0, 0);
61340 +           fprintf (dump_file, " prior to ");
61341 +           print_gimple_stmt (dump_file, stmt, 0, 0);
61342 +           fprintf (dump_file, "\n");
61343 +         }
61344 +       gsi_insert_before (&gsi, cast, GSI_SAME_STMT);
61345 +       return tmp;
61346 +      }
61347 +    }
61348 +}
61349 +
61350 +/* Split E and place STMT in the block created by doing so.  */
61351 +
61352 +static void
61353 +insert_along_edge (gimple stmt, edge e)
61354 +{
61355 +  basic_block bb = split_edge (e);
61356 +
61357 +  gimple_set_bb (stmt, bb);
61358 +  set_bb_seq (bb, gimple_seq_alloc_with_stmt (stmt));
61359 +}
61360 +
61361 +/* Rebuild STMT, which contains uses or a def of the promotable variable
61362 +   associated with PI.  */
61363 +
61364 +static void
61365 +rebuild_with_promotion (gimple stmt, struct promote_info *pi)
61366 +{
61367 +  gimple_stmt_iterator gsi;
61368 +
61369 +  if (pointer_set_insert (promoted_stmts, stmt))
61370 +    return;
61371 +
61372 +  if (dump_file)
61373 +    {
61374 +      fprintf (dump_file, "Rebuilding stmt ");
61375 +      print_gimple_stmt (dump_file, stmt, 0, 0);
61376 +      fprintf (dump_file, "\n");
61377 +    }
61378 +
61379 +  gsi = gsi_for_stmt (stmt);
61380 +  
61381 +  switch (gimple_code (stmt))
61382 +    {
61383 +    case GIMPLE_ASSIGN:
61384 +      {
61385 +       enum tree_code subcode = gimple_assign_rhs_code (stmt);
61386 +       enum tree_code newcode = subcode;
61387 +       tree lhs = gimple_assign_lhs (stmt);
61388 +       tree rhs1 = gimple_assign_rhs1 (stmt);
61389 +       tree rhs2 = gimple_assign_rhs2 (stmt);
61390 +       tree x, y;
61391 +       void **v;
61392 +
61393 +       /* If we are defining a promotable variable, check for special
61394 +          idioms.  */
61395 +       v = pointer_map_contains (variable_map, lhs);
61396 +       if (v != NULL
61397 +           && *(tree *)v == pi->promoted_var
61398 +           && (subcode == NOP_EXPR || subcode == CONVERT_EXPR)
61399 +           && signed_arithmetic_overflow_idiom_p (rhs1, &x, &y))
61400 +         {
61401 +           void **xp;
61402 +           void **yp;
61403 +           if (TYPE_PRECISION (TREE_TYPE (rhs1))
61404 +               >= TYPE_PRECISION (pi->promoted_type))
61405 +             goto done;
61406 +
61407 +           /* It's possible that we've already promoted the operands of
61408 +              one or both of the NOP_EXPRs.  In that case, we can
61409 +              bypass the logic below and go straight to rebuilding the
61410 +              rhs that we really want to transform.  */
61411 +           if (TREE_CODE (x) == VAR_DECL
61412 +               || TREE_CODE (y) == VAR_DECL)
61413 +             goto build_fake;
61414 +           xp = pointer_map_contains (variable_map, x);
61415 +           yp = pointer_map_contains (variable_map, y);
61416 +
61417 +           /* Nothing to see here.  */
61418 +           if (!types_compatible_p (TREE_TYPE (x),
61419 +                                    TREE_TYPE (y))
61420 +               || (xp == NULL && yp == NULL))
61421 +             goto done;
61422 +           x = (xp == NULL ? NULL_TREE : *(tree *)xp);
61423 +           y = (yp == NULL ? NULL_TREE : *(tree *)yp);
61424 +
61425 +           if (x != pi->promoted_var && y != pi->promoted_var)
61426 +             goto done;
61427 +
61428 +         build_fake:
61429 +           newcode = PLUS_EXPR;
61430 +           rhs1 = x;
61431 +           rhs2 = y;
61432 +           if (dump_file)
61433 +             {
61434 +               fprintf (dump_file, "Substituting ");
61435 +               print_generic_expr (dump_file, x, 0);
61436 +               fprintf (dump_file, " + ");
61437 +               print_generic_expr (dump_file, y, 0);
61438 +               fprintf (dump_file, " for rhs of original statement\n");
61439 +             }
61440 +
61441 +         done:
61442 +           ;
61443 +         }
61444 +
61445 +       lhs = rebuild_tree_with_promotion (lhs, stmt, NULL, gsi, pi);
61446 +       rhs1 = rebuild_tree_with_promotion (rhs1, stmt, NULL, gsi, pi);
61447 +       if (rhs2)
61448 +         rhs2 = rebuild_tree_with_promotion (rhs2, stmt, NULL, gsi, pi);
61449 +
61450 +       if (newcode != subcode)
61451 +         {
61452 +           gimple newstmt = gimple_build_assign_with_ops (newcode,
61453 +                                                          lhs, rhs1, rhs2);
61454 +           gsi_replace (&gsi, newstmt, true);
61455 +           stmt = newstmt;
61456 +         }
61457 +       else
61458 +         {
61459 +           gimple_assign_set_lhs (stmt, lhs);
61460 +           gimple_assign_set_rhs1 (stmt, rhs1);
61461 +           if (rhs2)
61462 +             gimple_assign_set_rhs2 (stmt, rhs2);
61463 +         }
61464 +      }
61465 +      break;
61466 +    case GIMPLE_COND:
61467 +      {
61468 +       tree lhs = gimple_cond_lhs (stmt);
61469 +       tree rhs = gimple_cond_rhs (stmt);
61470 +
61471 +       lhs = rebuild_tree_with_promotion (lhs, stmt, NULL, gsi, pi);
61472 +       rhs = rebuild_tree_with_promotion (rhs, stmt, NULL, gsi, pi);
61473 +
61474 +       gimple_cond_set_lhs (stmt, lhs);
61475 +       gimple_cond_set_rhs (stmt, rhs);
61476 +      }
61477 +      break;
61478 +    case GIMPLE_PHI:
61479 +      {
61480 +       unsigned int i;
61481 +       bool promoted_result = could_be_promoted (PHI_RESULT (stmt));
61482 +
61483 +       for (i = 0; i < gimple_phi_num_args (stmt); i++)
61484 +         {
61485 +           tree var = gimple_phi_arg_def (stmt, i);
61486 +           edge e = gimple_phi_arg_edge (stmt, i);
61487 +           gimple assign = NULL;
61488 +
61489 +           if (TREE_CODE (var) == INTEGER_CST && promoted_result)
61490 +             {
61491 +               tree cst = build_int_cst_wide (pi->promoted_type,
61492 +                                              TREE_INT_CST_LOW (var),
61493 +                                              TREE_INT_CST_HIGH (var));
61494 +
61495 +               assign = gimple_build_assign (pi->promoted_var, cst);
61496 +               insert_along_edge (assign, e);
61497 +             }
61498 +           else if (TREE_CODE (var) == SSA_NAME
61499 +                    && SSA_NAME_VAR (var) == pi->var_decl
61500 +                    && !promoted_result)
61501 +             {
61502 +               tree t = create_pli_var (TREE_TYPE (PHI_RESULT (stmt)),
61503 +                                        CONST_CAST (char *, "promotetmp"));
61504 +               tree name;
61505 +               assign = gimple_build_assign_with_ops (CONVERT_EXPR,
61506 +                                                      t, pi->promoted_var,
61507 +                                                      NULL_TREE);
61508 +
61509 +               name = make_ssa_name (t, assign);
61510 +               gimple_assign_set_lhs (assign, name);
61511 +
61512 +               insert_along_edge (assign, e);
61513 +               SET_PHI_ARG_DEF (stmt, i, name);
61514 +             }
61515 +         }
61516 +      }
61517 +      break;
61518 +    default:
61519 +      gcc_unreachable ();
61520 +    }
61521 +
61522 +  if (dump_file)
61523 +    {
61524 +      fprintf (dump_file, "Converted stmt ");
61525 +      print_gimple_stmt (dump_file, stmt, 0, 0);
61526 +      fprintf (dump_file, "\n\n");
61527 +    }
61528 +  update_stmt (stmt);
61529 +}
61530 +
61531 +/* Helper function for promote_variable that walks over use/def
61532 +   chains.  */
61533 +
61534 +static bool
61535 +promote_variable_1 (tree var, gimple stmt, void *data)
61536 +{
61537 +  struct promote_info *pi = (struct promote_info *) data;
61538 +  imm_use_iterator imi;
61539 +  gimple use_stmt;
61540 +
61541 +  rebuild_with_promotion (stmt, pi);
61542 +
61543 +  if (gimple_code (stmt) == GIMPLE_PHI)
61544 +    var = PHI_RESULT (stmt);
61545 +
61546 +  if (could_be_promoted (var))
61547 +    FOR_EACH_IMM_USE_STMT (use_stmt, imi, var)
61548 +      {
61549 +       rebuild_with_promotion (use_stmt, pi);
61550 +      }
61551 +
61552 +  return false;
61553 +}
61554 +
61555 +/* Convert all uses and defs of PI_->LOOP_INDEX_NAME as linked by
61556 +   use-def chains to uses and defs of PI_->PROMOTED_VAR.  */
61557 +
61558 +static bool
61559 +promote_variable (const void *pi_, void *data ATTRIBUTE_UNUSED)
61560 +{
61561 +  const struct promote_info *pi = (const struct promote_info *) pi_;
61562 +
61563 +  if (pi->can_be_promoted_p)
61564 +    {
61565 +      walk_use_def_chains (pi->loop_index_name, promote_variable_1,
61566 +                          CONST_CAST (struct promote_info *, pi), false);
61567 +    }
61568 +
61569 +  /* Continue traversal.  */
61570 +  return true;
61571 +}
61572 +
61573 +/* Free PI_ and its associated data.  */
61574 +
61575 +static bool
61576 +free_pi_entries (const void *pi_, void *data ATTRIBUTE_UNUSED)
61577 +{
61578 +  struct promote_info *pi = CONST_CAST (struct promote_info *,
61579 +                                       (const struct promote_info *) pi_);
61580 +
61581 +  VEC_free (tree, heap, pi->cast_types);
61582 +  VEC_free (int, heap, pi->cast_counts);
61583 +  free (pi);
61584 +
61585 +  /* Continue traversal.  */
61586 +  return true;
61587 +}
61588 +
61589 +/* Collect information about variables that we believe to be loop
61590 +   indices in PROMOTION_INFO.  */
61591 +
61592 +static void
61593 +collect_promotion_candidates (void)
61594 +{
61595 +  loop_iterator li;
61596 +  struct loop *loop;
61597 +
61598 +  FOR_EACH_LOOP (li, loop, 0)
61599 +    {
61600 +      basic_block header = loop->header;
61601 +      gimple exit_cond = last_stmt (header);
61602 +      
61603 +      if (exit_cond && gimple_code (exit_cond) == GIMPLE_COND)
61604 +       {
61605 +         tree loop_index;
61606 +         tree limit = NULL_TREE;
61607 +         tree decl;
61608 +         struct promote_info *pi;
61609 +
61610 +         loop_index = find_promotion_candidate (loop, exit_cond, &limit);
61611 +         if (loop_index == NULL_TREE)
61612 +           continue;
61613 +         decl = SSA_NAME_VAR (loop_index);
61614 +         if (TREE_ADDRESSABLE (decl))
61615 +           continue;
61616 +
61617 +         if (dump_file)
61618 +           {
61619 +             fprintf (dump_file, "Found loop index ");
61620 +             print_generic_expr (dump_file, loop_index, 0);
61621 +             fprintf (dump_file, " involved in ");
61622 +             print_gimple_stmt (dump_file, exit_cond, 0, 0);
61623 +             fprintf (dump_file, "\n\n");
61624 +           }
61625 +
61626 +         pi = XCNEW (struct promote_info);
61627 +         pi->loop = loop;
61628 +         pi->exit_expr = exit_cond;
61629 +         pi->loop_index_name = loop_index;
61630 +         pi->loop_limit = limit;
61631 +         pi->var_decl = decl;
61632 +         /* We think so, anyway...  */
61633 +         pi->can_be_promoted_p = true;
61634 +         pointer_set_insert (promotion_info, pi);
61635 +       }
61636 +      else if (dump_file)
61637 +       {
61638 +         fprintf (dump_file, "\nSkipping analysis of loop %d (header bb #%d)\n",
61639 +                  loop->num, loop->header->index);
61640 +         if (exit_cond)
61641 +           {
61642 +             fprintf (dump_file, "Exit condition was ");
61643 +             print_gimple_stmt (dump_file, exit_cond, 0, 0);
61644 +             fprintf (dump_file, "\n");
61645 +           }
61646 +       }
61647 +    }
61648 +}
61649 +
61650 +/* Free memory associated with global variables that we used.  */
61651 +
61652 +static void
61653 +pli_cleanup (void)
61654 +{
61655 +  if (promoted_stmts)
61656 +    {
61657 +      pointer_set_destroy (promoted_stmts);
61658 +      promoted_stmts = NULL;
61659 +    }
61660 +  if (variable_map)
61661 +    {
61662 +      pointer_map_destroy (variable_map);
61663 +      variable_map = NULL;
61664 +    }
61665 +  if (promotable_names)
61666 +    {
61667 +      pointer_set_destroy (promotable_names);
61668 +      promotable_names = NULL;
61669 +    }
61670 +  if (promotion_info)
61671 +    {
61672 +      pointer_set_traverse (promotion_info, free_pi_entries, NULL);
61673 +      pointer_set_destroy (promotion_info);
61674 +      promotion_info = NULL;
61675 +    }
61676 +}
61677 +
61678 +/* The guts of the pass.  */
61679 +
61680 +static unsigned int
61681 +promote_short_indices (void)
61682 +{
61683 +  bool did_something = false;
61684 +  bool changed;
61685 +  size_t max_iterations, i, n_promoted;
61686 +
61687 +  promotion_info = pointer_set_create ();
61688 +  collect_promotion_candidates ();
61689 +
61690 +  if (dump_file)
61691 +    fprintf (dump_file, "Found %d candidates for promotion\n",
61692 +            (int) pointer_set_n_elements (promotion_info));
61693 +
61694 +  /* Nothing to do.  */
61695 +  if (pointer_set_n_elements (promotion_info) == 0)
61696 +    goto cleanup;
61697 +
61698 +  /* We have information about which variables are loop index variables.
61699 +     We now need to determine the promotability of the loop indices.
61700 +     Since the promotability of loop indices may depend on other loop
61701 +     indices, we need to repeat this until we reach a fixed point.  */
61702 +  changed = true;
61703 +  max_iterations = pointer_set_n_elements (promotion_info);
61704 +  i = 0;
61705 +
61706 +  promotable_names = pointer_set_create ();
61707 +
61708 +  while (changed)
61709 +    {
61710 +      changed = false;
61711 +      pointer_set_clear (promotable_names);
61712 +      pointer_set_traverse (promotion_info, add_variable,
61713 +                           promotable_names);
61714 +      n_promoted = pointer_set_n_elements (promotable_names);
61715 +
61716 +      if (dump_file)
61717 +       fprintf (dump_file, "\nIteration %d, have %d variables to consider\n",
61718 +                (int) i, (int) n_promoted);
61719 +
61720 +      if (n_promoted == 0)
61721 +       break;
61722 +      gcc_assert (i < max_iterations);
61723 +      pointer_set_traverse (promotion_info, analyze_loop, &changed);
61724 +      i++;
61725 +    }
61726 +
61727 +  if (dump_file)
61728 +    fprintf (dump_file, "Promoting %d variables\n",
61729 +            (int) n_promoted);
61730 +
61731 +  if (n_promoted != 0)
61732 +    {
61733 +      did_something = true;
61734 +      variable_map = pointer_map_create ();
61735 +      promoted_stmts = pointer_set_create ();
61736 +      pointer_set_traverse (promotion_info, create_promoted_variable, NULL);
61737 +      pointer_set_traverse (promotion_info, promote_variable, NULL);
61738 +    }
61739 +
61740 + cleanup:
61741 +  pli_cleanup ();
61742 +  return did_something ? TODO_update_ssa : 0;
61743 +}
61744 +
61745 +/* Entry point for the short loop index promotion pass.  */
61746 +
61747 +static unsigned int
61748 +tree_short_index_promotion (void)
61749 +{
61750 +  unsigned int changed = 0;
61751 +
61752 +  /* Initialize all the necessary loop infrastructure.  */
61753 +  loop_optimizer_init (LOOPS_HAVE_PREHEADERS | LOOPS_HAVE_SIMPLE_LATCHES | LOOPS_HAVE_RECORDED_EXITS);
61754 +  add_noreturn_fake_exit_edges ();
61755 +  connect_infinite_loops_to_exit ();
61756 +
61757 +  if (number_of_loops () > 1)
61758 +    changed = promote_short_indices ();
61759 +
61760 +  /* Tear down loop optimization infrastructure.  */
61761 +  remove_fake_exit_edges ();
61762 +  free_numbers_of_iterations_estimates ();
61763 +  loop_optimizer_finalize ();
61764 +
61765 +  return changed;
61766 +}
61767 +
61768 +static bool
61769 +gate_short_index_promotion (void)
61770 +{
61771 +  return optimize > 0 && flag_promote_loop_indices;
61772 +}
61773 +
61774 +struct gimple_opt_pass pass_promote_indices =
61775 +{
61776 +  {
61777 +    GIMPLE_PASS,
61778 +    "promoteshort",                    /* name */
61779 +    gate_short_index_promotion,                /* gate */
61780 +    tree_short_index_promotion,                /* execute */
61781 +    NULL,                              /* sub */
61782 +    NULL,                              /* next */
61783 +    0,                                 /* static_pass_number */
61784 +    TV_TREE_LOOP_PROMOTE,              /* tv_id */
61785 +    PROP_cfg | PROP_ssa,               /* properties_required */
61786 +    0,                                 /* properties_provided */
61787 +    0,                                 /* properties_destroyed */
61788 +    0,                                 /* todo_flags_start */
61789 +    TODO_dump_func | TODO_verify_loops 
61790 +    | TODO_ggc_collect                 /* todo_flags_finish */
61791 +  }
61792 +};
61793 diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
61794 --- a/gcc/tree-ssa-pre.c        2009-02-20 16:20:38.000000000 +0100
61795 +++ b/gcc/tree-ssa-pre.c        2010-01-25 09:50:29.595686516 +0100
61796 @@ -104,6 +104,10 @@
61797     In order to make it fully redundant, we insert the expression into
61798     the predecessors where it is not available, but is ANTIC.
61799  
61800 +   When optimizing for size, we only eliminate the partial redundancy
61801 +   if we need to insert in only one predecessor.  This avoids almost
61802 +   completely the code size increase that PRE usually causes.
61803 +
61804     For the partial anticipation case, we only perform insertion if it
61805     is partially anticipated in some block, and fully available in all
61806     of the predecessors.
61807 @@ -429,6 +433,7 @@
61808  static void bitmap_value_insert_into_set (bitmap_set_t, pre_expr);
61809  static void bitmap_value_replace_in_set (bitmap_set_t, pre_expr);
61810  static void bitmap_set_copy (bitmap_set_t, bitmap_set_t);
61811 +static void bitmap_set_and (bitmap_set_t, bitmap_set_t);
61812  static bool bitmap_set_contains_value (bitmap_set_t, unsigned int);
61813  static void bitmap_insert_into_set (bitmap_set_t, pre_expr);
61814  static void bitmap_insert_into_set_1 (bitmap_set_t, pre_expr, bool);
61815 @@ -2988,13 +2993,6 @@
61816    tree temp;
61817    gimple phi;
61818  
61819 -  if (dump_file && (dump_flags & TDF_DETAILS))
61820 -    {
61821 -      fprintf (dump_file, "Found partial redundancy for expression ");
61822 -      print_pre_expr (dump_file, expr);
61823 -      fprintf (dump_file, " (%04d)\n", val);
61824 -    }
61825 -
61826    /* Make sure we aren't creating an induction variable.  */
61827    if (block->loop_depth > 0 && EDGE_COUNT (block->preds) == 2
61828        && expr->kind != REFERENCE)
61829 @@ -3192,6 +3190,47 @@
61830  }
61831  
61832  
61833 +/* Indicate if, when optimizing for speed, it is appropriate to make
61834 +   INSERTS_NEEDED insertions in order to make EXPR in BLOCK redundant.  */
61835 +static bool
61836 +ppre_n_insert_for_speed_p (pre_expr expr, basic_block block,
61837 +                          unsigned int inserts_needed)
61838 +{
61839 +  /* The more expensive EXPR is, the more we should be prepared to insert
61840 +     in the predecessors of BLOCK to make EXPR fully redundant.
61841 +     For now, only recognize AND, OR, XOR, PLUS and MINUS of a multiple-use
61842 +     SSA_NAME with a constant as cheap.  */
61843 +  int cost;
61844 +
61845 +  if (flag_tree_pre_partial_partial_obliviously)
61846 +    return true;
61847 +  if (expr->kind == NARY)
61848 +    {
61849 +      vn_nary_op_t nary = PRE_EXPR_NARY (expr);
61850 +      switch (nary->opcode)
61851 +       {
61852 +         tree name, cnst;
61853 +       case BIT_AND_EXPR: case BIT_IOR_EXPR: case BIT_XOR_EXPR:
61854 +       case PLUS_EXPR: case MINUS_EXPR:
61855 +
61856 +         gcc_assert (nary->length == 2);
61857 +         name = nary->op[0];
61858 +         cnst = nary->op[1];
61859 +         if (TREE_CODE (name) != SSA_NAME || has_single_use (name))
61860 +           return true;
61861 +         if (!is_gimple_min_invariant (cnst))
61862 +           return true;
61863 +         cost = 1;
61864 +         break;
61865 +       default:
61866 +         return true;
61867 +       }
61868 +    }
61869 +  else
61870 +    return true;
61871 +  return EDGE_COUNT (block->preds) * cost >= inserts_needed;
61872 +
61873 +}
61874  
61875  /* Perform insertion of partially redundant values.
61876     For BLOCK, do the following:
61877 @@ -3226,6 +3265,7 @@
61878           pre_expr *avail;
61879           unsigned int val;
61880           bool by_some = false;
61881 +         unsigned int inserts_needed = 0;
61882           bool cant_insert = false;
61883           bool all_same = true;
61884           pre_expr first_s = NULL;
61885 @@ -3280,6 +3320,7 @@
61886                 {
61887                   avail[bprime->index] = eprime;
61888                   all_same = false;
61889 +                 inserts_needed++;
61890                 }
61891               else
61892                 {
61893 @@ -3289,6 +3330,11 @@
61894                     first_s = edoubleprime;
61895                   else if (!pre_expr_eq (first_s, edoubleprime))
61896                     all_same = false;
61897 +                 /* If the available value is not a NAME, PREing this
61898 +                    value will probably result in a copy on the edge
61899 +                    to assign the expression to a register.  */
61900 +                 if (edoubleprime->kind != NAME)
61901 +                   inserts_needed++;
61902                 }
61903             }
61904           /* If we can insert it, it's not the same value
61905 @@ -3297,9 +3343,27 @@
61906              partially redundant.  */
61907           if (!cant_insert && !all_same && by_some && dbg_cnt (treepre_insert))
61908             {
61909 -             if (insert_into_preds_of_block (block, get_expression_id (expr),
61910 -                                             avail))
61911 -               new_stuff = true;
61912 +             if (dump_file && (dump_flags & TDF_DETAILS))
61913 +               {
61914 +                 fprintf (dump_file,
61915 +                          "Found partial redundancy for expression ");
61916 +                 print_pre_expr (dump_file, expr);
61917 +                 fprintf (dump_file, " (%04d)\n", get_expr_value_id (expr));
61918 +               }
61919 +
61920 +             /* If optimizing for size, insert at most one
61921 +                new expression to avoid increasing code size.  */
61922 +             if (optimize_function_for_speed_p (cfun)
61923 +                 ? 1 : EDGE_COUNT (block->preds) - inserts_needed == 1)
61924 +               new_stuff |=
61925 +                 insert_into_preds_of_block (block,
61926 +                                             get_expression_id (expr),
61927 +                                             avail);
61928 +             else if (dump_file && (dump_flags & TDF_DETAILS))
61929 +               fprintf (dump_file, "Not inserting (optimizing for %s)\n",
61930 +                        optimize_function_for_speed_p (cfun)
61931 +                        ? "speed" : "size");
61932 +
61933             }
61934           /* If all edges produce the same value and that value is
61935              an invariant, then the PHI has the same value on all
61936 @@ -3428,9 +3492,28 @@
61937           if (!cant_insert && by_all && dbg_cnt (treepre_insert))
61938             {
61939               pre_stats.pa_insert++;
61940 -             if (insert_into_preds_of_block (block, get_expression_id (expr),
61941 -                                             avail))
61942 -               new_stuff = true;
61943 +             if (dump_file && (dump_flags & TDF_DETAILS))
61944 +               {
61945 +                 fprintf (dump_file,
61946 +                          "Found partial redundancy for expression ");
61947 +                 print_pre_expr (dump_file, expr);
61948 +                 fprintf (dump_file, " (%04d)\n", get_expr_value_id (expr));
61949 +               }
61950 +             /* Assuming the expression is 50% anticipatable, we have to
61951 +                multiply the number of insertions needed by two for a cost
61952 +                comparison.  */
61953 +             if (!optimize_function_for_speed_p (cfun)
61954 +                 || ppre_n_insert_for_speed_p (expr, block,
61955 +                                               2 * EDGE_COUNT (block->preds)))
61956 +               new_stuff |=
61957 +                 insert_into_preds_of_block (block,
61958 +                                             get_expression_id (expr),
61959 +                                             avail);
61960 +             else if (dump_file && (dump_flags & TDF_DETAILS))
61961 +               fprintf (dump_file, "Not inserting (optimizing for %s)\n",
61962 +                        optimize_function_for_speed_p (cfun)
61963 +                        ? "speed" : "size");
61964 +
61965             }
61966           free (avail);
61967         }
61968 @@ -3471,7 +3554,9 @@
61969           if (!single_pred_p (block))
61970             {
61971               new_stuff |= do_regular_insertion (block, dom);
61972 -             if (do_partial_partial)
61973 +             /* Don't bother with partial-partial redundancies when
61974 +                optimizing for size.  */
61975 +             if (do_partial_partial && ! optimize_function_for_size_p (cfun))
61976                 new_stuff |= do_partial_partial_insertion (block, dom);
61977             }
61978         }
61979 @@ -4220,11 +4305,11 @@
61980     only wants to do full redundancy elimination.  */
61981  
61982  static unsigned int
61983 -execute_pre (bool do_fre ATTRIBUTE_UNUSED)
61984 +execute_pre (bool do_fre)
61985  {
61986    unsigned int todo = 0;
61987  
61988 -  do_partial_partial = optimize > 2;
61989 +  do_partial_partial = flag_tree_pre_partial_partial;
61990  
61991    /* This has to happen before SCCVN runs because
61992       loop_optimizer_init may create new phis, etc.  */
61993 @@ -4297,19 +4382,20 @@
61994    return todo;
61995  }
61996  
61997 -/* Gate and execute functions for PRE.  */
61998 +/* Gate and execute functions for FRE/PRE.  */
61999  
62000  static unsigned int
62001  do_pre (void)
62002  {
62003 -  return TODO_rebuild_alias | execute_pre (false);
62004 +  return TODO_rebuild_alias
62005 +        | execute_pre (! flag_tree_pre);
62006  }
62007  
62008  static bool
62009  gate_pre (void)
62010  {
62011 -  /* PRE tends to generate bigger code.  */
62012 -  return flag_tree_pre != 0 && optimize_function_for_speed_p (cfun);
62013 +  /* Run FRE even if we don't run PRE.  */
62014 +  return (flag_tree_fre || flag_tree_pre);
62015  }
62016  
62017  struct gimple_opt_pass pass_pre =
62018 diff -Nur a/gcc/tree-ssa-remove-local-statics.c b/gcc/tree-ssa-remove-local-statics.c
62019 --- a/gcc/tree-ssa-remove-local-statics.c       1970-01-01 01:00:00.000000000 +0100
62020 +++ b/gcc/tree-ssa-remove-local-statics.c       2010-01-25 09:50:29.595686516 +0100
62021 @@ -0,0 +1,868 @@
62022 +/* Local static variable elimination pass.
62023 +   Copyright (C) 2007 Free Software Foundation, Inc.
62024 +   Contributed by Nathan Froyd <froydnj@codesourcery.com>
62025 +
62026 +This file is part of GCC.
62027 +
62028 +GCC is free software; you can redistribute it and/or modify it
62029 +under the terms of the GNU General Public License as published by the
62030 +Free Software Foundation; either version 3, or (at your option) any
62031 +later version.
62032 +
62033 +GCC is distributed in the hope that it will be useful, but WITHOUT
62034 +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
62035 +FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
62036 +for more details.
62037 +
62038 +You should have received a copy of the GNU General Public License
62039 +along with GCC; see the file COPYING3.  If not see
62040 +<http://www.gnu.org/licenses/>.  */
62041 +
62042 +/* Converting static function-local variables to automatic variables.
62043 +
62044 +   The motivating example is a function like:
62045 +
62046 +   void
62047 +   foo (unsigned n)
62048 +   {
62049 +     static int var;
62050 +     unsigned i;
62051 +
62052 +     for (i = 0; i != n; i++)
62053 +       {
62054 +         var = ...
62055 +
62056 +         do other things with var...
62057 +       }
62058 +   }
62059 +
62060 +   Because VAR is static, doing things like code motion to loads and
62061 +   stores of VAR is difficult.  Furthermore, accesses to VAR are
62062 +   inefficient.  This pass aims to recognize the cases where it is not
62063 +   necessary for VAR to be static and modify the code so that later
62064 +   passes will do the appropriate optimizations.
62065 +
62066 +   The criteria for a static function-local variable V in a function F
62067 +   being converted to an automatic variable are:
62068 +
62069 +   1. F does not call setjmp; and
62070 +   2. V's address is never taken; and
62071 +   3. V is not declared volatile; and
62072 +   4. V is not used in any nested function;
62073 +   5. V is not an aggregate value (union, struct, array, etc.); and
62074 +   6. Every use of V is defined along all paths leading to the use.
62075 +
62076 +   NOTE: For ease of implementation, we currently treat a function call
62077 +   as killing all previous definitions of static variables, since we
62078 +   could have:
62079 +
62080 +   static void
62081 +   foo (...)
62082 +   {
62083 +     static int x;
62084 +
62085 +     x = ...;       (1)
62086 +
62087 +    f (...);        (2)
62088 +
62089 +     ... = x;       (3)
62090 +   }
62091 +
62092 +   The use at (3) needs to pick up a possible definition made by the
62093 +   call at (2).  If the call at (2) does not call back into 'foo',
62094 +   then the call is not a killing call.  We currently treat it as
62095 +   though it is.  */
62096 +
62097 +#include "config.h"
62098 +#include "system.h"
62099 +#include "coretypes.h"
62100 +#include "tm.h"
62101 +
62102 +#include "rtl.h"
62103 +#include "tm_p.h"
62104 +#include "hard-reg-set.h"
62105 +#include "obstack.h"
62106 +#include "basic-block.h"
62107 +
62108 +#include "tree.h"
62109 +#include "gimple.h"
62110 +#include "hashtab.h"
62111 +#include "diagnostic.h"
62112 +#include "tree-flow.h"
62113 +#include "tree-dump.h"
62114 +#include "flags.h"
62115 +#include "timevar.h"
62116 +#include "tree-pass.h"
62117 +
62118 +struct rls_decl_info
62119 +{
62120 +  /* The variable declaration.  */
62121 +  tree orig_var;
62122 +
62123 +  /* Its index in rls_block_local_data.  */
62124 +  int index;
62125 +
62126 +  /* Whether we can optimize this variable.  */
62127 +  bool optimizable_p;
62128 +
62129 +  /* The new variable declaration, if we can optimize away the staticness
62130 +     of 'orig_var'.  */
62131 +  tree new_var;
62132 +};
62133 +
62134 +/* Filled with 'struct rls_decl_info'; keyed off ORIG_VAR.  */
62135 +static htab_t static_variables;
62136 +
62137 +struct rls_stmt_info
62138 +{
62139 +  /* The variable declaration.  */
62140 +  tree var;
62141 +
62142 +  /* The statement in which we found a def or a use of the variable.  */
62143 +  gimple stmt;
62144 +
62145 +  /* Whether STMT represents a use of VAR.  */
62146 +  bool use_p;
62147 +
62148 +  /* A bitmap whose entries denote what variables have been defined
62149 +     when execution arrives at STMT.  This field is only used when
62150 +     USE_P is true.  */
62151 +  sbitmap defined;
62152 +};
62153 +
62154 +/* Filled with 'struct rls_stmt_info'; keyed off STMT.  */
62155 +static htab_t defuse_statements;
62156 +
62157 +static struct
62158 +{
62159 +  /* The number of static variables we found.  */
62160 +  size_t n_statics;
62161 +
62162 +  /* The number of optimizable variables we found.  */
62163 +  size_t n_optimizable;
62164 +} stats;
62165 +
62166 +struct rls_block_dataflow_data {
62167 +  /* A bitmap whose entries denote what variables have been defined on
62168 +     entry to this block.  */
62169 +  sbitmap defined_in;
62170 +
62171 +  /* A bitmap whose entries denote what variables have been defined on
62172 +     exit from this block.  */
62173 +  sbitmap defined_out;
62174 +};
62175 +
62176 +/* Parameters for the 'static_variables' hash table.  */
62177 +
62178 +static hashval_t
62179 +rls_hash_decl_info (const void *x)
62180 +{
62181 +  return htab_hash_pointer
62182 +    ((const void *) ((const struct rls_decl_info *) x)->orig_var);
62183 +}
62184 +
62185 +static int
62186 +rls_eq_decl_info (const void *x, const void *y)
62187 +{
62188 +  const struct rls_decl_info *a = (const struct rls_decl_info *) x;
62189 +  const struct rls_decl_info *b = (const struct rls_decl_info *) y;
62190 +
62191 +  return a->orig_var == b->orig_var;
62192 +}
62193 +
62194 +static void
62195 +rls_free_decl_info (void *info)
62196 +{
62197 +  free (info);
62198 +}
62199 +
62200 +/* Parameters for the 'defuse_statements' hash table.  */
62201 +
62202 +static hashval_t
62203 +rls_hash_use_info (const void *x)
62204 +{
62205 +  return htab_hash_pointer
62206 +    ((const void *) ((const struct rls_stmt_info *) x)->stmt);
62207 +}
62208 +
62209 +static int
62210 +rls_eq_use_info (const void *x, const void *y)
62211 +{
62212 +  const struct rls_stmt_info *a = (const struct rls_stmt_info *) x;
62213 +  const struct rls_stmt_info *b = (const struct rls_stmt_info *) y;
62214 +
62215 +  return a->stmt == b->stmt;
62216 +}
62217 +
62218 +static void
62219 +rls_free_use_info (void *info)
62220 +{
62221 +  struct rls_stmt_info *stmt_info = (struct rls_stmt_info *) info;
62222 +
62223 +  if (stmt_info->defined)
62224 +    sbitmap_free (stmt_info->defined);
62225 +
62226 +  free (stmt_info);
62227 +}
62228 +
62229 +/* Initialize data structures and statistics.  */
62230 +
62231 +static void
62232 +rls_init (void)
62233 +{
62234 +  basic_block bb;
62235 +
62236 +  /* We expect relatively few static variables, hence the small
62237 +     initial size for the hash table.  */
62238 +  static_variables = htab_create (8, rls_hash_decl_info,
62239 +                                  rls_eq_decl_info, rls_free_decl_info);
62240 +
62241 +  /* We expect quite a few statements.  */
62242 +  defuse_statements = htab_create (128, rls_hash_use_info,
62243 +                                   rls_eq_use_info, rls_free_use_info);
62244 +
62245 +  FOR_ALL_BB (bb)
62246 +    {
62247 +      struct rls_block_dataflow_data *data;
62248 +
62249 +      data = XNEW (struct rls_block_dataflow_data);
62250 +      memset (data, 0, sizeof (*data));
62251 +      bb->aux = data;
62252 +    }
62253 +
62254 +  stats.n_statics = 0;
62255 +  stats.n_optimizable = 0;
62256 +}
62257 +
62258 +/* Free data structures.  */
62259 +
62260 +static void
62261 +rls_done (void)
62262 +{
62263 +  basic_block bb;
62264 +
62265 +  htab_delete (static_variables);
62266 +  htab_delete (defuse_statements);
62267 +
62268 +  FOR_ALL_BB (bb)
62269 +    {
62270 +      struct rls_block_dataflow_data *data
62271 +       = (struct rls_block_dataflow_data *) bb->aux;
62272 +
62273 +      gcc_assert (data);
62274 +
62275 +      if (data->defined_in)
62276 +       sbitmap_free (data->defined_in);
62277 +      if (data->defined_out)
62278 +       sbitmap_free (data->defined_out);
62279 +      free (data);
62280 +      bb->aux = NULL;
62281 +    }
62282 +}
62283 +
62284 +\f
62285 +/* Doing the initial work to find static variables.  */
62286 +
62287 +/* Examine the defining statement for VAR and determine whether it is a
62288 +   static variable we could potentially optimize.  If so, stick in it
62289 +   in the 'static_variables' hashtable.
62290 +
62291 +   STMT is the statement in which a definition or use of VAR occurs.
62292 +   USE_P indicates whether VAR is used or defined in STMT.  Enter STMT
62293 +   into 'defuse_statements' as well for use during dataflow
62294 +   analysis.  */
62295 +
62296 +static void
62297 +maybe_discover_new_declaration (tree var, gimple stmt, bool use_p)
62298 +{
62299 +  tree def_stmt = SSA_NAME_VAR (var);
62300 +
62301 +  if (TREE_CODE (def_stmt) == VAR_DECL
62302 +      && DECL_CONTEXT (def_stmt) != NULL_TREE
62303 +      && TREE_CODE (DECL_CONTEXT (def_stmt)) == FUNCTION_DECL
62304 +      /* We cannot optimize away a static used in multiple functions (as
62305 +        might happen in C++).  */
62306 +      && !DECL_NONLOCAL(def_stmt)
62307 +      && TREE_STATIC (def_stmt)
62308 +      /* We cannot optimize away aggregate statics, as we would have to
62309 +        prove that definitions of every field of the aggregate dominate
62310 +        uses.  */
62311 +      && !AGGREGATE_TYPE_P (TREE_TYPE (def_stmt))
62312 +      /* GCC doesn't normally treat vectors as aggregates; we need to,
62313 +        though, since a user could use intrinsics to read/write
62314 +        particular fields of the vector, thereby treating it as an
62315 +        array.  */
62316 +      && TREE_CODE (TREE_TYPE (def_stmt)) != VECTOR_TYPE
62317 +      && !TREE_ADDRESSABLE (def_stmt)
62318 +      && !TREE_THIS_VOLATILE (def_stmt))
62319 +    {
62320 +      struct rls_decl_info dummy;
62321 +      void **slot;
62322 +
62323 +      dummy.orig_var = def_stmt;
62324 +      slot = htab_find_slot (static_variables, &dummy, INSERT);
62325 +
62326 +      if (*slot == NULL)
62327 +        {
62328 +          /* Found a use or a def of a new declaration.  */
62329 +          struct rls_decl_info *info = XNEW (struct rls_decl_info);
62330 +
62331 +          info->orig_var = def_stmt;
62332 +          info->index = stats.n_statics++;
62333 +          /* Optimistically assume that we can optimize.  */
62334 +          info->optimizable_p = true;
62335 +          info->new_var = NULL_TREE;
62336 +          *slot = (void *) info;
62337 +        }
62338 +
62339 +      /* Enter the statement into DEFUSE_STATEMENTS.  */
62340 +      {
62341 +        struct rls_stmt_info dummy;
62342 +        struct rls_stmt_info *info;
62343 +
62344 +        dummy.stmt = stmt;
62345 +        slot = htab_find_slot (defuse_statements, &dummy, INSERT);
62346 +
62347 +        /* We should never insert the same statement into the
62348 +           hashtable twice.  */
62349 +        gcc_assert (*slot == NULL
62350 +                   || ((struct rls_stmt_info *)(*slot))->stmt == stmt);
62351 +
62352 +       if (*slot != NULL && ((struct rls_stmt_info *)(*slot))->stmt == stmt)
62353 +         return;
62354 +
62355 +        info = XNEW (struct rls_stmt_info);
62356 +        info->var = def_stmt;
62357 +        info->stmt = stmt;
62358 +        if (dump_file)
62359 +          {
62360 +            fprintf (dump_file, "entering as %s ", use_p ? "use" : "def");
62361 +            print_gimple_stmt (dump_file, stmt, 0, TDF_DETAILS | TDF_VOPS);
62362 +          }
62363 +        info->use_p = use_p;
62364 +        /* We don't know how big to make the bitmap yet.  */
62365 +        info->defined = NULL;
62366 +        *slot = (void *) info;
62367 +      }
62368 +    }
62369 +}
62370 +
62371 +/* Grovel through all the statements in the program, looking for
62372 +   SSA_NAMEs whose SSA_NAME_VAR is a VAR_DECL.  We look at both use and
62373 +   def SSA_NAMEs.  */
62374 +
62375 +static void
62376 +find_static_nonvolatile_declarations (void)
62377 +{
62378 +  basic_block bb;
62379 +
62380 +  FOR_EACH_BB (bb)
62381 +    {
62382 +      gimple_stmt_iterator i;
62383 +
62384 +      for (i = gsi_start_bb (bb); !gsi_end_p (i); gsi_next (&i))
62385 +        {
62386 +          tree var;
62387 +          ssa_op_iter iter;
62388 +         gimple stmt = gsi_stmt (i);
62389 +
62390 +         /* If there's a call expression in STMT, then previous passes
62391 +            will have determined if the call transitively defines some
62392 +            static variable.  However, we need more precise
62393 +            information--we need to know whether static variables are
62394 +            live out after the call.
62395 +
62396 +            Since we'll never see something like:
62397 +
62398 +              staticvar = foo (bar, baz);
62399 +
62400 +            in GIMPLE (the result of the call will be assigned to a
62401 +            normal, non-static local variable which is then assigned to
62402 +            STATICVAR in a subsequent statement), don't bother finding
62403 +            new declarations if we see a GIMPLE_CALL.
62404 +            
62405 +            In a similar fashion, asm statements that clobber memory
62406 +            will appear to define static variables.  In general,
62407 +            however, assuming that asm statements define static
62408 +            variables would cause us to see that in the following
62409 +            situation:
62410 +
62411 +              static int foo = 0;
62412 +
62413 +              __asm__ (... : "memory");
62414 +              foo++;
62415 +
62416 +            foo could be unstaticized because the asm has "defined"
62417 +            foo.  This is likely false.  (Even if the asm does happen
62418 +            to define foo--and only foo--that situation would be
62419 +            sufficiently unusual that not optimizing it seems OK.)  */
62420 +         if (gimple_code (stmt) != GIMPLE_CALL
62421 +             && gimple_code (stmt) != GIMPLE_ASM)
62422 +           FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_VDEF)
62423 +             {
62424 +               maybe_discover_new_declaration (var, stmt, false);
62425 +             }
62426 +
62427 +          FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_VUSE)
62428 +            {
62429 +              maybe_discover_new_declaration (var, stmt, true);
62430 +            }
62431 +        }
62432 +    }
62433 +}
62434 +
62435 +\f
62436 +/* Determining if we have anything to optimize.  */
62437 +
62438 +/* Examine *SLOT (which is a 'struct rls_decl_info *') to see whether
62439 +   the associated variable is optimizable.  If it is, create a new,
62440 +   non-static declaration for the variable; this new variable will be
62441 +   used during a subsequent rewrite of the function.  */
62442 +
62443 +#define NEW_VAR_PREFIX ".unstatic"
62444 +
62445 +static int
62446 +maybe_create_new_variable (void **slot, void *data ATTRIBUTE_UNUSED)
62447 +{
62448 +  struct rls_decl_info *info = (struct rls_decl_info *) *slot;
62449 +  tree id_node = DECL_NAME (info->orig_var);
62450 +  size_t id_len = IDENTIFIER_LENGTH (id_node);
62451 +  size_t name_len = id_len + strlen (NEW_VAR_PREFIX) + 1;
62452 +  char *name;
62453 +
62454 +  /* Don't create a new variable multiple times.  */
62455 +  gcc_assert (!info->new_var);
62456 +
62457 +  /* Tie the new name to the old one to aid debugging dumps.  */
62458 +  name = (char *) alloca (name_len);
62459 +  strcpy (name, IDENTIFIER_POINTER (id_node));
62460 +  strcpy (name + id_len, NEW_VAR_PREFIX);
62461 +  info->new_var = create_tmp_var (TREE_TYPE (info->orig_var), name);
62462 +
62463 +  if (dump_file)
62464 +    {
62465 +      fprintf (dump_file, "new variable ");
62466 +      print_generic_expr (dump_file, info->new_var, 0);
62467 +      fprintf (dump_file, "\n");
62468 +    }
62469 +
62470 +  /* Inform SSA about this new variable.  */
62471 +  create_var_ann (info->new_var);
62472 +  mark_sym_for_renaming (info->new_var);
62473 +  /* We need to make sure we rebuild bits for the original variable,
62474 +     such as virtual operands attached to statements.  */
62475 +  mark_sym_for_renaming (info->orig_var);
62476 +  add_referenced_var (info->new_var);
62477 +
62478 +  /* Always continue scanning.  */
62479 +  return 1;
62480 +}
62481 +
62482 +#undef NEW_VAR_PREFIX
62483 +
62484 +/* Traverse the 'defuse_statements' hash table.  For every use,
62485 +   determine if the associated variable is defined along all paths
62486 +   leading to said use.  Remove the associated variable from
62487 +   'static_variables' if it is not.  */
62488 +
62489 +static int
62490 +check_definedness (void **slot, void *data ATTRIBUTE_UNUSED)
62491 +{
62492 +  struct rls_stmt_info *info = (struct rls_stmt_info *) *slot;
62493 +  struct rls_decl_info dummy;
62494 +
62495 +  /* We don't need to look at definitions.  Continue scanning.  */
62496 +  if (!info->use_p)
62497 +    return 1;
62498 +
62499 +  dummy.orig_var = info->var;
62500 +  slot = htab_find_slot (static_variables, &dummy, INSERT);
62501 +
62502 +  /* Might not be there because we deleted it already.  */
62503 +  if (*slot)
62504 +    {
62505 +      struct rls_decl_info *decl = (struct rls_decl_info *) *slot;
62506 +
62507 +      if (!TEST_BIT (info->defined, decl->index))
62508 +        {
62509 +          if (dump_file)
62510 +            {
62511 +              fprintf (dump_file, "not optimizing ");
62512 +              print_generic_expr (dump_file, decl->orig_var, 0);
62513 +              fprintf (dump_file, "due to uncovered use in ");
62514 +              print_gimple_stmt (dump_file, info->stmt, 0, 0);
62515 +              fprintf (dump_file, "\n");
62516 +            }
62517 +
62518 +          htab_clear_slot (static_variables, slot);
62519 +          stats.n_optimizable--;
62520 +        }
62521 +    }
62522 +
62523 +  /* Continue scan.  */
62524 +  return 1;
62525 +}
62526 +
62527 +/* Check all statements in 'defuse_statements' to see if all the
62528 +   statements that use a static variable have that variable defined
62529 +   along all paths leading to the statement.  Once that's done, go
62530 +   through and create new, non-static variables for any static variables
62531 +   that can be optimized.  */
62532 +
62533 +static size_t
62534 +determine_optimizable_statics (void)
62535 +{
62536 +  htab_traverse (defuse_statements, check_definedness, NULL);
62537 +
62538 +  htab_traverse (static_variables, maybe_create_new_variable, NULL);
62539 +
62540 +  return stats.n_optimizable;
62541 +}
62542 +
62543 +/* Look at STMT to see if we have uses or defs of a static variable.
62544 +   STMT is passed in DATA.  Definitions of a static variable are found
62545 +   by the presence of a V_MUST_DEF, while uses are found by the presence
62546 +   of a VUSE.  */
62547 +
62548 +static int
62549 +unstaticize_variable (void **slot, void *data)
62550 +{
62551 +  struct rls_decl_info *info = (struct rls_decl_info *) *slot;
62552 +  gimple stmt = (gimple) data;
62553 +  tree vdef;
62554 +  tree vuse;
62555 +  int continue_scan = 1;
62556 +
62557 +  /* We should have removed unoptimizable variables during an earlier
62558 +     traversal.  */
62559 +  gcc_assert (info->optimizable_p);
62560 +
62561 +  /* Check for virtual definitions first.  */
62562 +  vdef = SINGLE_SSA_TREE_OPERAND (stmt, SSA_OP_VDEF);
62563 +
62564 +  if (vdef != NULL
62565 +      && ZERO_SSA_OPERANDS (stmt, SSA_OP_DEF)
62566 +      && gimple_code (stmt) == GIMPLE_ASSIGN
62567 +      && TREE_CODE (gimple_assign_lhs (stmt)) == VAR_DECL
62568 +      && gimple_assign_lhs(stmt) == info->orig_var)
62569 +    {
62570 +      /* Make the statement define the new name.  The new name has
62571 +         already been marked for renaming, so no need to do that
62572 +         here.  */
62573 +      gimple_assign_set_lhs (stmt, info->new_var);
62574 +      if (dump_file)
62575 +       {
62576 +         fprintf (dump_file, "found virtual definition!\n");
62577 +         print_gimple_stmt (dump_file, stmt, 0, TDF_VOPS | TDF_DETAILS);
62578 +         fprintf (dump_file, "\n");
62579 +       }
62580 +      continue_scan = 0;
62581 +      goto done;
62582 +    }
62583 +
62584 +  /* Check for virtual uses.  */
62585 +  vuse = SINGLE_SSA_TREE_OPERAND (stmt, SSA_OP_VUSE);
62586 +
62587 +  if (vuse != NULL
62588 +      && gimple_code (stmt) == GIMPLE_ASSIGN
62589 +      && gimple_assign_rhs_code (stmt) == VAR_DECL
62590 +      && gimple_assign_rhs1 (stmt) == info->orig_var)
62591 +    {
62592 +      /* Make the statement use the new name.  */
62593 +      gimple_assign_set_rhs1 (stmt, info->new_var);
62594 +      if (dump_file)
62595 +       {
62596 +         fprintf (dump_file, "found virtual use!\n");
62597 +         print_gimple_stmt (dump_file, stmt, 0, TDF_VOPS | TDF_DETAILS);
62598 +         fprintf (dump_file, "\n");
62599 +       }
62600 +      continue_scan = 0;
62601 +      goto done;
62602 +    }
62603 +
62604 + done:
62605 +  if (!continue_scan)
62606 +    {
62607 +      /* None of the other optimizable static variables can occur
62608 +         in this statement.  Stop the scan.  */
62609 +      update_stmt (stmt);
62610 +
62611 +      if (dump_file)
62612 +       {
62613 +         fprintf (dump_file, "updated stmt\n");
62614 +         print_gimple_stmt (dump_file, stmt, 0, TDF_VOPS | TDF_DETAILS);
62615 +       }
62616 +    }
62617 +
62618 +  return continue_scan;
62619 +}
62620 +
62621 +/* Determine if we have any static variables we can optimize.  If so,
62622 +   replace any defs or uses of those variables in their defining/using
62623 +   statements.  */
62624 +
62625 +static void
62626 +maybe_remove_static_from_declarations (void)
62627 +{
62628 +  size_t n_optimizable = determine_optimizable_statics ();
62629 +  basic_block bb;
62630 +
62631 +  if (n_optimizable)
62632 +    /* Replace any optimizable variables with new, non-static variables.  */
62633 +    FOR_EACH_BB (bb)
62634 +      {
62635 +        gimple_stmt_iterator gsi;
62636 +
62637 +        for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
62638 +          {
62639 +            gimple stmt = gsi_stmt (gsi);
62640 +
62641 +            htab_traverse (static_variables, unstaticize_variable, stmt);
62642 +          }
62643 +      }
62644 +}
62645 +
62646 +/* Callback for htab_traverse to initialize the bitmap for *SLOT, which
62647 +   is a 'struct rls_stmt_info'.  */
62648 +
62649 +static int
62650 +initialize_statement_dataflow (void **slot, void *data ATTRIBUTE_UNUSED)
62651 +{
62652 +  struct rls_stmt_info *info = (struct rls_stmt_info *) *slot;
62653 +
62654 +  gcc_assert (!info->defined);
62655 +
62656 +  if (info->use_p)
62657 +    {
62658 +      info->defined = sbitmap_alloc (stats.n_statics);
62659 +      /* Assume defined along all paths until otherwise informed.  */
62660 +      sbitmap_ones (info->defined);
62661 +    }
62662 +
62663 +  /* Continue traversal.  */
62664 +  return 1;
62665 +}
62666 +
62667 +/* We have N_STATICS static variables to consider.  Go through all the
62668 +   blocks and all the use statements to initialize their bitmaps.  */
62669 +
62670 +static void
62671 +initialize_block_and_statement_dataflow (size_t n_statics)
62672 +{
62673 +  basic_block bb;
62674 +
62675 +  FOR_ALL_BB (bb)
62676 +    {
62677 +      struct rls_block_dataflow_data *data
62678 +       = (struct rls_block_dataflow_data *) bb->aux;
62679 +
62680 +      gcc_assert (data);
62681 +
62682 +      data->defined_in = sbitmap_alloc (n_statics);
62683 +      sbitmap_zero (data->defined_in);
62684 +      data->defined_out = sbitmap_alloc (n_statics);
62685 +      sbitmap_zero (data->defined_out);
62686 +    }
62687 +
62688 +  htab_traverse (defuse_statements, initialize_statement_dataflow, NULL);
62689 +}
62690 +
62691 +/* Apply the individual effects of the stmts in BB to update the
62692 +   dataflow analysis information for BB.  */
62693 +
62694 +static void
62695 +compute_definedness_for_block (basic_block bb)
62696 +{
62697 +  bool changed_p = false;
62698 +  struct rls_block_dataflow_data *data
62699 +       = (struct rls_block_dataflow_data *) bb->aux;
62700 +  gimple_stmt_iterator gsi;
62701 +
62702 +  sbitmap_copy (data->defined_out, data->defined_in);
62703 +
62704 +  for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
62705 +    {
62706 +      gimple stmt = gsi_stmt (gsi);
62707 +
62708 +      if (gimple_code (stmt) == GIMPLE_CALL)
62709 +       /* If there's a call expression in STMT, then previous passes
62710 +          will have determined if the call transitively defines some
62711 +          static variable.  However, we need more precise
62712 +          information--we need to know whether static variables are
62713 +          live out after the call.  In the absence of such information,
62714 +          simply declare that all static variables are clobbered by the
62715 +          call.  A better analysis would be interprocedural and compute
62716 +          the liveness information we require, but for now, we're being
62717 +          pessimistic.  */
62718 +       sbitmap_zero (data->defined_out);
62719 +      else 
62720 +       {
62721 +         struct rls_stmt_info dummy;
62722 +         void **slot;
62723 +
62724 +         /* See if this statement uses or defines a static variable.  */
62725 +         dummy.stmt = stmt;
62726 +         slot = htab_find_slot (defuse_statements, &dummy, INSERT);
62727 +
62728 +         /* Check for uses.  */
62729 +         if (*slot != NULL)
62730 +           {
62731 +             struct rls_stmt_info *info = (struct rls_stmt_info *) *slot;
62732 +
62733 +             if (info->use_p)
62734 +               {
62735 +                 gcc_assert (info->defined);
62736 +
62737 +                 /* Found a statement that uses a function-local static
62738 +                    variable.  Copy the current state of definedness.  */
62739 +                 sbitmap_copy (info->defined, data->defined_out);
62740 +               }
62741 +             else
62742 +               {
62743 +                 struct rls_decl_info dummy;
62744 +                 struct rls_decl_info *decl;
62745 +
62746 +                 gcc_assert (!info->defined);
62747 +
62748 +                 /* Found a statement that defines a function-local static
62749 +                    variable.  Look up the associated variable's information
62750 +                    and mark it as defined in the block.  */
62751 +                 dummy.orig_var = info->var;
62752 +                 slot = htab_find_slot (static_variables, &dummy, INSERT);
62753 +
62754 +                 gcc_assert (*slot);
62755 +
62756 +                 decl = (struct rls_decl_info *) *slot;
62757 +
62758 +                 SET_BIT (data->defined_out, decl->index);
62759 +                 changed_p |= true;
62760 +               }
62761 +           }
62762 +       }
62763 +    }
62764 +}
62765 +
62766 +/* Solve the dataflow equations:
62767 +
62768 +   DEFINED_IN(b) = intersect DEFINED_OUT(p) for p in preds(b)
62769 +   DEFINED_OUT(b) = VARIABLES_DEFINED (b, DEFINED_IN (b))
62770 +
62771 +   via a simple iterative solver.  VARIABLES_DEFINED is computed by
62772 +   'compute_definedness_for_block'.  */
62773 +
62774 +static void
62775 +compute_definedness (void)
62776 +{
62777 +  basic_block bb;
62778 +  bool changed_p;
62779 +  sbitmap tmp_bitmap = sbitmap_alloc (stats.n_statics);
62780 +
62781 +  /* Compute initial sets.  */
62782 +  FOR_EACH_BB (bb)
62783 +    {
62784 +      compute_definedness_for_block (bb);
62785 +    }
62786 +
62787 +  /* Iterate.  */
62788 +  do {
62789 +    changed_p = false;
62790 +
62791 +    FOR_EACH_BB (bb)
62792 +      {
62793 +        edge e;
62794 +        edge_iterator ei;
62795 +        struct rls_block_dataflow_data *data
62796 +         = (struct rls_block_dataflow_data *) bb->aux;
62797 +        bool bitmap_changed_p = false;
62798 +
62799 +        sbitmap_ones (tmp_bitmap);
62800 +
62801 +        gcc_assert (data);
62802 +
62803 +        /* We require information about whether a variable was defined
62804 +           over all paths leading to a particular use.  Therefore, we
62805 +           intersect the DEFINED sets of all predecessors.  */
62806 +        FOR_EACH_EDGE (e, ei, bb->preds)
62807 +          {
62808 +            struct rls_block_dataflow_data *pred_data
62809 +             = (struct rls_block_dataflow_data *) e->src->aux;
62810 +
62811 +            gcc_assert (pred_data);
62812 +
62813 +            sbitmap_a_and_b (tmp_bitmap, tmp_bitmap, pred_data->defined_out);
62814 +          }
62815 +
62816 +        bitmap_changed_p = !sbitmap_equal (tmp_bitmap, data->defined_in);
62817 +
62818 +        if (bitmap_changed_p)
62819 +          {
62820 +            sbitmap_copy (data->defined_in, tmp_bitmap);
62821 +            compute_definedness_for_block (bb);
62822 +          }
62823 +
62824 +        changed_p |= bitmap_changed_p;
62825 +      }
62826 +  } while (changed_p);
62827 +
62828 +  sbitmap_free (tmp_bitmap);
62829 +}
62830 +
62831 +static unsigned int
62832 +execute_rls (void)
62833 +{
62834 +  rls_init ();
62835 +
62836 +  find_static_nonvolatile_declarations ();
62837 +
62838 +  /* Can we optimize anything?  */
62839 +  if (stats.n_statics != 0)
62840 +    {
62841 +      stats.n_optimizable = stats.n_statics;
62842 +
62843 +      if (dump_file)
62844 +        fprintf (dump_file, "found %d static variables to consider\n",
62845 +                 stats.n_statics);
62846 +
62847 +      initialize_block_and_statement_dataflow (stats.n_statics);
62848 +
62849 +      compute_definedness ();
62850 +
62851 +      maybe_remove_static_from_declarations ();
62852 +
62853 +      if (dump_file)
62854 +        fprintf (dump_file, "removed %d static variables\n",
62855 +                 stats.n_optimizable);
62856 +    }
62857 +
62858 +  rls_done ();
62859 +
62860 +  return 0;
62861 +}
62862 +
62863 +static bool
62864 +gate_rls (void)
62865 +{
62866 +  return (flag_remove_local_statics != 0
62867 +          && !cfun->calls_setjmp
62868 +          && !cgraph_node (current_function_decl)->ever_was_nested);
62869 +}
62870 +
62871 +struct gimple_opt_pass pass_remove_local_statics =
62872 +{
62873 +  {
62874 +    GIMPLE_PASS,
62875 +    "remlocstatic",               /* name */
62876 +    gate_rls,                     /* gate */
62877 +    execute_rls,                  /* execute */
62878 +    NULL,                         /* sub */
62879 +    NULL,                         /* next */
62880 +    0,                            /* static_pass_number */
62881 +    TV_TREE_RLS,                  /* tv_id */
62882 +    PROP_cfg | PROP_ssa,          /* properties_required */
62883 +    0,                            /* properties_provided */
62884 +    0,                            /* properties_destroyed */
62885 +    0,                            /* todo_flags_start */
62886 +    TODO_dump_func | TODO_verify_ssa | TODO_verify_stmts
62887 +    | TODO_rebuild_alias | TODO_update_ssa /* todo_flags_finish */
62888 +  }
62889 +};
62890 diff -Nur a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c
62891 --- a/gcc/tree-ssa-sink.c       2009-02-20 16:20:38.000000000 +0100
62892 +++ b/gcc/tree-ssa-sink.c       2010-01-25 09:50:29.595686516 +0100
62893 @@ -449,6 +449,47 @@
62894           last = false;
62895           continue;
62896         }      
62897 +
62898 +      /* We cannot move statements that contain references to block-scope
62899 +        variables out of that block, as this may lead to incorrect aliasing
62900 +        when we lay out the stack frame in cfgexpand.c.
62901 +        In lieu of more sophisticated analysis, be very conservative here
62902 +        and prohibit moving any statement that references memory out of a
62903 +        block with variables.  */
62904 +      if (gimple_references_memory_p (stmt))
62905 +       {
62906 +         tree fromblock = gimple_block (stmt);
62907 +         while (fromblock
62908 +                && fromblock != current_function_decl
62909 +                && !BLOCK_VARS (fromblock))
62910 +           fromblock = BLOCK_SUPERCONTEXT (fromblock);
62911 +         if (fromblock && fromblock != current_function_decl)
62912 +           {
62913 +             gimple tostmt;
62914 +             tree toblock;
62915 +
62916 +             if (gsi_end_p (togsi))
62917 +               tostmt = gimple_seq_last_stmt (gsi_seq (togsi));
62918 +             else
62919 +               tostmt = gsi_stmt (togsi);
62920 +             if (tostmt)
62921 +               toblock = gimple_block (tostmt);
62922 +             else
62923 +               toblock = NULL;
62924 +             while (toblock
62925 +                    && toblock != current_function_decl
62926 +                    && toblock != fromblock)
62927 +               toblock = BLOCK_SUPERCONTEXT (toblock);
62928 +             if (!toblock || toblock != fromblock)
62929 +               {
62930 +                 if (!gsi_end_p (gsi))
62931 +                   gsi_prev (&gsi);
62932 +                 last = false;
62933 +                 continue;
62934 +               }
62935 +           }
62936 +       }
62937 +
62938        if (dump_file)
62939         {
62940           fprintf (dump_file, "Sinking ");
62941 diff -Nur a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
62942 --- a/gcc/tree-ssa-structalias.c        2009-03-23 17:29:33.000000000 +0100
62943 +++ b/gcc/tree-ssa-structalias.c        2010-01-25 09:50:29.595686516 +0100
62944 @@ -2926,7 +2926,8 @@
62945    /* Some people like to do cute things like take the address of
62946       &0->a.b */
62947    forzero = t;
62948 -  while (!SSA_VAR_P (forzero) && !CONSTANT_CLASS_P (forzero))
62949 +  while (!SSA_VAR_P (forzero) && TREE_CODE (forzero) != FUNCTION_DECL
62950 +        && !CONSTANT_CLASS_P (forzero))
62951      forzero = TREE_OPERAND (forzero, 0);
62952  
62953    if (CONSTANT_CLASS_P (forzero) && integer_zerop (forzero))
62954 diff -Nur a/gcc/tree-vect-analyze.c b/gcc/tree-vect-analyze.c
62955 --- a/gcc/tree-vect-analyze.c   2009-06-30 13:56:21.000000000 +0200
62956 +++ b/gcc/tree-vect-analyze.c   2010-01-25 09:50:29.595686516 +0100
62957 @@ -1459,7 +1459,7 @@
62958      }
62959  
62960    base = build_fold_indirect_ref (base_addr);
62961 -  alignment = ssize_int (TYPE_ALIGN (vectype)/BITS_PER_UNIT);
62962 +  alignment = ssize_int (targetm.vectorize.vector_min_alignment (vectype));
62963  
62964    if ((aligned_to && tree_int_cst_compare (aligned_to, alignment) < 0)
62965        || !misalign)
62966 @@ -1510,7 +1510,8 @@
62967    /* At this point we assume that the base is aligned.  */
62968    gcc_assert (base_aligned
62969               || (TREE_CODE (base) == VAR_DECL 
62970 -                 && DECL_ALIGN (base) >= TYPE_ALIGN (vectype)));
62971 +                 && (DECL_ALIGN (base)
62972 +                     >= targetm.vectorize.vector_min_alignment (vectype))));
62973  
62974    /* Modulo alignment.  */
62975    misalign = size_binop (TRUNC_MOD_EXPR, misalign, alignment);
62976 diff -Nur a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
62977 --- a/gcc/tree-vectorizer.c     2009-03-18 16:29:28.000000000 +0100
62978 +++ b/gcc/tree-vectorizer.c     2010-01-25 09:50:29.595686516 +0100
62979 @@ -2868,11 +2868,13 @@
62980         vnode = vnode->next_needed)
62981      {
62982        tree vectype, decl = vnode->decl;
62983 +      tree t;
62984        unsigned int alignment;
62985  
62986 -      if (TREE_CODE (TREE_TYPE (decl)) != ARRAY_TYPE)
62987 +      t = TREE_TYPE(decl);
62988 +      if (TREE_CODE (t) != ARRAY_TYPE)
62989         continue;
62990 -      vectype = get_vectype_for_scalar_type (TREE_TYPE (TREE_TYPE (decl)));
62991 +      vectype = get_vectype_for_scalar_type (strip_array_types (t));
62992        if (!vectype)
62993         continue;
62994        alignment = TYPE_ALIGN (vectype);
62995 @@ -2887,6 +2889,7 @@
62996             { 
62997               fprintf (dump_file, "Increasing alignment of decl: ");
62998               print_generic_expr (dump_file, decl, TDF_SLIM);
62999 +             fprintf (dump_file, "\n");
63000             }
63001         }
63002      }
63003 diff -Nur a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c
63004 --- a/gcc/tree-vect-transform.c 2009-04-20 09:09:01.000000000 +0200
63005 +++ b/gcc/tree-vect-transform.c 2010-01-25 09:50:29.595686516 +0100
63006 @@ -5442,7 +5442,21 @@
63007                vect_permute_store_chain().  */
63008             vec_oprnd = VEC_index (tree, result_chain, i);
63009  
63010 -         data_ref = build_fold_indirect_ref (dataref_ptr);
63011 +         if (alignment_support_scheme == dr_aligned
63012 +             && !targetm.vectorize.always_misalign(vectype))
63013 +           {
63014 +             data_ref = build_fold_indirect_ref (dataref_ptr);
63015 +           }
63016 +         else
63017 +           {
63018 +             /* TODO: Record actual alignment in always_misalign case.  */
63019 +             int mis = DR_MISALIGNMENT (first_dr);
63020 +             tree tmis;
63021 +             tmis = (mis == -1 ? size_zero_node : size_int (mis));
63022 +             tmis = size_binop (MULT_EXPR, tmis, size_int(BITS_PER_UNIT));
63023 +             data_ref =
63024 +               build2 (MISALIGNED_INDIRECT_REF, vectype, dataref_ptr, tmis);
63025 +           }
63026  
63027           /* Arguments are ready. Create the new vector stmt.  */
63028           new_stmt = gimple_build_assign (data_ref, vec_oprnd);
63029 @@ -6621,10 +6635,15 @@
63030             {
63031             case dr_aligned:
63032               gcc_assert (aligned_access_p (first_dr));
63033 -             data_ref = build_fold_indirect_ref (dataref_ptr);
63034 -             break;
63035 +             if (!targetm.vectorize.always_misalign(vectype))
63036 +               {
63037 +                 data_ref = build_fold_indirect_ref (dataref_ptr);
63038 +                 break;
63039 +               }
63040 +             /* Fall through... */
63041             case dr_unaligned_supported:
63042               {
63043 +               /* TODO: Record actual alignment in always_misalign case.  */
63044                 int mis = DR_MISALIGNMENT (first_dr);
63045                 tree tmis = (mis == -1 ? size_zero_node : size_int (mis));
63046  
63047 @@ -7595,7 +7614,7 @@
63048    gimple dr_stmt = DR_STMT (dr);
63049    stmt_vec_info stmt_info = vinfo_for_stmt (dr_stmt);
63050    tree vectype = STMT_VINFO_VECTYPE (stmt_info);
63051 -  int vectype_align = TYPE_ALIGN (vectype) / BITS_PER_UNIT;
63052 +  int vectype_align = targetm.vectorize.vector_min_alignment (vectype);
63053    tree niters_type = TREE_TYPE (loop_niters);
63054    int step = 1;
63055    int element_size = GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (DR_REF (dr))));
63056 diff -Nur a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c
63057 --- a/gcc/unwind-dw2.c  2009-04-10 01:23:07.000000000 +0200
63058 +++ b/gcc/unwind-dw2.c  2010-01-25 09:50:29.595686516 +0100
63059 @@ -1414,16 +1414,12 @@
63060  /* Fill in CONTEXT for top-of-stack.  The only valid registers at this
63061     level will be the return address and the CFA.  */
63062  
63063 -#define uw_init_context(CONTEXT)                                          \
63064 -  do                                                                      \
63065 -    {                                                                     \
63066 -      /* Do any necessary initialization to access arbitrary stack frames. \
63067 -        On the SPARC, this means flushing the register windows.  */       \
63068 -      __builtin_unwind_init ();                                                   \
63069 -      uw_init_context_1 (CONTEXT, __builtin_dwarf_cfa (),                 \
63070 -                        __builtin_return_address (0));                    \
63071 -    }                                                                     \
63072 -  while (0)
63073 +#define uw_init_context(CONTEXT)                                       \
63074 +  /* Do any necessary initialization to access arbitrary stack frames. \
63075 +     On the SPARC, this means flushing the register windows.  */       \
63076 +  (__builtin_unwind_init (),                                           \
63077 +   uw_init_context_1 ((CONTEXT), __builtin_dwarf_cfa (),               \
63078 +                     __builtin_return_address (0)))
63079  
63080  static inline void
63081  init_dwarf_reg_size_table (void)
63082 @@ -1431,7 +1427,7 @@
63083    __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table);
63084  }
63085  
63086 -static void
63087 +static _Unwind_Reason_Code
63088  uw_init_context_1 (struct _Unwind_Context *context,
63089                    void *outer_cfa, void *outer_ra)
63090  {
63091 @@ -1445,7 +1441,8 @@
63092    context->flags = EXTENDED_CONTEXT_BIT;
63093  
63094    code = uw_frame_state_for (context, &fs);
63095 -  gcc_assert (code == _URC_NO_REASON);
63096 +  if (code != _URC_NO_REASON)
63097 +    return code;
63098  
63099  #if __GTHREADS
63100    {
63101 @@ -1471,6 +1468,8 @@
63102       initialization context, then we can't see it in the given
63103       call frame data.  So have the initialization context tell us.  */
63104    context->ra = __builtin_extract_return_addr (outer_ra);
63105 +
63106 +  return _URC_NO_REASON;
63107  }
63108  
63109  
63110 diff -Nur a/gcc/unwind.inc b/gcc/unwind.inc
63111 --- a/gcc/unwind.inc    2009-04-10 01:23:07.000000000 +0200
63112 +++ b/gcc/unwind.inc    2010-01-25 09:50:29.595686516 +0100
63113 @@ -85,7 +85,8 @@
63114    _Unwind_Reason_Code code;
63115  
63116    /* Set up this_context to describe the current stack frame.  */
63117 -  uw_init_context (&this_context);
63118 +  code = uw_init_context (&this_context);
63119 +  gcc_assert (code == _URC_NO_REASON);
63120    cur_context = this_context;
63121  
63122    /* Phase 1: Search.  Unwind the stack, calling the personality routine
63123 @@ -198,7 +199,8 @@
63124    struct _Unwind_Context this_context, cur_context;
63125    _Unwind_Reason_Code code;
63126  
63127 -  uw_init_context (&this_context);
63128 +  code = uw_init_context (&this_context);
63129 +  gcc_assert (code == _URC_NO_REASON);
63130    cur_context = this_context;
63131  
63132    exc->private_1 = (_Unwind_Ptr) stop;
63133 @@ -221,7 +223,8 @@
63134    struct _Unwind_Context this_context, cur_context;
63135    _Unwind_Reason_Code code;
63136  
63137 -  uw_init_context (&this_context);
63138 +  code = uw_init_context (&this_context);
63139 +  gcc_assert (code == _URC_NO_REASON);
63140    cur_context = this_context;
63141  
63142    /* Choose between continuing to process _Unwind_RaiseException
63143 @@ -251,7 +254,8 @@
63144    if (exc->private_1 == 0)
63145      return _Unwind_RaiseException (exc);
63146  
63147 -  uw_init_context (&this_context);
63148 +  code = uw_init_context (&this_context);
63149 +  gcc_assert (code == _URC_NO_REASON);
63150    cur_context = this_context;
63151  
63152    code = _Unwind_ForcedUnwind_Phase2 (exc, &cur_context);
63153 @@ -280,7 +284,9 @@
63154    struct _Unwind_Context context;
63155    _Unwind_Reason_Code code;
63156  
63157 -  uw_init_context (&context);
63158 +  code = uw_init_context (&context);
63159 +  if (code != _URC_NO_REASON)
63160 +    return _URC_FATAL_PHASE1_ERROR;
63161  
63162    while (1)
63163      {
63164 diff -Nur a/gcc/unwind-sjlj.c b/gcc/unwind-sjlj.c
63165 --- a/gcc/unwind-sjlj.c 2009-04-10 01:23:07.000000000 +0200
63166 +++ b/gcc/unwind-sjlj.c 2010-01-25 09:50:29.595686516 +0100
63167 @@ -292,10 +292,11 @@
63168    uw_update_context (context, fs);
63169  }
63170  
63171 -static inline void
63172 +static inline _Unwind_Reason_Code
63173  uw_init_context (struct _Unwind_Context *context)
63174  {
63175    context->fc = _Unwind_SjLj_GetContext ();
63176 +  return _URC_NO_REASON;
63177  }
63178  
63179  static void __attribute__((noreturn))
63180 diff -Nur a/gcc/varasm.c b/gcc/varasm.c
63181 --- a/gcc/varasm.c      2009-03-17 21:18:21.000000000 +0100
63182 +++ b/gcc/varasm.c      2010-01-25 09:50:29.595686516 +0100
63183 @@ -1126,11 +1126,14 @@
63184      {
63185  #ifdef DATA_ALIGNMENT
63186        unsigned int data_align = DATA_ALIGNMENT (TREE_TYPE (decl), align);
63187 +#else
63188 +      unsigned int data_align = align;
63189 +#endif
63190 +      data_align = alignment_for_aligned_arrays (TREE_TYPE (decl), data_align);
63191        /* Don't increase alignment too much for TLS variables - TLS space
63192          is too precious.  */
63193        if (! DECL_THREAD_LOCAL_P (decl) || data_align <= BITS_PER_WORD)
63194         align = data_align;
63195 -#endif
63196  #ifdef CONSTANT_ALIGNMENT
63197        if (DECL_INITIAL (decl) != 0 && DECL_INITIAL (decl) != error_mark_node)
63198         {
63199 @@ -3196,6 +3199,10 @@
63200    set_mem_alias_set (rtl, 0);
63201    set_mem_alias_set (rtl, const_alias_set);
63202  
63203 +  /* We cannot share RTX'es in pool entries.
63204 +     Mark this piece of RTL as required for unsharing.  */
63205 +  RTX_FLAG (rtl, used) = 1;
63206 +
63207    /* Set flags or add text to the name to record information, such as
63208       that it is a local symbol.  If the name is changed, the macro
63209       ASM_OUTPUT_LABELREF will have to know how to strip this
63210 diff -Nur a/gcc/vmsdbgout.c b/gcc/vmsdbgout.c
63211 --- a/gcc/vmsdbgout.c   2008-08-29 20:41:19.000000000 +0200
63212 +++ b/gcc/vmsdbgout.c   2010-01-25 09:50:29.595686516 +0100
63213 @@ -211,6 +211,7 @@
63214     debug_nothing_int,            /* handle_pch */
63215     debug_nothing_rtx,            /* var_location */
63216     debug_nothing_void,            /* switch_text_section */
63217 +   debug_nothing_tree_tree,      /* set_name */
63218     0                              /* start_end_main_source_file */
63219  };
63220  
63221 diff -Nur a/include/libiberty.h b/include/libiberty.h
63222 --- a/include/libiberty.h       2008-06-24 03:42:31.000000000 +0200
63223 +++ b/include/libiberty.h       2010-01-25 09:50:29.595686516 +0100
63224 @@ -591,6 +591,10 @@
63225  
63226  extern int pwait (int, int *, int);
63227  
63228 +/* Convert a Cygwin path to a Windows path.  */
63229 +
63230 +extern int cygpath (const char *, char []);
63231 +
63232  #if !HAVE_DECL_ASPRINTF
63233  /* Like sprintf but provides a pointer to malloc'd storage, which must
63234     be freed by the caller.  */
63235 diff -Nur a/libcpp/directives.c b/libcpp/directives.c
63236 --- a/libcpp/directives.c       2009-04-10 01:23:07.000000000 +0200
63237 +++ b/libcpp/directives.c       2010-01-25 09:50:29.595686516 +0100
63238 @@ -2299,13 +2299,6 @@
63239    run_directive (pfile, type, str, count);
63240  }
63241  
63242 -/* The number of errors for a given reader.  */
63243 -unsigned int
63244 -cpp_errors (cpp_reader *pfile)
63245 -{
63246 -  return pfile->errors;
63247 -}
63248 -
63249  /* The options structure.  */
63250  cpp_options *
63251  cpp_get_options (cpp_reader *pfile)
63252 diff -Nur a/libcpp/errors.c b/libcpp/errors.c
63253 --- a/libcpp/errors.c   2009-04-10 01:23:07.000000000 +0200
63254 +++ b/libcpp/errors.c   2010-01-25 09:50:29.595686516 +0100
63255 @@ -28,171 +28,69 @@
63256  #include "cpplib.h"
63257  #include "internal.h"
63258  
63259 -static void print_location (cpp_reader *, source_location, unsigned int);
63260 -
63261 -/* Print the logical file location (LINE, COL) in preparation for a
63262 -   diagnostic.  Outputs the #include chain if it has changed.  A line
63263 -   of zero suppresses the include stack, and outputs the program name
63264 -   instead.  */
63265 -static void
63266 -print_location (cpp_reader *pfile, source_location line, unsigned int col)
63267 -{
63268 -  if (line == 0)
63269 -    fprintf (stderr, "%s: ", progname);
63270 -  else
63271 -    {
63272 -      const struct line_map *map;
63273 -      linenum_type lin;
63274 -
63275 -      map = linemap_lookup (pfile->line_table, line);
63276 -      linemap_print_containing_files (pfile->line_table, map);
63277 -
63278 -      lin = SOURCE_LINE (map, line);
63279 -      if (col == 0)
63280 -       {
63281 -         col = SOURCE_COLUMN (map, line);
63282 -         if (col == 0)
63283 -           col = 1;
63284 -       }
63285 -
63286 -      if (lin == 0)
63287 -       fprintf (stderr, "%s:", map->to_file);
63288 -      else if (CPP_OPTION (pfile, show_column) == 0)
63289 -       fprintf (stderr, "%s:%u:", map->to_file, lin);
63290 -      else
63291 -       fprintf (stderr, "%s:%u:%u:", map->to_file, lin, col);
63292 -
63293 -      fputc (' ', stderr);
63294 -    }
63295 -}
63296 -
63297 -/* Set up for a diagnostic: print the file and line, bump the error
63298 -   counter, etc.  SRC_LOC is the logical line number; zero means to print
63299 -   at the location of the previously lexed token, which tends to be
63300 -   the correct place by default.  The column number can be specified either
63301 -   using COLUMN or (if COLUMN==0) extracting SOURCE_COLUMN from SRC_LOC.
63302 -   (This may seem redundant, but is useful when pre-scanning (cleaning) a line,
63303 -   when we haven't yet verified whether the current line_map has a
63304 -   big enough max_column_hint.)
63305 -
63306 -   Returns 0 if the error has been suppressed.  */
63307 -static int
63308 -_cpp_begin_message (cpp_reader *pfile, int code,
63309 -                   source_location src_loc, unsigned int column)
63310 -{
63311 -  int level = CPP_DL_EXTRACT (code);
63312 -
63313 -  switch (level)
63314 -    {
63315 -    case CPP_DL_WARNING:
63316 -    case CPP_DL_PEDWARN:
63317 -      if (cpp_in_system_header (pfile)
63318 -         && ! CPP_OPTION (pfile, warn_system_headers))
63319 -       return 0;
63320 -      /* Fall through.  */
63321 -
63322 -    case CPP_DL_WARNING_SYSHDR:
63323 -      if (CPP_OPTION (pfile, warnings_are_errors)
63324 -         || (level == CPP_DL_PEDWARN && CPP_OPTION (pfile, pedantic_errors)))
63325 -       {
63326 -         if (CPP_OPTION (pfile, inhibit_errors))
63327 -           return 0;
63328 -         level = CPP_DL_ERROR;
63329 -         pfile->errors++;
63330 -       }
63331 -      else if (CPP_OPTION (pfile, inhibit_warnings))
63332 -       return 0;
63333 -      break;
63334 -
63335 -    case CPP_DL_ERROR:
63336 -      if (CPP_OPTION (pfile, inhibit_errors))
63337 -       return 0;
63338 -      /* ICEs cannot be inhibited.  */
63339 -    case CPP_DL_ICE:
63340 -      pfile->errors++;
63341 -      break;
63342 -    }
63343 -
63344 -  print_location (pfile, src_loc, column);
63345 -  if (CPP_DL_WARNING_P (level))
63346 -    fputs (_("warning: "), stderr);
63347 -  else if (level == CPP_DL_ICE)
63348 -    fputs (_("internal error: "), stderr);
63349 -  else
63350 -    fputs (_("error: "), stderr);
63351 -
63352 -  return 1;
63353 -}
63354 -
63355 -/* Don't remove the blank before do, as otherwise the exgettext
63356 -   script will mistake this as a function definition */
63357 -#define v_message(msgid, ap) \
63358 - do { vfprintf (stderr, _(msgid), ap); putc ('\n', stderr); } while (0)
63359 -
63360 -/* Exported interface.  */
63361 -
63362  /* Print an error at the location of the previously lexed token.  */
63363 -void
63364 +bool
63365  cpp_error (cpp_reader * pfile, int level, const char *msgid, ...)
63366  {
63367    source_location src_loc;
63368    va_list ap;
63369 -  
63370 +  bool ret;
63371 +
63372    va_start (ap, msgid);
63373  
63374 -  if (CPP_OPTION (pfile, client_diagnostic))
63375 -    pfile->cb.error (pfile, level, _(msgid), &ap);
63376 -  else
63377 +  if (CPP_OPTION (pfile, traditional))
63378      {
63379 -      if (CPP_OPTION (pfile, traditional))
63380 -       {
63381 -         if (pfile->state.in_directive)
63382 -           src_loc = pfile->directive_line;
63383 -         else
63384 -           src_loc = pfile->line_table->highest_line;
63385 -       }
63386 -      /* We don't want to refer to a token before the beginning of the
63387 -        current run -- that is invalid.  */
63388 -      else if (pfile->cur_token == pfile->cur_run->base)
63389 -       {
63390 -         if (pfile->cur_run->prev != NULL)
63391 -           src_loc = pfile->cur_run->prev->limit->src_loc;
63392 -         else
63393 -           src_loc = 0;
63394 -       }
63395 +      if (pfile->state.in_directive)
63396 +       src_loc = pfile->directive_line;
63397        else
63398 -       {
63399 -         src_loc = pfile->cur_token[-1].src_loc;
63400 -       }
63401 -
63402 -      if (_cpp_begin_message (pfile, level, src_loc, 0))
63403 -       v_message (msgid, ap);
63404 +       src_loc = pfile->line_table->highest_line;
63405 +    }
63406 +  /* We don't want to refer to a token before the beginning of the
63407 +     current run -- that is invalid.  */
63408 +  else if (pfile->cur_token == pfile->cur_run->base)
63409 +    {
63410 +      if (pfile->cur_run->prev != NULL)
63411 +       src_loc = pfile->cur_run->prev->limit->src_loc;
63412 +      else
63413 +       src_loc = 0;
63414      }
63415 +  else
63416 +    {
63417 +      src_loc = pfile->cur_token[-1].src_loc;
63418 +    }
63419 +
63420 +  if (!pfile->cb.error)
63421 +    abort ();
63422 +  ret = pfile->cb.error (pfile, level, src_loc, 0, _(msgid), &ap);
63423  
63424    va_end (ap);
63425 +  return ret;
63426  }
63427  
63428  /* Print an error at a specific location.  */
63429 -void
63430 +bool
63431  cpp_error_with_line (cpp_reader *pfile, int level,
63432                      source_location src_loc, unsigned int column,
63433                      const char *msgid, ...)
63434  {
63435    va_list ap;
63436 +  bool ret;
63437    
63438    va_start (ap, msgid);
63439  
63440 -  if (_cpp_begin_message (pfile, level, src_loc, column))
63441 -    v_message (msgid, ap);
63442 +  if (!pfile->cb.error)
63443 +    abort ();
63444 +  ret = pfile->cb.error (pfile, level, src_loc, column, _(msgid), &ap);
63445  
63446    va_end (ap);
63447 +  return ret;
63448  }
63449  
63450 -void
63451 +bool
63452  cpp_errno (cpp_reader *pfile, int level, const char *msgid)
63453  {
63454    if (msgid[0] == '\0')
63455      msgid = _("stdout");
63456  
63457 -  cpp_error (pfile, level, "%s: %s", msgid, xstrerror (errno));
63458 +  return cpp_error (pfile, level, "%s: %s", msgid, xstrerror (errno));
63459  }
63460 diff -Nur a/libcpp/files.c b/libcpp/files.c
63461 --- a/libcpp/files.c    2009-04-10 01:23:07.000000000 +0200
63462 +++ b/libcpp/files.c    2010-01-25 09:50:29.605686739 +0100
63463 @@ -488,7 +488,6 @@
63464               return file;
63465             }
63466  
63467 -         open_file_failed (pfile, file, angle_brackets);
63468           if (invalid_pch)
63469             {
63470               cpp_error (pfile, CPP_DL_ERROR,
63471 @@ -497,6 +496,7 @@
63472                 cpp_error (pfile, CPP_DL_ERROR,
63473                            "use -Winvalid-pch for more information");
63474             }
63475 +         open_file_failed (pfile, file, angle_brackets);
63476           break;
63477         }
63478  
63479 @@ -934,15 +934,28 @@
63480  
63481    errno = file->err_no;
63482    if (print_dep && CPP_OPTION (pfile, deps.missing_files) && errno == ENOENT)
63483 -    deps_add_dep (pfile->deps, file->name);
63484 +    {
63485 +      deps_add_dep (pfile->deps, file->name);
63486 +      /* If the preprocessor output (other than dependency information) is
63487 +         being used, we must also flag an error.  */
63488 +      if (CPP_OPTION (pfile, deps.need_preprocessor_output))
63489 +       cpp_errno (pfile, CPP_DL_FATAL, file->path);
63490 +    }
63491    else
63492      {
63493 -      /* If we are outputting dependencies but not for this file then
63494 -        don't error because we can still produce correct output.  */
63495 -      if (CPP_OPTION (pfile, deps.style) && ! print_dep)
63496 -       cpp_errno (pfile, CPP_DL_WARNING, file->path);
63497 +      /* If we are not outputting dependencies, or if we are and dependencies
63498 +         were requested for this file, or if preprocessor output is needed
63499 +         in addition to dependency information, this is an error.
63500 +
63501 +         Otherwise (outputting dependencies but not for this file, and not
63502 +         using the preprocessor output), we can still produce correct output
63503 +         so it's only a warning.  */
63504 +      if (CPP_OPTION (pfile, deps.style) == DEPS_NONE
63505 +          || print_dep
63506 +          || CPP_OPTION (pfile, deps.need_preprocessor_output))
63507 +       cpp_errno (pfile, CPP_DL_FATAL, file->path);
63508        else
63509 -       cpp_errno (pfile, CPP_DL_ERROR, file->path);
63510 +       cpp_errno (pfile, CPP_DL_WARNING, file->path);
63511      }
63512  }
63513  
63514 diff -Nur a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
63515 --- a/libcpp/include/cpplib.h   2009-04-10 01:23:07.000000000 +0200
63516 +++ b/libcpp/include/cpplib.h   2010-01-25 09:50:29.605686739 +0100
63517 @@ -302,22 +302,9 @@
63518    /* Nonzero means print names of header files (-H).  */
63519    unsigned char print_include_names;
63520  
63521 -  /* Nonzero means cpp_pedwarn causes a hard error.  */
63522 -  unsigned char pedantic_errors;
63523 -
63524 -  /* Nonzero means don't print warning messages.  */
63525 -  unsigned char inhibit_warnings;
63526 -
63527    /* Nonzero means complain about deprecated features.  */
63528    unsigned char warn_deprecated;
63529  
63530 -  /* Nonzero means don't suppress warnings from system headers.  */
63531 -  unsigned char warn_system_headers;
63532 -
63533 -  /* Nonzero means don't print error messages.  Has no option to
63534 -     select it, but can be set by a user of cpplib (e.g. fix-header).  */
63535 -  unsigned char inhibit_errors;
63536 -
63537    /* Nonzero means warn if slash-star appears in a comment.  */
63538    unsigned char warn_comments;
63539  
63540 @@ -353,9 +340,6 @@
63541       explicitly undefined.  */
63542    unsigned char warn_builtin_macro_redefined;
63543  
63544 -  /* Nonzero means turn warnings into errors.  */
63545 -  unsigned char warnings_are_errors;
63546 -
63547    /* Nonzero means we should look for header.gcc files that remap file
63548       names.  */
63549    unsigned char remap;
63550 @@ -432,6 +416,10 @@
63551  
63552      /* If true, no dependency is generated on the main file.  */
63553      bool ignore_main_file;
63554 +
63555 +    /* If true, intend to use the preprocessor output (e.g., for compilation)
63556 +       in addition to the dependency info.  */
63557 +    bool need_preprocessor_output;
63558    } deps;
63559  
63560    /* Target-specific features set by the front end or client.  */
63561 @@ -450,9 +438,6 @@
63562    /* Nonzero means __STDC__ should have the value 0 in system headers.  */
63563    unsigned char stdc_0_in_system_headers;
63564  
63565 -  /* True means error callback should be used for diagnostics.  */
63566 -  bool client_diagnostic;
63567 -
63568    /* True disables tokenization outside of preprocessing directives. */
63569    bool directives_only;
63570  };
63571 @@ -492,10 +477,11 @@
63572       be expanded.  */
63573    cpp_hashnode * (*macro_to_expand) (cpp_reader *, const cpp_token *);
63574  
63575 -  /* Called to emit a diagnostic if client_diagnostic option is true.
63576 -     This callback receives the translated message.  */
63577 -  void (*error) (cpp_reader *, int, const char *, va_list *)
63578 -       ATTRIBUTE_FPTR_PRINTF(3,0);
63579 +  /* Called to emit a diagnostic.  This callback receives the
63580 +     translated message.  */
63581 +  bool (*error) (cpp_reader *, int, source_location, unsigned int,
63582 +                const char *, va_list *)
63583 +       ATTRIBUTE_FPTR_PRINTF(5,0);
63584  
63585    /* Callbacks for when a macro is expanded, or tested (whether
63586       defined or not at the time) in #ifdef, #ifndef or "defined".  */
63587 @@ -697,19 +683,13 @@
63588  
63589  /* Call this to finish preprocessing.  If you requested dependency
63590     generation, pass an open stream to write the information to,
63591 -   otherwise NULL.  It is your responsibility to close the stream.
63592 -
63593 -   Returns cpp_errors (pfile).  */
63594 -extern int cpp_finish (cpp_reader *, FILE *deps_stream);
63595 +   otherwise NULL.  It is your responsibility to close the stream.  */
63596 +extern void cpp_finish (cpp_reader *, FILE *deps_stream);
63597  
63598  /* Call this to release the handle at the end of preprocessing.  Any
63599 -   use of the handle after this function returns is invalid.  Returns
63600 -   cpp_errors (pfile).  */
63601 +   use of the handle after this function returns is invalid.  */
63602  extern void cpp_destroy (cpp_reader *);
63603  
63604 -/* Error count.  */
63605 -extern unsigned int cpp_errors (cpp_reader *);
63606 -
63607  extern unsigned int cpp_token_len (const cpp_token *);
63608  extern unsigned char *cpp_token_as_text (cpp_reader *, const cpp_token *);
63609  extern unsigned char *cpp_spell_token (cpp_reader *, const cpp_token *,
63610 @@ -835,24 +815,23 @@
63611  /* An internal consistency check failed.  Prints "internal error: ",
63612     otherwise the same as CPP_DL_ERROR.  */
63613  #define CPP_DL_ICE             0x04
63614 -/* Extracts a diagnostic level from an int.  */
63615 -#define CPP_DL_EXTRACT(l)      (l & 0xf)
63616 -/* Nonzero if a diagnostic level is one of the warnings.  */
63617 -#define CPP_DL_WARNING_P(l)    (CPP_DL_EXTRACT (l) >= CPP_DL_WARNING \
63618 -                                && CPP_DL_EXTRACT (l) <= CPP_DL_PEDWARN)
63619 +/* An informative note following a warning.  */
63620 +#define CPP_DL_NOTE            0x05
63621 +/* A fatal error.  */
63622 +#define CPP_DL_FATAL           0x06
63623  
63624  /* Output a diagnostic of some kind.  */
63625 -extern void cpp_error (cpp_reader *, int, const char *msgid, ...)
63626 +extern bool cpp_error (cpp_reader *, int, const char *msgid, ...)
63627    ATTRIBUTE_PRINTF_3;
63628  
63629  /* Output a diagnostic with "MSGID: " preceding the
63630     error string of errno.  No location is printed.  */
63631 -extern void cpp_errno (cpp_reader *, int, const char *msgid);
63632 +extern bool cpp_errno (cpp_reader *, int, const char *msgid);
63633  
63634  /* Same as cpp_error, except additionally specifies a position as a
63635     (translation unit) physical line and physical column.  If the line is
63636     zero, then no location is printed.  */
63637 -extern void cpp_error_with_line (cpp_reader *, int, source_location, unsigned,
63638 +extern bool cpp_error_with_line (cpp_reader *, int, source_location, unsigned,
63639                                  const char *msgid, ...) ATTRIBUTE_PRINTF_5;
63640  
63641  /* In lex.c */
63642 diff -Nur a/libcpp/include/line-map.h b/libcpp/include/line-map.h
63643 --- a/libcpp/include/line-map.h 2009-04-10 01:23:07.000000000 +0200
63644 +++ b/libcpp/include/line-map.h 2010-01-25 09:50:29.605686739 +0100
63645 @@ -144,12 +144,6 @@
63646  extern const struct line_map *linemap_lookup
63647    (struct line_maps *, source_location);
63648  
63649 -/* Print the file names and line numbers of the #include commands
63650 -   which led to the map MAP, if any, to stderr.  Nothing is output if
63651 -   the most recently listed stack is the same as the current one.  */
63652 -extern void linemap_print_containing_files (struct line_maps *,
63653 -                                           const struct line_map *);
63654 -
63655  /* Converts a map and a source_location to source line.  */
63656  #define SOURCE_LINE(MAP, LOC) \
63657    ((((LOC) - (MAP)->start_location) >> (MAP)->column_bits) + (MAP)->to_line)
63658 diff -Nur a/libcpp/init.c b/libcpp/init.c
63659 --- a/libcpp/init.c     2009-04-10 01:23:07.000000000 +0200
63660 +++ b/libcpp/init.c     2010-01-25 09:50:29.605686739 +0100
63661 @@ -616,12 +616,11 @@
63662  }
63663  
63664  /* This is called at the end of preprocessing.  It pops the last
63665 -   buffer and writes dependency output, and returns the number of
63666 -   errors.
63667 +   buffer and writes dependency output.
63668  
63669     Maybe it should also reset state, such that you could call
63670     cpp_start_read with a new filename to restart processing.  */
63671 -int
63672 +void
63673  cpp_finish (cpp_reader *pfile, FILE *deps_stream)
63674  {
63675    /* Warn about unused macros before popping the final buffer.  */
63676 @@ -636,9 +635,8 @@
63677    while (pfile->buffer)
63678      _cpp_pop_buffer (pfile);
63679  
63680 -  /* Don't write the deps file if there are errors.  */
63681    if (CPP_OPTION (pfile, deps.style) != DEPS_NONE
63682 -      && deps_stream && pfile->errors == 0)
63683 +      && deps_stream)
63684      {
63685        deps_write (pfile->deps, deps_stream, 72);
63686  
63687 @@ -649,8 +647,6 @@
63688    /* Report on headers that could use multiple include guards.  */
63689    if (CPP_OPTION (pfile, print_include_names))
63690      _cpp_report_missing_guards (pfile);
63691 -
63692 -  return pfile->errors;
63693  }
63694  
63695  static void
63696 diff -Nur a/libcpp/internal.h b/libcpp/internal.h
63697 --- a/libcpp/internal.h 2009-04-10 01:23:07.000000000 +0200
63698 +++ b/libcpp/internal.h 2010-01-25 09:50:29.605686739 +0100
63699 @@ -388,9 +388,6 @@
63700    /* Nonzero prevents the lexer from re-using the token runs.  */
63701    unsigned int keep_tokens;
63702  
63703 -  /* Error counter for exit code.  */
63704 -  unsigned int errors;
63705 -
63706    /* Buffer to hold macro definition string.  */
63707    unsigned char *macro_buffer;
63708    unsigned int macro_buffer_len;
63709 diff -Nur a/libcpp/line-map.c b/libcpp/line-map.c
63710 --- a/libcpp/line-map.c 2009-04-10 01:23:07.000000000 +0200
63711 +++ b/libcpp/line-map.c 2010-01-25 09:50:29.605686739 +0100
63712 @@ -302,45 +302,6 @@
63713    return &set->maps[mn];
63714  }
63715  
63716 -/* Print the file names and line numbers of the #include commands
63717 -   which led to the map MAP, if any, to stderr.  Nothing is output if
63718 -   the most recently listed stack is the same as the current one.  */
63719 -
63720 -void
63721 -linemap_print_containing_files (struct line_maps *set,
63722 -                               const struct line_map *map)
63723 -{
63724 -  if (MAIN_FILE_P (map) || set->last_listed == map->included_from)
63725 -    return;
63726 -
63727 -  set->last_listed = map->included_from;
63728 -  map = INCLUDED_FROM (set, map);
63729 -
63730 -  fprintf (stderr,  _("In file included from %s:%u"),
63731 -          map->to_file, LAST_SOURCE_LINE (map));
63732 -
63733 -  while (! MAIN_FILE_P (map))
63734 -    {
63735 -      map = INCLUDED_FROM (set, map);
63736 -      /* Translators note: this message is used in conjunction
63737 -        with "In file included from %s:%ld" and some other
63738 -        tricks.  We want something like this:
63739 -
63740 -        | In file included from sys/select.h:123,
63741 -        |                  from sys/types.h:234,
63742 -        |                  from userfile.c:31:
63743 -        | bits/select.h:45: <error message here>
63744 -
63745 -        with all the "from"s lined up.
63746 -        The trailing comma is at the beginning of this message,
63747 -        and the trailing colon is not translated.  */
63748 -      fprintf (stderr, _(",\n                 from %s:%u"),
63749 -              map->to_file, LAST_SOURCE_LINE (map));
63750 -    }
63751 -
63752 -  fputs (":\n", stderr);
63753 -}
63754 -
63755  /* Print an include trace, for e.g. the -H option of the preprocessor.  */
63756  
63757  static void
63758 diff -Nur a/libcpp/macro.c b/libcpp/macro.c
63759 --- a/libcpp/macro.c    2009-04-10 01:23:07.000000000 +0200
63760 +++ b/libcpp/macro.c    2010-01-25 09:50:29.605686739 +0100
63761 @@ -1833,11 +1833,13 @@
63762  
63763        if (warn_of_redefinition (pfile, node, macro))
63764         {
63765 -         cpp_error_with_line (pfile, CPP_DL_PEDWARN, pfile->directive_line, 0,
63766 -                              "\"%s\" redefined", NODE_NAME (node));
63767 +         bool warned;
63768 +         warned = cpp_error_with_line (pfile, CPP_DL_PEDWARN,
63769 +                                       pfile->directive_line, 0,
63770 +                                       "\"%s\" redefined", NODE_NAME (node));
63771  
63772 -         if (node->type == NT_MACRO && !(node->flags & NODE_BUILTIN))
63773 -           cpp_error_with_line (pfile, CPP_DL_PEDWARN,
63774 +         if (warned && node->type == NT_MACRO && !(node->flags & NODE_BUILTIN))
63775 +           cpp_error_with_line (pfile, CPP_DL_NOTE,
63776                                  node->value.macro->line, 0,
63777                          "this is the location of the previous definition");
63778         }
63779 diff -Nur a/libcpp/makedepend.c b/libcpp/makedepend.c
63780 --- a/libcpp/makedepend.c       2005-06-29 04:34:39.000000000 +0200
63781 +++ b/libcpp/makedepend.c       2010-01-25 09:50:29.605686739 +0100
63782 @@ -1,206 +0,0 @@
63783 -/* Dependency generator utility.
63784 -   Copyright (C) 2004 Free Software Foundation, Inc.
63785 -   Contributed by Zack Weinberg, May 2004
63786 -
63787 -This program is free software; you can redistribute it and/or modify it
63788 -under the terms of the GNU General Public License as published by the
63789 -Free Software Foundation; either version 2, or (at your option) any
63790 -later version.
63791 -
63792 -This program is distributed in the hope that it will be useful,
63793 -but WITHOUT ANY WARRANTY; without even the implied warranty of
63794 -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
63795 -GNU General Public License for more details.
63796 -
63797 -You should have received a copy of the GNU General Public License
63798 -along with this program; if not, write to the Free Software
63799 -Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
63800 -
63801 - In other words, you are welcome to use, share and improve this program.
63802 - You are forbidden to forbid anyone else to use, share and improve
63803 - what you give them.   Help stamp out software-hoarding!  */
63804 -
63805 -#include "config.h"
63806 -#include "system.h"
63807 -#include "line-map.h"
63808 -#include "cpplib.h"
63809 -#include "getopt.h"
63810 -#include "mkdeps.h"
63811 -
63812 -const char *progname;
63813 -const char *vpath;
63814 -
63815 -static const char *output_file;
63816 -static bool had_errors;
63817 -
63818 -/* Option lists, to give to cpplib before each input file.  */
63819 -struct cmd_line_macro
63820 -{
63821 -  struct cmd_line_macro *next;
63822 -  bool is_undef;
63823 -  const char *macro;
63824 -};
63825 -
63826 -static struct cmd_line_macro *cmd_line_macros;
63827 -static cpp_dir *cmd_line_searchpath;
63828 -
63829 -static void
63830 -add_clm (const char *macro, bool is_undef)
63831 -{
63832 -  struct cmd_line_macro *clm = XNEW (struct cmd_line_macro);
63833 -  clm->next = cmd_line_macros;
63834 -  clm->is_undef = is_undef;
63835 -  clm->macro = macro;
63836 -  cmd_line_macros = clm;
63837 -}
63838 -
63839 -static void
63840 -add_dir (char *name, bool sysp)
63841 -{
63842 -  cpp_dir *dir = XNEW (cpp_dir);
63843 -  dir->next = cmd_line_searchpath;
63844 -  dir->name = name;
63845 -  dir->sysp = sysp;
63846 -  dir->construct = 0;
63847 -  dir->user_supplied_p = 1;
63848 -  cmd_line_searchpath = dir;
63849 -}
63850 -
63851 -/* Command line processing.  */
63852 -
63853 -static void ATTRIBUTE_NORETURN
63854 -usage (int errcode)
63855 -{
63856 -  fprintf (stderr,
63857 -"usage: %s [-vh] [-V vpath] [-Dname[=def]...] [-Uname] [-Idir...] [-o file] sources...\n",
63858 -          progname);
63859 -  exit (errcode);
63860 -}
63861 -
63862 -static int
63863 -parse_options (int argc, char **argv)
63864 -{
63865 -  static const struct option longopts[] = {
63866 -    { "--help", no_argument, 0, 'h' },
63867 -    { 0, 0, 0, 0 }
63868 -  };
63869 -
63870 -  for (;;)
63871 -    switch (getopt_long (argc, argv, "hD:U:I:J:o:V:", longopts, 0))
63872 -      {
63873 -      case 'h': usage (0);
63874 -      case 'D': add_clm (optarg, false); break;
63875 -      case 'U': add_clm (optarg, true);  break;
63876 -      case 'I': add_dir (optarg, false); break;
63877 -      case 'J': add_dir (optarg, true);  break;
63878 -      case 'o':
63879 -       if (output_file)
63880 -         {
63881 -           fprintf (stderr, "%s: too many output files\n", progname);
63882 -           usage (2);
63883 -         }
63884 -       output_file = optarg;
63885 -       break;
63886 -      case 'V':
63887 -       if (vpath)
63888 -         {
63889 -           fprintf (stderr, "%s: too many vpaths\n", progname);
63890 -           usage (2);
63891 -         }
63892 -       vpath = optarg;
63893 -       break;
63894 -      case '?':
63895 -       usage (2);  /* getopt has issued the error message.  */
63896 -
63897 -      case -1: /* end of options */
63898 -       if (optind == argc)
63899 -         {
63900 -           fprintf (stderr, "%s: no input files\n", progname);
63901 -           usage (2);
63902 -         }
63903 -       return optind;
63904 -
63905 -      default:
63906 -       abort ();
63907 -      }
63908 -}
63909 -
63910 -/* Set up cpplib from command line options.  */
63911 -static cpp_reader *
63912 -reader_init (struct line_maps *line_table)
63913 -{
63914 -  cpp_reader *reader;
63915 -  cpp_options *options;
63916 -
63917 -  linemap_init (line_table);
63918 -  reader = cpp_create_reader (CLK_GNUC89, 0, line_table);
63919 -
63920 -  /* Ignore warnings and errors (we don't have access to system
63921 -     headers).  Request dependency output.  */
63922 -  options = cpp_get_options (reader);
63923 -  options->inhibit_warnings = 1;
63924 -  options->inhibit_errors = 1;
63925 -  options->deps.style = DEPS_USER;
63926 -
63927 -  /* Further initialization.  */
63928 -  cpp_post_options (reader);
63929 -  cpp_init_iconv (reader);
63930 -  cpp_set_include_chains (reader, cmd_line_searchpath, cmd_line_searchpath,
63931 -                         false);
63932 -  if (vpath)
63933 -    {
63934 -      struct deps *deps = cpp_get_deps (reader);
63935 -      deps_add_vpath (deps, vpath);
63936 -    }
63937 -
63938 -  return reader;
63939 -}
63940 -
63941 -/* Process one input source file.  */
63942 -static void
63943 -process_file (const char *file)
63944 -{
63945 -  struct line_maps line_table;
63946 -  cpp_reader *reader = reader_init (&line_table);
63947 -
63948 -  if (!cpp_read_main_file (reader, file))
63949 -    had_errors = true;
63950 -  else
63951 -    {
63952 -      struct cmd_line_macro *clm;
63953 -
63954 -      cpp_init_builtins (reader, true);
63955 -      for (clm = cmd_line_macros; clm; clm = clm->next)
63956 -       (clm->is_undef ? cpp_undef : cpp_define) (reader, clm->macro);
63957 -
63958 -      cpp_scan_nooutput (reader);
63959 -      if (cpp_finish (reader, stdout))
63960 -       had_errors = true;
63961 -    }
63962 -  cpp_destroy (reader);
63963 -  linemap_free (&line_table);
63964 -}
63965 -
63966 -/* Master control.  */
63967 -
63968 -int
63969 -main(int argc, char **argv)
63970 -{
63971 -  int first_input, i;
63972 -
63973 -  progname = argv[0];
63974 -  xmalloc_set_program_name (progname);
63975 -
63976 -  first_input = parse_options (argc, argv);
63977 -  if (output_file)
63978 -    if (!freopen (output_file, "w", stdout))
63979 -      {
63980 -       perror (output_file);
63981 -       return 1;
63982 -      }
63983 -
63984 -  for (i = first_input; i < argc; i++)
63985 -    process_file (argv[i]);
63986 -
63987 -  return had_errors;
63988 -}
63989 diff -Nur a/libcpp/Makefile.in b/libcpp/Makefile.in
63990 --- a/libcpp/Makefile.in        2009-07-22 09:43:59.000000000 +0200
63991 +++ b/libcpp/Makefile.in        2010-01-25 09:50:29.605686739 +0100
63992 @@ -72,13 +72,12 @@
63993  libcpp_a_OBJS = charset.o directives.o directives-only.o errors.o \
63994         expr.o files.o identifiers.o init.o lex.o line-map.o macro.o \
63995         mkdeps.o pch.o symtab.o traditional.o
63996 -makedepend_OBJS = makedepend.o
63997  
63998  libcpp_a_SOURCES = charset.c directives.c directives-only.c errors.c \
63999         expr.c files.c identifiers.c init.c lex.c line-map.c macro.c \
64000         mkdeps.c pch.c symtab.c traditional.c
64001  
64002 -all: libcpp.a makedepend$(EXEEXT) $(USED_CATALOGS)
64003 +all: libcpp.a $(USED_CATALOGS)
64004  
64005  .SUFFIXES:
64006  .SUFFIXES: .c .gmo .o .obj .po .pox
64007 @@ -88,12 +87,6 @@
64008         $(AR) $(ARFLAGS) libcpp.a $(libcpp_a_OBJS)
64009         $(RANLIB) libcpp.a
64010  
64011 -makedepend$(EXEEXT): $(makedepend_OBJS) libcpp.a ../libiberty/libiberty.a
64012 -       @rm -f makedepend$(EXEEXT)
64013 -       $(CC) $(CFLAGS) $(LDFLAGS) -o makedepend$(EXEEXT) \
64014 -         $(makedepend_OBJS) libcpp.a ../libiberty/libiberty.a \
64015 -         $(LIBINTL) $(LIBICONV)
64016 -
64017  # Rules to rebuild the configuration
64018  
64019  Makefile: $(srcdir)/Makefile.in config.status
64020 @@ -165,7 +158,7 @@
64021         -rm -f *.o
64022  
64023  clean: mostlyclean
64024 -       -rm -rf makedepend$(EXEEXT) libcpp.a $(srcdir)/autom4te.cache
64025 +       -rm -rf libcpp.a $(srcdir)/autom4te.cache
64026  
64027  distclean: clean
64028         -rm -f config.h stamp-h1 config.status config.cache config.log \
64029 @@ -247,7 +240,7 @@
64030         sed 's:$(srcdir)/::g' <po/$(PACKAGE).pot.tmp >po/$(PACKAGE).pot
64031         rm po/$(PACKAGE).pot.tmp
64032  
64033 -TAGS_SOURCES = $(libcpp_a_SOURCES) makedepend.c internal.h ucnid.h \
64034 +TAGS_SOURCES = $(libcpp_a_SOURCES) internal.h ucnid.h \
64035      include/line-map.h include/symtab.h include/cpp-id-data.h \
64036      include/cpplib.h include/mkdeps.h system.h
64037  
64038 @@ -259,7 +252,7 @@
64039  .NOEXPORT:
64040  
64041  # Dependencies
64042 --include $(patsubst %.o, $(DEPDIR)/%.Po, $(libcpp_a_OBJS) $(makedepend_OBJS))
64043 +-include $(patsubst %.o, $(DEPDIR)/%.Po, $(libcpp_a_OBJS))
64044  
64045  # Dependencies on generated headers have to be explicit.
64046  init.o: localedir.h
64047 diff -Nur a/libgcc/config/arm/t-divmod-ef b/libgcc/config/arm/t-divmod-ef
64048 --- a/libgcc/config/arm/t-divmod-ef     1970-01-01 01:00:00.000000000 +0100
64049 +++ b/libgcc/config/arm/t-divmod-ef     2010-01-25 09:50:29.605686739 +0100
64050 @@ -0,0 +1,4 @@
64051 +# On ARM, specifying -fnon-call-exceptions will needlessly pull in
64052 +# the unwinder in simple programs which use 64-bit division.  Omitting
64053 +# the option is safe.
64054 +LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
64055 diff -Nur a/libgcc/config/mips/t-crtfm b/libgcc/config/mips/t-crtfm
64056 --- a/libgcc/config/mips/t-crtfm        1970-01-01 01:00:00.000000000 +0100
64057 +++ b/libgcc/config/mips/t-crtfm        2010-01-25 09:50:29.605686739 +0100
64058 @@ -0,0 +1,3 @@
64059 +crtfastmath.o: $(gcc_srcdir)/config/mips/crtfastmath.c
64060 +       $(gcc_compile) -c $(gcc_srcdir)/config/mips/crtfastmath.c
64061 +
64062 diff -Nur a/libgcc/config/rs6000/t-ppccomm b/libgcc/config/rs6000/t-ppccomm
64063 --- a/libgcc/config/rs6000/t-ppccomm    2008-06-26 16:15:49.000000000 +0200
64064 +++ b/libgcc/config/rs6000/t-ppccomm    2010-01-25 09:50:29.605686739 +0100
64065 @@ -101,3 +101,63 @@
64066  
64067  ncrtn$(objext): ncrtn.S
64068         $(crt_compile) -c ncrtn.S
64069 +
64070 +crtsavres$(objext): crtsavres.S
64071 +       $(crt_compile) -c crtsavres.S
64072 +
64073 +crtsavfpr$(objext): crtsavfpr.S
64074 +       $(crt_compile) -c crtsavfpr.S
64075 +
64076 +crtresfpr$(objext): crtresfpr.S
64077 +       $(crt_compile) -c crtresfpr.S
64078 +
64079 +crtsavgpr$(objext): crtsavgpr.S
64080 +       $(crt_compile) -c crtsavgpr.S
64081 +
64082 +crtresgpr$(objext): crtresgpr.S
64083 +       $(crt_compile) -c crtresgpr.S
64084 +
64085 +crtresxfpr$(objext): crtresxfpr.S
64086 +       $(crt_compile) -c crtresxfpr.S
64087 +
64088 +crtresxgpr$(objext): crtresxgpr.S
64089 +       $(crt_compile) -c crtresxgpr.S
64090 +
64091 +e500crtres32gpr$(objext): e500crtres32gpr.S
64092 +       $(crt_compile) -c e500crtres32gpr.S
64093 +
64094 +e500crtres64gpr$(objext): e500crtres64gpr.S
64095 +       $(crt_compile) -c e500crtres64gpr.S
64096 +
64097 +e500crtres64gprctr$(objext): e500crtres64gprctr.S
64098 +       $(crt_compile) -c e500crtres64gprctr.S
64099 +
64100 +e500crtrest32gpr$(objext): e500crtrest32gpr.S
64101 +       $(crt_compile) -c e500crtrest32gpr.S
64102 +
64103 +e500crtrest64gpr$(objext): e500crtrest64gpr.S
64104 +       $(crt_compile) -c e500crtrest64gpr.S
64105 +
64106 +e500crtresx32gpr$(objext): e500crtresx32gpr.S
64107 +       $(crt_compile) -c e500crtresx32gpr.S
64108 +
64109 +e500crtresx64gpr$(objext): e500crtresx64gpr.S
64110 +       $(crt_compile) -c e500crtresx64gpr.S
64111 +
64112 +e500crtsav32gpr$(objext): e500crtsav32gpr.S
64113 +       $(crt_compile) -c e500crtsav32gpr.S
64114 +
64115 +e500crtsav64gpr$(objext): e500crtsav64gpr.S
64116 +       $(crt_compile) -c e500crtsav64gpr.S
64117 +
64118 +e500crtsav64gprctr$(objext): e500crtsav64gprctr.S
64119 +       $(crt_compile) -c e500crtsav64gprctr.S
64120 +
64121 +e500crtsavg32gpr$(objext): e500crtsavg32gpr.S
64122 +       $(crt_compile) -c e500crtsavg32gpr.S
64123 +
64124 +e500crtsavg64gpr$(objext): e500crtsavg64gpr.S
64125 +       $(crt_compile) -c e500crtsavg64gpr.S
64126 +
64127 +e500crtsavg64gprctr$(objext): e500crtsavg64gprctr.S
64128 +       $(crt_compile) -c e500crtsavg64gprctr.S
64129 diff -Nur a/libgcc/config.host b/libgcc/config.host
64130 --- a/libgcc/config.host        2009-04-17 13:58:41.000000000 +0200
64131 +++ b/libgcc/config.host        2010-01-25 09:50:29.605686739 +0100
64132 @@ -203,12 +203,15 @@
64133  arm*-*-netbsd*)
64134         ;;
64135  arm*-*-linux*)                 # ARM GNU/Linux with ELF
64136 +       tmake_file="${tmake_file} arm/t-divmod-ef"
64137         ;;
64138  arm*-*-uclinux*)               # ARM ucLinux
64139 +       tmake_file="${tmake_file} arm/t-divmod-ef"
64140         ;;
64141  arm*-*-ecos-elf)
64142         ;;
64143  arm*-*-eabi* | arm*-*-symbianelf* )
64144 +       tmake_file="${tmake_file} arm/t-divmod-ef"
64145         ;;
64146  arm*-*-rtems*)
64147         ;;
64148 @@ -394,8 +397,12 @@
64149  mips*-*-netbsd*)                       # NetBSD/mips, either endian.
64150         ;;
64151  mips64*-*-linux*)
64152 +       extra_parts="$extra_parts crtfastmath.o"
64153 +       tmake_file="{$tmake_file} mips/t-crtfm"
64154         ;;
64155  mips*-*-linux*)                                # Linux MIPS, either endian.
64156 +       extra_parts="$extra_parts crtfastmath.o"
64157 +       tmake_file="{$tmake_file} mips/t-crtfm"
64158         ;;
64159  mips*-*-openbsd*)
64160         ;;
64161 @@ -419,6 +426,10 @@
64162          ;;
64163  mips64orion-*-elf* | mips64orionel-*-elf*)
64164         ;;
64165 +mips64octeon-wrs-elf* | mips64octeonel-wrs-elf*)
64166 +       ;;
64167 +mips64octeon-montavista-elf*)
64168 +       ;;
64169  mips*-*-rtems*)
64170         ;;
64171  mips-wrs-vxworks)
64172 diff -Nur a/libgcc/Makefile.in b/libgcc/Makefile.in
64173 --- a/libgcc/Makefile.in        2009-04-10 01:23:07.000000000 +0200
64174 +++ b/libgcc/Makefile.in        2010-01-25 09:50:29.605686739 +0100
64175 @@ -389,18 +389,24 @@
64176  endif
64177  endif
64178  
64179 +ifeq ($(LIB2_DIVMOD_EXCEPTION_FLAGS),)
64180 +# Provide default flags for compiling divmod functions, if they haven't been
64181 +# set already by a target-specific Makefile fragment.
64182 +LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions -fnon-call-exceptions
64183 +endif
64184 +
64185  # Build LIB2_DIVMOD_FUNCS.
64186  lib2-divmod-o = $(patsubst %,%$(objext),$(LIB2_DIVMOD_FUNCS))
64187  $(lib2-divmod-o): %$(objext): $(gcc_srcdir)/libgcc2.c
64188         $(gcc_compile) -DL$* -c $(gcc_srcdir)/libgcc2.c \
64189 -         -fexceptions -fnon-call-exceptions $(vis_hide)
64190 +         $(LIB2_DIVMOD_EXCEPTION_FLAGS) $(vis_hide)
64191  libgcc-objects += $(lib2-divmod-o)
64192  
64193  ifeq ($(enable_shared),yes)
64194  lib2-divmod-s-o = $(patsubst %,%_s$(objext),$(LIB2_DIVMOD_FUNCS))
64195  $(lib2-divmod-s-o): %_s$(objext): $(gcc_srcdir)/libgcc2.c
64196         $(gcc_s_compile) -DL$* -c $(gcc_srcdir)/libgcc2.c \
64197 -         -fexceptions -fnon-call-exceptions
64198 +         $(LIB2_DIVMOD_EXCEPTION_FLAGS)
64199  libgcc-s-objects += $(lib2-divmod-s-o)
64200  endif
64201  
64202 diff -Nur a/libgcc/shared-object.mk b/libgcc/shared-object.mk
64203 --- a/libgcc/shared-object.mk   2008-07-03 21:22:00.000000000 +0200
64204 +++ b/libgcc/shared-object.mk   2010-01-25 09:50:29.605686739 +0100
64205 @@ -8,11 +8,13 @@
64206  
64207  ifeq ($(suffix $o),.c)
64208  
64209 +c_flags-$(base)$(objext) := $(c_flags)
64210  $(base)$(objext): $o
64211 -       $(gcc_compile) $(c_flags) -c $< $(vis_hide)
64212 +       $(gcc_compile) $(c_flags-$@) -c $< $(vis_hide)
64213  
64214 +c_flags-$(base)_s$(objext) := $(c_flags)
64215  $(base)_s$(objext): $o
64216 -       $(gcc_s_compile) $(c_flags) -c $<
64217 +       $(gcc_s_compile) $(c_flags-$@) -c $<
64218  
64219  else
64220  
64221 diff -Nur a/libgcc/static-object.mk b/libgcc/static-object.mk
64222 --- a/libgcc/static-object.mk   2007-01-04 05:22:37.000000000 +0100
64223 +++ b/libgcc/static-object.mk   2010-01-25 09:50:29.605686739 +0100
64224 @@ -8,8 +8,9 @@
64225  
64226  ifeq ($(suffix $o),.c)
64227  
64228 +c_flags-$(base)$(objext) := $(c_flags)
64229  $(base)$(objext): $o
64230 -       $(gcc_compile) $(c_flags) -c $< $(vis_hide)
64231 +       $(gcc_compile) $(c_flags-$@) -c $< $(vis_hide)
64232  
64233  else
64234  
64235 diff -Nur a/libgomp/configure b/libgomp/configure
64236 --- a/libgomp/configure 2009-07-22 09:43:59.000000000 +0200
64237 +++ b/libgomp/configure 2010-01-25 09:50:29.605686739 +0100
64238 @@ -457,7 +457,7 @@
64239  # include <unistd.h>
64240  #endif"
64241  
64242 -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 GENINSRC_TRUE GENINSRC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar multi_basedir toolexecdir toolexeclibdir CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CFLAGS AR ac_ct_AR RANLIB ac_ct_RANLIB PERL BUILD_INFO_TRUE BUILD_INFO_FALSE LIBTOOL SED EGREP FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM LN_S OBJDUMP ac_ct_OBJDUMP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 CPP CPPFLAGS enable_shared enable_static MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT FC FCFLAGS LDFLAGS ac_ct_FC libtool_VERSION SECTION_LDFLAGS OPT_LDFLAGS LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE LIBGOMP_BUILD_VERSIONED_SHLIB_FALSE config_path XCFLAGS XLDFLAGS link_gomp USE_FORTRAN_TRUE USE_FORTRAN_FALSE OMP_LOCK_SIZE OMP_LOCK_ALIGN OMP_NEST_LOCK_SIZE OMP_NEST_LOCK_ALIGN OMP_LOCK_KIND OMP_NEST_LOCK_KIND OMP_LOCK_25_SIZE OMP_LOCK_25_ALIGN OMP_NEST_LOCK_25_SIZE OMP_NEST_LOCK_25_ALIGN OMP_LOCK_25_KIND OMP_NEST_LOCK_25_KIND LIBOBJS LTLIBOBJS'
64243 +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 GENINSRC_TRUE GENINSRC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar multi_basedir toolexecdir toolexeclibdir datarootdir docdir pdfdir htmldir CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CFLAGS AR ac_ct_AR RANLIB ac_ct_RANLIB PERL BUILD_INFO_TRUE BUILD_INFO_FALSE LIBTOOL SED EGREP FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM LN_S OBJDUMP ac_ct_OBJDUMP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 CPP CPPFLAGS enable_shared enable_static MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT FC FCFLAGS LDFLAGS ac_ct_FC libtool_VERSION SECTION_LDFLAGS OPT_LDFLAGS LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE LIBGOMP_BUILD_VERSIONED_SHLIB_FALSE config_path XCFLAGS XLDFLAGS link_gomp USE_FORTRAN_TRUE USE_FORTRAN_FALSE OMP_LOCK_SIZE OMP_LOCK_ALIGN OMP_NEST_LOCK_SIZE OMP_NEST_LOCK_ALIGN OMP_LOCK_KIND OMP_NEST_LOCK_KIND OMP_LOCK_25_SIZE OMP_LOCK_25_ALIGN OMP_NEST_LOCK_25_SIZE OMP_NEST_LOCK_25_ALIGN OMP_LOCK_25_KIND OMP_NEST_LOCK_25_KIND LIBOBJS LTLIBOBJS'
64244  ac_subst_files=''
64245  ac_pwd=`pwd`
64246  
64247 @@ -1029,6 +1029,10 @@
64248  Optional Packages:
64249    --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
64250    --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
64251 +  --with-datarootdir=DIR  Use DIR as the data root [PREFIX/share]
64252 +  --with-docdir=DIR       Install documentation in DIR [DATAROOTDIR]
64253 +  --with-pdfdir           install pdf in this directory.
64254 +  --with-htmldir=DIR      html documentation in in DIR [DOCDIR]
64255    --with-pic              try to use only PIC/non-PIC objects [default=use
64256                            both]
64257    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
64258 @@ -2201,6 +2205,46 @@
64259  
64260  
64261  
64262 +
64263 +# Check whether --with-datarootdir or --without-datarootdir was given.
64264 +if test "${with_datarootdir+set}" = set; then
64265 +  withval="$with_datarootdir"
64266 +  datarootdir="\${prefix}/$with_datarootdir"
64267 +else
64268 +  datarootdir='$(prefix)/share'
64269 +fi;
64270 +
64271 +
64272 +
64273 +# Check whether --with-docdir or --without-docdir was given.
64274 +if test "${with_docdir+set}" = set; then
64275 +  withval="$with_docdir"
64276 +  docdir="\${prefix}/$with_docdir"
64277 +else
64278 +  docdir='$(datarootdir)'
64279 +fi;
64280 +
64281 +
64282 +
64283 +# Check whether --with-pdfdir or --without-pdfdir was given.
64284 +if test "${with_pdfdir+set}" = set; then
64285 +  withval="$with_pdfdir"
64286 +  pdfdir="\${prefix}/${withval}"
64287 +else
64288 +  pdfdir="\${docdir}"
64289 +fi;
64290 +
64291 +
64292 +
64293 +# Check whether --with-htmldir or --without-htmldir was given.
64294 +if test "${with_htmldir+set}" = set; then
64295 +  withval="$with_htmldir"
64296 +  htmldir="\${prefix}/$with_htmldir"
64297 +else
64298 +  htmldir='$(docdir)'
64299 +fi;
64300 +
64301 +
64302  # Check the compiler.
64303  # The same as in boehm-gc and libstdc++. Have to borrow it from there.
64304  # We must force CC to /not/ be precious variables; otherwise
64305 @@ -4156,13 +4200,13 @@
64306  else
64307    lt_cv_nm_interface="BSD nm"
64308    echo "int some_variable = 0;" > conftest.$ac_ext
64309 -  (eval echo "\"\$as_me:4159: $ac_compile\"" >&5)
64310 +  (eval echo "\"\$as_me:4203: $ac_compile\"" >&5)
64311    (eval "$ac_compile" 2>conftest.err)
64312    cat conftest.err >&5
64313 -  (eval echo "\"\$as_me:4162: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
64314 +  (eval echo "\"\$as_me:4206: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
64315    (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
64316    cat conftest.err >&5
64317 -  (eval echo "\"\$as_me:4165: output\"" >&5)
64318 +  (eval echo "\"\$as_me:4209: output\"" >&5)
64319    cat conftest.out >&5
64320    if $GREP 'External.*some_variable' conftest.out > /dev/null; then
64321      lt_cv_nm_interface="MS dumpbin"
64322 @@ -5320,7 +5364,7 @@
64323    ;;
64324  *-*-irix6*)
64325    # Find out which ABI we are using.
64326 -  echo '#line 5323 "configure"' > conftest.$ac_ext
64327 +  echo '#line 5367 "configure"' > conftest.$ac_ext
64328    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
64329    (eval $ac_compile) 2>&5
64330    ac_status=$?
64331 @@ -7101,11 +7145,11 @@
64332     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
64333     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
64334     -e 's:$: $lt_compiler_flag:'`
64335 -   (eval echo "\"\$as_me:7104: $lt_compile\"" >&5)
64336 +   (eval echo "\"\$as_me:7148: $lt_compile\"" >&5)
64337     (eval "$lt_compile" 2>conftest.err)
64338     ac_status=$?
64339     cat conftest.err >&5
64340 -   echo "$as_me:7108: \$? = $ac_status" >&5
64341 +   echo "$as_me:7152: \$? = $ac_status" >&5
64342     if (exit $ac_status) && test -s "$ac_outfile"; then
64343       # The compiler can only warn and ignore the option if not recognized
64344       # So say no if there are warnings other than the usual output.
64345 @@ -7440,11 +7484,11 @@
64346     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
64347     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
64348     -e 's:$: $lt_compiler_flag:'`
64349 -   (eval echo "\"\$as_me:7443: $lt_compile\"" >&5)
64350 +   (eval echo "\"\$as_me:7487: $lt_compile\"" >&5)
64351     (eval "$lt_compile" 2>conftest.err)
64352     ac_status=$?
64353     cat conftest.err >&5
64354 -   echo "$as_me:7447: \$? = $ac_status" >&5
64355 +   echo "$as_me:7491: \$? = $ac_status" >&5
64356     if (exit $ac_status) && test -s "$ac_outfile"; then
64357       # The compiler can only warn and ignore the option if not recognized
64358       # So say no if there are warnings other than the usual output.
64359 @@ -7545,11 +7589,11 @@
64360     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
64361     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
64362     -e 's:$: $lt_compiler_flag:'`
64363 -   (eval echo "\"\$as_me:7548: $lt_compile\"" >&5)
64364 +   (eval echo "\"\$as_me:7592: $lt_compile\"" >&5)
64365     (eval "$lt_compile" 2>out/conftest.err)
64366     ac_status=$?
64367     cat out/conftest.err >&5
64368 -   echo "$as_me:7552: \$? = $ac_status" >&5
64369 +   echo "$as_me:7596: \$? = $ac_status" >&5
64370     if (exit $ac_status) && test -s out/conftest2.$ac_objext
64371     then
64372       # The compiler can only warn and ignore the option if not recognized
64373 @@ -7600,11 +7644,11 @@
64374     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
64375     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
64376     -e 's:$: $lt_compiler_flag:'`
64377 -   (eval echo "\"\$as_me:7603: $lt_compile\"" >&5)
64378 +   (eval echo "\"\$as_me:7647: $lt_compile\"" >&5)
64379     (eval "$lt_compile" 2>out/conftest.err)
64380     ac_status=$?
64381     cat out/conftest.err >&5
64382 -   echo "$as_me:7607: \$? = $ac_status" >&5
64383 +   echo "$as_me:7651: \$? = $ac_status" >&5
64384     if (exit $ac_status) && test -s out/conftest2.$ac_objext
64385     then
64386       # The compiler can only warn and ignore the option if not recognized
64387 @@ -10412,7 +10456,7 @@
64388    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
64389    lt_status=$lt_dlunknown
64390    cat > conftest.$ac_ext <<_LT_EOF
64391 -#line 10415 "configure"
64392 +#line 10459 "configure"
64393  #include "confdefs.h"
64394  
64395  #if HAVE_DLFCN_H
64396 @@ -10508,7 +10552,7 @@
64397    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
64398    lt_status=$lt_dlunknown
64399    cat > conftest.$ac_ext <<_LT_EOF
64400 -#line 10511 "configure"
64401 +#line 10555 "configure"
64402  #include "confdefs.h"
64403  
64404  #if HAVE_DLFCN_H
64405 @@ -10859,7 +10903,7 @@
64406  
64407  
64408  # Provide some information about the compiler.
64409 -echo "$as_me:10862:" \
64410 +echo "$as_me:10906:" \
64411       "checking for Fortran compiler version" >&5
64412  ac_compiler=`set X $ac_compile; echo $2`
64413  { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
64414 @@ -11095,7 +11139,7 @@
64415  
64416  
64417  # Provide some information about the compiler.
64418 -echo "$as_me:11098:" \
64419 +echo "$as_me:11142:" \
64420       "checking for Fortran compiler version" >&5
64421  ac_compiler=`set X $ac_compile; echo $2`
64422  { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
64423 @@ -11835,11 +11879,11 @@
64424     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
64425     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
64426     -e 's:$: $lt_compiler_flag:'`
64427 -   (eval echo "\"\$as_me:11838: $lt_compile\"" >&5)
64428 +   (eval echo "\"\$as_me:11882: $lt_compile\"" >&5)
64429     (eval "$lt_compile" 2>conftest.err)
64430     ac_status=$?
64431     cat conftest.err >&5
64432 -   echo "$as_me:11842: \$? = $ac_status" >&5
64433 +   echo "$as_me:11886: \$? = $ac_status" >&5
64434     if (exit $ac_status) && test -s "$ac_outfile"; then
64435       # The compiler can only warn and ignore the option if not recognized
64436       # So say no if there are warnings other than the usual output.
64437 @@ -11934,11 +11978,11 @@
64438     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
64439     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
64440     -e 's:$: $lt_compiler_flag:'`
64441 -   (eval echo "\"\$as_me:11937: $lt_compile\"" >&5)
64442 +   (eval echo "\"\$as_me:11981: $lt_compile\"" >&5)
64443     (eval "$lt_compile" 2>out/conftest.err)
64444     ac_status=$?
64445     cat out/conftest.err >&5
64446 -   echo "$as_me:11941: \$? = $ac_status" >&5
64447 +   echo "$as_me:11985: \$? = $ac_status" >&5
64448     if (exit $ac_status) && test -s out/conftest2.$ac_objext
64449     then
64450       # The compiler can only warn and ignore the option if not recognized
64451 @@ -11986,11 +12030,11 @@
64452     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
64453     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
64454     -e 's:$: $lt_compiler_flag:'`
64455 -   (eval echo "\"\$as_me:11989: $lt_compile\"" >&5)
64456 +   (eval echo "\"\$as_me:12033: $lt_compile\"" >&5)
64457     (eval "$lt_compile" 2>out/conftest.err)
64458     ac_status=$?
64459     cat out/conftest.err >&5
64460 -   echo "$as_me:11993: \$? = $ac_status" >&5
64461 +   echo "$as_me:12037: \$? = $ac_status" >&5
64462     if (exit $ac_status) && test -s out/conftest2.$ac_objext
64463     then
64464       # The compiler can only warn and ignore the option if not recognized
64465 @@ -15133,7 +15177,8 @@
64466  cat confdefs.h >>conftest.$ac_ext
64467  cat >>conftest.$ac_ext <<_ACEOF
64468  /* end confdefs.h.  */
64469 -$ac_includes_default
64470 +/* no standard headers */
64471 +
64472  int
64473  main ()
64474  {
64475 @@ -15197,7 +15242,8 @@
64476  cat confdefs.h >>conftest.$ac_ext
64477  cat >>conftest.$ac_ext <<_ACEOF
64478  /* end confdefs.h.  */
64479 -$ac_includes_default
64480 +/* no standard headers */
64481 +
64482  int
64483  main ()
64484  {
64485 @@ -15238,7 +15284,8 @@
64486  cat confdefs.h >>conftest.$ac_ext
64487  cat >>conftest.$ac_ext <<_ACEOF
64488  /* end confdefs.h.  */
64489 -$ac_includes_default
64490 +/* no standard headers */
64491 +
64492  int
64493  main ()
64494  {
64495 @@ -15295,7 +15342,8 @@
64496  cat confdefs.h >>conftest.$ac_ext
64497  cat >>conftest.$ac_ext <<_ACEOF
64498  /* end confdefs.h.  */
64499 -$ac_includes_default
64500 +/* no standard headers */
64501 +
64502  int
64503  main ()
64504  {
64505 @@ -15336,7 +15384,8 @@
64506  cat confdefs.h >>conftest.$ac_ext
64507  cat >>conftest.$ac_ext <<_ACEOF
64508  /* end confdefs.h.  */
64509 -$ac_includes_default
64510 +/* no standard headers */
64511 +
64512  int
64513  main ()
64514  {
64515 @@ -15401,7 +15450,8 @@
64516  cat confdefs.h >>conftest.$ac_ext
64517  cat >>conftest.$ac_ext <<_ACEOF
64518  /* end confdefs.h.  */
64519 -$ac_includes_default
64520 +/* no standard headers */
64521 +
64522  int
64523  main ()
64524  {
64525 @@ -15469,7 +15519,8 @@
64526  cat confdefs.h >>conftest.$ac_ext
64527  cat >>conftest.$ac_ext <<_ACEOF
64528  /* end confdefs.h.  */
64529 -$ac_includes_default
64530 +/* no standard headers */
64531 +
64532  long longval () { return (long) (sizeof (void *)); }
64533  unsigned long ulongval () { return (long) (sizeof (void *)); }
64534  #include <stdio.h>
64535 @@ -15557,7 +15608,8 @@
64536  cat confdefs.h >>conftest.$ac_ext
64537  cat >>conftest.$ac_ext <<_ACEOF
64538  /* end confdefs.h.  */
64539 -$ac_includes_default
64540 +/* no standard headers */
64541 +
64542  int
64543  main ()
64544  {
64545 @@ -15621,7 +15673,8 @@
64546  cat confdefs.h >>conftest.$ac_ext
64547  cat >>conftest.$ac_ext <<_ACEOF
64548  /* end confdefs.h.  */
64549 -$ac_includes_default
64550 +/* no standard headers */
64551 +
64552  int
64553  main ()
64554  {
64555 @@ -15662,7 +15715,8 @@
64556  cat confdefs.h >>conftest.$ac_ext
64557  cat >>conftest.$ac_ext <<_ACEOF
64558  /* end confdefs.h.  */
64559 -$ac_includes_default
64560 +/* no standard headers */
64561 +
64562  int
64563  main ()
64564  {
64565 @@ -15719,7 +15773,8 @@
64566  cat confdefs.h >>conftest.$ac_ext
64567  cat >>conftest.$ac_ext <<_ACEOF
64568  /* end confdefs.h.  */
64569 -$ac_includes_default
64570 +/* no standard headers */
64571 +
64572  int
64573  main ()
64574  {
64575 @@ -15760,7 +15815,8 @@
64576  cat confdefs.h >>conftest.$ac_ext
64577  cat >>conftest.$ac_ext <<_ACEOF
64578  /* end confdefs.h.  */
64579 -$ac_includes_default
64580 +/* no standard headers */
64581 +
64582  int
64583  main ()
64584  {
64585 @@ -15825,7 +15881,8 @@
64586  cat confdefs.h >>conftest.$ac_ext
64587  cat >>conftest.$ac_ext <<_ACEOF
64588  /* end confdefs.h.  */
64589 -$ac_includes_default
64590 +/* no standard headers */
64591 +
64592  int
64593  main ()
64594  {
64595 @@ -15893,7 +15950,8 @@
64596  cat confdefs.h >>conftest.$ac_ext
64597  cat >>conftest.$ac_ext <<_ACEOF
64598  /* end confdefs.h.  */
64599 -$ac_includes_default
64600 +/* no standard headers */
64601 +
64602  long longval () { return (long) (sizeof (long)); }
64603  unsigned long ulongval () { return (long) (sizeof (long)); }
64604  #include <stdio.h>
64605 @@ -15981,7 +16039,8 @@
64606  cat confdefs.h >>conftest.$ac_ext
64607  cat >>conftest.$ac_ext <<_ACEOF
64608  /* end confdefs.h.  */
64609 -$ac_includes_default
64610 +/* no standard headers */
64611 +
64612  int
64613  main ()
64614  {
64615 @@ -16045,7 +16104,8 @@
64616  cat confdefs.h >>conftest.$ac_ext
64617  cat >>conftest.$ac_ext <<_ACEOF
64618  /* end confdefs.h.  */
64619 -$ac_includes_default
64620 +/* no standard headers */
64621 +
64622  int
64623  main ()
64624  {
64625 @@ -16086,7 +16146,8 @@
64626  cat confdefs.h >>conftest.$ac_ext
64627  cat >>conftest.$ac_ext <<_ACEOF
64628  /* end confdefs.h.  */
64629 -$ac_includes_default
64630 +/* no standard headers */
64631 +
64632  int
64633  main ()
64634  {
64635 @@ -16143,7 +16204,8 @@
64636  cat confdefs.h >>conftest.$ac_ext
64637  cat >>conftest.$ac_ext <<_ACEOF
64638  /* end confdefs.h.  */
64639 -$ac_includes_default
64640 +/* no standard headers */
64641 +
64642  int
64643  main ()
64644  {
64645 @@ -16184,7 +16246,8 @@
64646  cat confdefs.h >>conftest.$ac_ext
64647  cat >>conftest.$ac_ext <<_ACEOF
64648  /* end confdefs.h.  */
64649 -$ac_includes_default
64650 +/* no standard headers */
64651 +
64652  int
64653  main ()
64654  {
64655 @@ -16249,7 +16312,8 @@
64656  cat confdefs.h >>conftest.$ac_ext
64657  cat >>conftest.$ac_ext <<_ACEOF
64658  /* end confdefs.h.  */
64659 -$ac_includes_default
64660 +/* no standard headers */
64661 +
64662  int
64663  main ()
64664  {
64665 @@ -16317,7 +16381,8 @@
64666  cat confdefs.h >>conftest.$ac_ext
64667  cat >>conftest.$ac_ext <<_ACEOF
64668  /* end confdefs.h.  */
64669 -$ac_includes_default
64670 +/* no standard headers */
64671 +
64672  long longval () { return (long) (sizeof (int)); }
64673  unsigned long ulongval () { return (long) (sizeof (int)); }
64674  #include <stdio.h>
64675 @@ -16401,7 +16466,8 @@
64676  cat confdefs.h >>conftest.$ac_ext
64677  cat >>conftest.$ac_ext <<_ACEOF
64678  /* end confdefs.h.  */
64679 -$ac_includes_default
64680 +/* no standard headers */
64681 +
64682  int
64683  main ()
64684  {
64685 @@ -16465,7 +16531,8 @@
64686  cat confdefs.h >>conftest.$ac_ext
64687  cat >>conftest.$ac_ext <<_ACEOF
64688  /* end confdefs.h.  */
64689 -$ac_includes_default
64690 +/* no standard headers */
64691 +
64692  int
64693  main ()
64694  {
64695 @@ -16506,7 +16573,8 @@
64696  cat confdefs.h >>conftest.$ac_ext
64697  cat >>conftest.$ac_ext <<_ACEOF
64698  /* end confdefs.h.  */
64699 -$ac_includes_default
64700 +/* no standard headers */
64701 +
64702  int
64703  main ()
64704  {
64705 @@ -16563,7 +16631,8 @@
64706  cat confdefs.h >>conftest.$ac_ext
64707  cat >>conftest.$ac_ext <<_ACEOF
64708  /* end confdefs.h.  */
64709 -$ac_includes_default
64710 +/* no standard headers */
64711 +
64712  int
64713  main ()
64714  {
64715 @@ -16604,7 +16673,8 @@
64716  cat confdefs.h >>conftest.$ac_ext
64717  cat >>conftest.$ac_ext <<_ACEOF
64718  /* end confdefs.h.  */
64719 -$ac_includes_default
64720 +/* no standard headers */
64721 +
64722  int
64723  main ()
64724  {
64725 @@ -16669,7 +16739,8 @@
64726  cat confdefs.h >>conftest.$ac_ext
64727  cat >>conftest.$ac_ext <<_ACEOF
64728  /* end confdefs.h.  */
64729 -$ac_includes_default
64730 +/* no standard headers */
64731 +
64732  int
64733  main ()
64734  {
64735 @@ -16737,7 +16808,8 @@
64736  cat confdefs.h >>conftest.$ac_ext
64737  cat >>conftest.$ac_ext <<_ACEOF
64738  /* end confdefs.h.  */
64739 -$ac_includes_default
64740 +/* no standard headers */
64741 +
64742  long longval () { return (long) (sizeof (short)); }
64743  unsigned long ulongval () { return (long) (sizeof (short)); }
64744  #include <stdio.h>
64745 @@ -16821,7 +16893,8 @@
64746  cat confdefs.h >>conftest.$ac_ext
64747  cat >>conftest.$ac_ext <<_ACEOF
64748  /* end confdefs.h.  */
64749 -$ac_includes_default
64750 +/* no standard headers */
64751 +
64752  int
64753  main ()
64754  {
64755 @@ -16885,7 +16958,8 @@
64756  cat confdefs.h >>conftest.$ac_ext
64757  cat >>conftest.$ac_ext <<_ACEOF
64758  /* end confdefs.h.  */
64759 -$ac_includes_default
64760 +/* no standard headers */
64761 +
64762  int
64763  main ()
64764  {
64765 @@ -16926,7 +17000,8 @@
64766  cat confdefs.h >>conftest.$ac_ext
64767  cat >>conftest.$ac_ext <<_ACEOF
64768  /* end confdefs.h.  */
64769 -$ac_includes_default
64770 +/* no standard headers */
64771 +
64772  int
64773  main ()
64774  {
64775 @@ -16983,7 +17058,8 @@
64776  cat confdefs.h >>conftest.$ac_ext
64777  cat >>conftest.$ac_ext <<_ACEOF
64778  /* end confdefs.h.  */
64779 -$ac_includes_default
64780 +/* no standard headers */
64781 +
64782  int
64783  main ()
64784  {
64785 @@ -17024,7 +17100,8 @@
64786  cat confdefs.h >>conftest.$ac_ext
64787  cat >>conftest.$ac_ext <<_ACEOF
64788  /* end confdefs.h.  */
64789 -$ac_includes_default
64790 +/* no standard headers */
64791 +
64792  int
64793  main ()
64794  {
64795 @@ -17089,7 +17166,8 @@
64796  cat confdefs.h >>conftest.$ac_ext
64797  cat >>conftest.$ac_ext <<_ACEOF
64798  /* end confdefs.h.  */
64799 -$ac_includes_default
64800 +/* no standard headers */
64801 +
64802  int
64803  main ()
64804  {
64805 @@ -17157,7 +17235,8 @@
64806  cat confdefs.h >>conftest.$ac_ext
64807  cat >>conftest.$ac_ext <<_ACEOF
64808  /* end confdefs.h.  */
64809 -$ac_includes_default
64810 +/* no standard headers */
64811 +
64812  long longval () { return (long) (sizeof (char)); }
64813  unsigned long ulongval () { return (long) (sizeof (char)); }
64814  #include <stdio.h>
64815 @@ -17906,6 +17985,64 @@
64816    ac_status=$?
64817    echo "$as_me:$LINENO: \$? = $ac_status" >&5
64818    (exit $ac_status); }; }; then
64819 +  chktls_save_LDFLAGS="$LDFLAGS"
64820 +                         case $host in
64821 +           *-*-linux*)
64822 +             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
64823 +             ;;
64824 +         esac
64825 +         chktls_save_CFLAGS="$CFLAGS"
64826 +         CFLAGS="-fPIC $CFLAGS"
64827 +                 cat >conftest.$ac_ext <<_ACEOF
64828 +int f() { return 0; }
64829 +_ACEOF
64830 +rm -f conftest.$ac_objext conftest$ac_exeext
64831 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
64832 +  (eval $ac_link) 2>conftest.er1
64833 +  ac_status=$?
64834 +  grep -v '^ *+' conftest.er1 >conftest.err
64835 +  rm -f conftest.er1
64836 +  cat conftest.err >&5
64837 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
64838 +  (exit $ac_status); } &&
64839 +        { ac_try='test -z "$ac_c_werror_flag"
64840 +                        || test ! -s conftest.err'
64841 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
64842 +  (eval $ac_try) 2>&5
64843 +  ac_status=$?
64844 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
64845 +  (exit $ac_status); }; } &&
64846 +        { ac_try='test -s conftest$ac_exeext'
64847 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
64848 +  (eval $ac_try) 2>&5
64849 +  ac_status=$?
64850 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
64851 +  (exit $ac_status); }; }; then
64852 +  cat >conftest.$ac_ext <<_ACEOF
64853 +__thread int a; int b; int f() { return a = b; }
64854 +_ACEOF
64855 +rm -f conftest.$ac_objext conftest$ac_exeext
64856 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
64857 +  (eval $ac_link) 2>conftest.er1
64858 +  ac_status=$?
64859 +  grep -v '^ *+' conftest.er1 >conftest.err
64860 +  rm -f conftest.er1
64861 +  cat conftest.err >&5
64862 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
64863 +  (exit $ac_status); } &&
64864 +        { ac_try='test -z "$ac_c_werror_flag"
64865 +                        || test ! -s conftest.err'
64866 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
64867 +  (eval $ac_try) 2>&5
64868 +  ac_status=$?
64869 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
64870 +  (exit $ac_status); }; } &&
64871 +        { ac_try='test -s conftest$ac_exeext'
64872 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
64873 +  (eval $ac_try) 2>&5
64874 +  ac_status=$?
64875 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
64876 +  (exit $ac_status); }; }; then
64877    gcc_cv_have_tls=yes
64878  else
64879    echo "$as_me: failed program was:" >&5
64880 @@ -17915,6 +18052,24 @@
64881  fi
64882  rm -f conftest.err conftest.$ac_objext \
64883        conftest$ac_exeext conftest.$ac_ext
64884 +else
64885 +  echo "$as_me: failed program was:" >&5
64886 +sed 's/^/| /' conftest.$ac_ext >&5
64887 +
64888 +gcc_cv_have_tls=yes
64889 +fi
64890 +rm -f conftest.err conftest.$ac_objext \
64891 +      conftest$ac_exeext conftest.$ac_ext
64892 +         CFLAGS="$chktls_save_CFLAGS"
64893 +         LDFLAGS="$chktls_save_LDFLAGS"
64894 +else
64895 +  echo "$as_me: failed program was:" >&5
64896 +sed 's/^/| /' conftest.$ac_ext >&5
64897 +
64898 +gcc_cv_have_tls=no
64899 +fi
64900 +rm -f conftest.err conftest.$ac_objext \
64901 +      conftest$ac_exeext conftest.$ac_ext
64902  
64903  
64904  else
64905 @@ -22801,6 +22956,10 @@
64906  s,@multi_basedir@,$multi_basedir,;t t
64907  s,@toolexecdir@,$toolexecdir,;t t
64908  s,@toolexeclibdir@,$toolexeclibdir,;t t
64909 +s,@datarootdir@,$datarootdir,;t t
64910 +s,@docdir@,$docdir,;t t
64911 +s,@pdfdir@,$pdfdir,;t t
64912 +s,@htmldir@,$htmldir,;t t
64913  s,@CC@,$CC,;t t
64914  s,@ac_ct_CC@,$ac_ct_CC,;t t
64915  s,@EXEEXT@,$EXEEXT,;t t
64916 diff -Nur a/libgomp/configure.ac b/libgomp/configure.ac
64917 --- a/libgomp/configure.ac      2008-09-19 22:27:11.000000000 +0200
64918 +++ b/libgomp/configure.ac      2010-01-25 09:50:29.605686739 +0100
64919 @@ -94,6 +94,30 @@
64920  AC_SUBST(toolexecdir)
64921  AC_SUBST(toolexeclibdir)
64922  
64923 +AC_ARG_WITH(datarootdir,
64924 +[  --with-datarootdir=DIR  Use DIR as the data root [[PREFIX/share]]],
64925 +datarootdir="\${prefix}/$with_datarootdir",
64926 +datarootdir='$(prefix)/share')
64927 +AC_SUBST(datarootdir)
64928 +
64929 +AC_ARG_WITH(docdir,
64930 +[  --with-docdir=DIR       Install documentation in DIR [[DATAROOTDIR]]],
64931 +docdir="\${prefix}/$with_docdir",
64932 +docdir='$(datarootdir)')
64933 +AC_SUBST(docdir)
64934 +
64935 +AC_ARG_WITH(pdfdir,
64936 +[  --with-pdfdir           install pdf in this directory.],
64937 +[pdfdir="\${prefix}/${withval}"],
64938 +[pdfdir="\${docdir}"])
64939 +AC_SUBST(pdfdir)
64940 +
64941 +AC_ARG_WITH(htmldir,
64942 +[  --with-htmldir=DIR      html documentation in in DIR [[DOCDIR]]],
64943 +htmldir="\${prefix}/$with_htmldir",
64944 +htmldir='$(docdir)')
64945 +AC_SUBST(htmldir)
64946 +
64947  # Check the compiler.
64948  # The same as in boehm-gc and libstdc++. Have to borrow it from there.
64949  # We must force CC to /not/ be precious variables; otherwise
64950 diff -Nur a/libgomp/libgomp.texi b/libgomp/libgomp.texi
64951 --- a/libgomp/libgomp.texi      2008-11-04 19:16:17.000000000 +0100
64952 +++ b/libgomp/libgomp.texi      2010-01-25 09:50:29.605686739 +0100
64953 @@ -94,7 +94,7 @@
64954                                 How you can copy and share this manual.
64955  * Funding::                    How to help assure continued work for free 
64956                                 software.
64957 -* Index::                      Index of this documentation.
64958 +* Library Index::              Index of this documentation.
64959  @end menu
64960  
64961  
64962 @@ -1713,8 +1713,8 @@
64963  @c Index
64964  @c ---------------------------------------------------------------------
64965  
64966 -@node Index
64967 -@unnumbered Index
64968 +@node Library Index
64969 +@unnumbered Library Index
64970  
64971  @printindex cp
64972  
64973 diff -Nur a/libgomp/Makefile.am b/libgomp/Makefile.am
64974 --- a/libgomp/Makefile.am       2008-08-31 20:16:09.000000000 +0200
64975 +++ b/libgomp/Makefile.am       2010-01-25 09:50:29.615687242 +0100
64976 @@ -1,5 +1,10 @@
64977  ## Process this file with automake to produce Makefile.in
64978  
64979 +datarootdir = @datarootdir@
64980 +docdir = @docdir@
64981 +htmldir = @htmldir@
64982 +pdfdir = @pdfdir@
64983 +
64984  ACLOCAL_AMFLAGS = -I .. -I ../config
64985  SUBDIRS = testsuite
64986  
64987 @@ -41,6 +46,12 @@
64988  nodist_finclude_HEADERS = omp_lib.h omp_lib.f90 omp_lib.mod omp_lib_kinds.mod
64989  endif
64990  
64991 +LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
64992 +
64993 +LINK = $(LIBTOOL) --tag CC --mode=link $(CCLD) $(AM_CCFLAGS) $(CFLAGS) \
64994 +       $(AM_LDFLAGS) $(LTLDFLAGS) -o $@
64995 +
64996 +
64997  omp_lib_kinds.mod: omp_lib.mod
64998         :
64999  omp_lib.mod: omp_lib.f90
65000 @@ -50,10 +61,30 @@
65001  env.lo: libgomp_f.h
65002  env.o: libgomp_f.h
65003  
65004 +HTMLS_INSTALL=libgomp
65005 +HTMLS_BUILD=libgomp/index.html
65006  
65007 -# No install-html or install-pdf support in automake yet
65008 -.PHONY: install-html install-pdf
65009 -install-html:
65010 +$(HTMLS_BUILD): $(info_TEXINFOS)
65011 +       $(TEXI2HTML) $(MAKEINFOFLAGS) -I$(srcdir) -o $(@D) $<
65012 +
65013 +html__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
65014 +
65015 +install-html: $(HTMLS_BUILD)
65016 +       @$(NORMAL_INSTALL)
65017 +       test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)"
65018 +       @list='$(HTMLS_INSTALL)'; for p in $$list; do \
65019 +         if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \
65020 +         f=$(html__strip_dir) \
65021 +         if test -d "$$d$$p"; then \
65022 +           echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \
65023 +           $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
65024 +           echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
65025 +           $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
65026 +         else \
65027 +           echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
65028 +           $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
65029 +         fi; \
65030 +       done
65031  
65032  install-pdf: $(PDFS)
65033         @$(NORMAL_INSTALL)
65034 @@ -71,6 +102,7 @@
65035  # `texinfo.tex' for your package. The value of this variable should be
65036  # the relative path from the current `Makefile.am' to `texinfo.tex'.
65037  TEXINFO_TEX   = ../gcc/doc/include/texinfo.tex
65038 +TEXI2HTML = $(MAKEINFO) --html
65039  
65040  # Defines info, dvi, pdf and html targets
65041  MAKEINFOFLAGS = -I $(srcdir)/../gcc/doc/include
65042 diff -Nur a/libgomp/Makefile.in b/libgomp/Makefile.in
65043 --- a/libgomp/Makefile.in       2009-07-22 09:43:59.000000000 +0200
65044 +++ b/libgomp/Makefile.in       2010-01-25 09:50:29.615687242 +0100
65045 @@ -97,8 +97,6 @@
65046         $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
65047         $(AM_CFLAGS) $(CFLAGS)
65048  CCLD = $(CC)
65049 -LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
65050 -       $(AM_LDFLAGS) $(LDFLAGS) -o $@
65051  SOURCES = $(libgomp_la_SOURCES)
65052  DIST_SOURCES = $(libgomp_la_SOURCES)
65053  MULTISRCTOP = 
65054 @@ -259,6 +257,8 @@
65055  build_vendor = @build_vendor@
65056  config_path = @config_path@
65057  datadir = @datadir@
65058 +datarootdir = @datarootdir@
65059 +docdir = @docdir@
65060  enable_shared = @enable_shared@
65061  enable_static = @enable_static@
65062  exec_prefix = @exec_prefix@
65063 @@ -267,6 +267,7 @@
65064  host_cpu = @host_cpu@
65065  host_os = @host_os@
65066  host_vendor = @host_vendor@
65067 +htmldir = @htmldir@
65068  includedir = @includedir@
65069  infodir = @infodir@
65070  install_sh = @install_sh@
65071 @@ -280,6 +281,7 @@
65072  mkdir_p = @mkdir_p@
65073  multi_basedir = @multi_basedir@
65074  oldincludedir = @oldincludedir@
65075 +pdfdir = @pdfdir@
65076  prefix = @prefix@
65077  program_transform_name = @program_transform_name@
65078  sbindir = @sbindir@
65079 @@ -317,6 +319,13 @@
65080  nodist_noinst_HEADERS = libgomp_f.h
65081  nodist_libsubinclude_HEADERS = omp.h
65082  @USE_FORTRAN_TRUE@nodist_finclude_HEADERS = omp_lib.h omp_lib.f90 omp_lib.mod omp_lib_kinds.mod
65083 +LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
65084 +LINK = $(LIBTOOL) --tag CC --mode=link $(CCLD) $(AM_CCFLAGS) $(CFLAGS) \
65085 +       $(AM_LDFLAGS) $(LTLDFLAGS) -o $@
65086 +
65087 +HTMLS_INSTALL = libgomp
65088 +HTMLS_BUILD = libgomp/index.html
65089 +html__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
65090  
65091  # Automake Documentation:
65092  # If your package has Texinfo files in many directories, you can use the
65093 @@ -324,6 +333,7 @@
65094  # `texinfo.tex' for your package. The value of this variable should be
65095  # the relative path from the current `Makefile.am' to `texinfo.tex'.
65096  TEXINFO_TEX = ../gcc/doc/include/texinfo.tex
65097 +TEXI2HTML = $(MAKEINFO) --html
65098  
65099  # Defines info, dvi, pdf and html targets
65100  MAKEINFOFLAGS = -I $(srcdir)/../gcc/doc/include
65101 @@ -1085,9 +1095,25 @@
65102  env.lo: libgomp_f.h
65103  env.o: libgomp_f.h
65104  
65105 -# No install-html or install-pdf support in automake yet
65106 -.PHONY: install-html install-pdf
65107 -install-html:
65108 +$(HTMLS_BUILD): $(info_TEXINFOS)
65109 +       $(TEXI2HTML) $(MAKEINFOFLAGS) -I$(srcdir) -o $(@D) $<
65110 +
65111 +install-html: $(HTMLS_BUILD)
65112 +       @$(NORMAL_INSTALL)
65113 +       test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)"
65114 +       @list='$(HTMLS_INSTALL)'; for p in $$list; do \
65115 +         if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \
65116 +         f=$(html__strip_dir) \
65117 +         if test -d "$$d$$p"; then \
65118 +           echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \
65119 +           $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
65120 +           echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
65121 +           $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
65122 +         else \
65123 +           echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
65124 +           $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
65125 +         fi; \
65126 +       done
65127  
65128  install-pdf: $(PDFS)
65129         @$(NORMAL_INSTALL)
65130 diff -Nur a/libgomp/testsuite/Makefile.in b/libgomp/testsuite/Makefile.in
65131 --- a/libgomp/testsuite/Makefile.in     2009-07-22 09:43:59.000000000 +0200
65132 +++ b/libgomp/testsuite/Makefile.in     2010-01-25 09:50:29.615687242 +0100
65133 @@ -177,6 +177,8 @@
65134  build_vendor = @build_vendor@
65135  config_path = @config_path@
65136  datadir = @datadir@
65137 +datarootdir = @datarootdir@
65138 +docdir = @docdir@
65139  enable_shared = @enable_shared@
65140  enable_static = @enable_static@
65141  exec_prefix = @exec_prefix@
65142 @@ -185,6 +187,7 @@
65143  host_cpu = @host_cpu@
65144  host_os = @host_os@
65145  host_vendor = @host_vendor@
65146 +htmldir = @htmldir@
65147  includedir = @includedir@
65148  infodir = @infodir@
65149  install_sh = @install_sh@
65150 @@ -198,6 +201,7 @@
65151  mkdir_p = @mkdir_p@
65152  multi_basedir = @multi_basedir@
65153  oldincludedir = @oldincludedir@
65154 +pdfdir = @pdfdir@
65155  prefix = @prefix@
65156  program_transform_name = @program_transform_name@
65157  sbindir = @sbindir@
65158 diff -Nur a/libiberty/argv.c b/libiberty/argv.c
65159 --- a/libiberty/argv.c  2007-07-23 19:29:17.000000000 +0200
65160 +++ b/libiberty/argv.c  2010-01-25 09:50:29.615687242 +0100
65161 @@ -119,6 +119,24 @@
65162      }
65163  }
65164  
65165 +static void
65166 +consume_whitespace (const char **input)
65167 +{
65168 +  while (ISSPACE (**input))
65169 +    {
65170 +      (*input)++;
65171 +    }
65172 +}
65173 +
65174 +static int
65175 +only_whitespace (const char* input)
65176 +{
65177 +  while (*input != EOS && ISSPACE (*input))
65178 +    input++;
65179 +
65180 +  return (*input == EOS);
65181 +}
65182 +
65183  /*
65184  
65185  @deftypefn Extension char** buildargv (char *@var{sp})
65186 @@ -179,10 +197,8 @@
65187        do
65188         {
65189           /* Pick off argv[argc] */
65190 -         while (ISBLANK (*input))
65191 -           {
65192 -             input++;
65193 -           }
65194 +         consume_whitespace (&input);
65195 +
65196           if ((maxargc == 0) || (argc >= (maxargc - 1)))
65197             {
65198               /* argv needs initialization, or expansion */
65199 @@ -278,10 +294,7 @@
65200           argc++;
65201           argv[argc] = NULL;
65202  
65203 -         while (ISSPACE (*input))
65204 -           {
65205 -             input++;
65206 -           }
65207 +         consume_whitespace (&input);
65208         }
65209        while (*input != EOS);
65210      }
65211 @@ -420,8 +433,17 @@
65212         goto error;
65213        /* Add a NUL terminator.  */
65214        buffer[len] = '\0';
65215 -      /* Parse the string.  */
65216 -      file_argv = buildargv (buffer);
65217 +      /* If the file is empty or contains only whitespace, buildargv would
65218 +        return a single empty argument.  In this context we want no arguments,
65219 +        instead.  */
65220 +      if (only_whitespace (buffer))
65221 +       {
65222 +         file_argv = (char **) xmalloc (sizeof (char *));
65223 +         file_argv[0] = NULL;
65224 +       }
65225 +      else
65226 +       /* Parse the string.  */
65227 +       file_argv = buildargv (buffer);
65228        /* If *ARGVP is not already dynamically allocated, copy it.  */
65229        if (!argv_dynamic)
65230         {
65231 @@ -434,7 +456,7 @@
65232         }
65233        /* Count the number of arguments.  */
65234        file_argc = 0;
65235 -      while (file_argv[file_argc] && *file_argv[file_argc])
65236 +      while (file_argv[file_argc])
65237         ++file_argc;
65238        /* Now, insert FILE_ARGV into ARGV.  The "+1" below handles the
65239          NULL terminator at the end of ARGV.  */ 
65240 diff -Nur a/libiberty/configure b/libiberty/configure
65241 --- a/libiberty/configure       2009-04-08 16:18:33.000000000 +0200
65242 +++ b/libiberty/configure       2010-01-25 09:50:29.615687242 +0100
65243 @@ -8891,6 +8891,20 @@
65244  esac
65245  
65246  
65247 +# On MinGW, add support for Cygwin paths.
65248 +case "${host}" in
65249 +     *-*-mingw*)
65250 +       case $LIBOBJS in
65251 +    "cygpath.$ac_objext"   | \
65252 +  *" cygpath.$ac_objext"   | \
65253 +    "cygpath.$ac_objext "* | \
65254 +  *" cygpath.$ac_objext "* ) ;;
65255 +  *) LIBOBJS="$LIBOBJS cygpath.$ac_objext" ;;
65256 +esac
65257 +
65258 +       ;;
65259 +esac
65260 +
65261  if test x$gcc_no_link = xyes; then
65262    if test "x${ac_cv_func_mmap_fixed_mapped+set}" != xset; then
65263      ac_cv_func_mmap_fixed_mapped=no
65264 diff -Nur a/libiberty/configure.ac b/libiberty/configure.ac
65265 --- a/libiberty/configure.ac    2009-04-08 16:18:33.000000000 +0200
65266 +++ b/libiberty/configure.ac    2010-01-25 09:50:29.615687242 +0100
65267 @@ -663,6 +663,13 @@
65268  esac
65269  AC_SUBST(pexecute)
65270  
65271 +# On MinGW, add support for Cygwin paths.
65272 +case "${host}" in
65273 +     *-*-mingw*)
65274 +       AC_LIBOBJ([cygpath])
65275 +       ;;
65276 +esac
65277 +
65278  libiberty_AC_FUNC_STRNCMP
65279  
65280  # Install a library built with a cross compiler in $(tooldir) rather
65281 diff -Nur a/libiberty/cygpath.c b/libiberty/cygpath.c
65282 --- a/libiberty/cygpath.c       1970-01-01 01:00:00.000000000 +0100
65283 +++ b/libiberty/cygpath.c       2010-01-25 09:50:29.615687242 +0100
65284 @@ -0,0 +1,591 @@
65285 +/* Support Cygwin paths under MinGW.
65286 +   Copyright (C) 2006 Free Software Foundation, Inc.
65287 +   Written by CodeSourcery.
65288 +
65289 +This file is part of the libiberty library.
65290 +Libiberty is free software; you can redistribute it and/or modify it
65291 +under the terms of the GNU Library General Public License as published
65292 +by the Free Software Foundation; either version 2 of the License, or
65293 +(at your option) any later version.
65294 +
65295 +Libiberty is distributed in the hope that it will be useful,
65296 +but WITHOUT ANY WARRANTY; without even the implied warranty of
65297 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
65298 +Library General Public License for more details.
65299 +
65300 +You should have received a copy of the GNU Library General Public
65301 +License along with libiberty; see the file COPYING.LIB.  If not, write
65302 +to the Free Software Foundation, Inc., 51 Franklin Street - Fifth
65303 +Floor, Boston, MA 02110-1301, USA.  */
65304 +
65305 +#include <windows.h>
65306 +#include <errno.h>
65307 +#include <fcntl.h>
65308 +#include <sys/stat.h>
65309 +#include <sys/types.h>
65310 +#include <io.h>
65311 +#include <process.h>
65312 +#include <stdbool.h>
65313 +#include <stdio.h>
65314 +#include <stdlib.h>
65315 +#include "libiberty.h"
65316 +
65317 +/* If non-zero, we have attempted to use cygpath.  CYGPATH_PEX may
65318 +   still be NULL, if cygpath is unavailable.  */
65319 +static int cygpath_initialized;
65320 +
65321 +/* If non-NULL, an instance of cygpath connected via a pipe.  */
65322 +static struct pex_obj *cygpath_pex;
65323 +
65324 +/* The input to cygpath.  */
65325 +static FILE *cygpath_in;
65326 +
65327 +/* The output from cygpath.  */
65328 +static FILE *cygpath_out;
65329 +
65330 +/* If non-NULL, a file to which path translations are logged.  */
65331 +static FILE *cygpath_log;
65332 +
65333 +/* Record MESSAGE in the CYGPATH_LOG.  MESSAGE is a format string,
65334 +   which is expected to have a single "%s" field, to be replaced by
65335 +   ARG.  */
65336 +static void
65337 +cygpath_log_msg_arg (const char *message, const char *arg)
65338 +{
65339 +  if (!cygpath_log)
65340 +    return;
65341 +  fprintf (cygpath_log, "[%d] cygpath: ", _getpid ());
65342 +  fprintf (cygpath_log, message, arg);
65343 +  fprintf (cygpath_log, "\n");
65344 +  fflush (cygpath_log);
65345 +}
65346 +
65347 +/* Record MESSAGE in the CYGPATH_LOG.  */
65348 +static void
65349 +cygpath_log_msg (const char *message)
65350 +{
65351 +  cygpath_log_msg_arg ("%s", message);
65352 +}
65353 +
65354 +/* An error has occured.  Add the MESSAGE to the CYGPATH_LOG, noting
65355 +   the cause of the error based on errno.  */
65356 +static void
65357 +cygpath_perror (const char *message)
65358 +{
65359 +  if (!cygpath_log)
65360 +    return;
65361 +  fprintf (cygpath_log, "[%d] cygpath: error: %s: %s\n",
65362 +          _getpid(), message, strerror (errno));
65363 +  fflush (cygpath_log);
65364 +}
65365 +
65366 +/* Closes CYGPATH_PEX and frees all associated
65367 +   resoures.  */
65368 +static void
65369 +cygpath_close (void)
65370 +{
65371 +  /* Free resources.  */
65372 +  if (cygpath_out)
65373 +    {
65374 +      fclose (cygpath_out);
65375 +      cygpath_out = NULL;
65376 +    }
65377 +  if (cygpath_in)
65378 +    {
65379 +      fclose (cygpath_in);
65380 +      cygpath_in = NULL;
65381 +    }
65382 +  if (cygpath_pex)
65383 +    {
65384 +      pex_free (cygpath_pex);
65385 +      cygpath_pex = NULL;
65386 +    }
65387 +  if (cygpath_log)
65388 +    {
65389 +      cygpath_log_msg ("end");
65390 +      cygpath_log = NULL;
65391 +    }
65392 +}
65393 +
65394 +/* CYG_PATH is a pointer to a Cygwin path.  This function converts the
65395 +   Cygwin path to a Windows path, storing the result in
65396 +   WIN32_PATH.  Returns true if the conversion was successful; false
65397 +   otherwise.  */
65398 +int
65399 +cygpath (const char *cyg_path, char win32_path[MAX_PATH + 1])
65400 +{
65401 +  bool ok;
65402 +  bool retrying;
65403 +  
65404 +  /* Special-case the empty path.  cygpath cannot handle the empty
65405 +     path correctly.  It ignores the empty line, waiting for a
65406 +     non-empty line, which in turn causes an application using this
65407 +     function to appear stuck.  */
65408 +  if (cyg_path[0] == '\0')
65409 +    {
65410 +      win32_path[0] = '\0';
65411 +      return true;
65412 +    }
65413 +  
65414 +  retrying = false;
65415 +
65416 + retry:
65417 +  if (!cygpath_initialized) 
65418 +    {
65419 +      const char *argv[] = { "cygpath", "-w", "-f", "-", NULL };
65420 +      const char *cygpath_path;
65421 +      const char *log;
65422 +      int err;
65423 +
65424 +      /* If we are unable to invoke cygpath, we do not want to try
65425 +        again.  So, we set the initialized flag at this point; if
65426 +        errors occur during the invocation, it will remain set.  */
65427 +      cygpath_initialized = 1;
65428 +      /* Check to see if the user wants cygpath support.  */
65429 +      cygpath_path = getenv ("CYGPATH");
65430 +      if (!cygpath_path)
65431 +       /* The user doesn't need to support Cygwin paths.  */
65432 +       goto error;
65433 +      /* If debugging, open the log file.  */
65434 +      log = getenv ("CSL_DEBUG_CYGPATH");
65435 +      if (log && log[0])
65436 +       {
65437 +         /* The log file is opened for "append" so that multiple
65438 +            processes (perhaps invoked from "make") can share it.  */
65439 +         cygpath_log = fopen (log, "a");
65440 +         if (cygpath_log)
65441 +           cygpath_log_msg ("begin");
65442 +       }
65443 +      /* If the environment variable is set to a non-empty string, use
65444 +        that string as the path to cygpath.  */ 
65445 +      if (cygpath_path[0] != '\0')
65446 +       argv[0] = cygpath_path;
65447 +      /* Create the pex object.  */
65448 +      cygpath_pex = pex_init (PEX_SEARCH | PEX_USE_PIPES, 
65449 +                             "cygpath", NULL);
65450 +      if (!cygpath_pex)
65451 +       goto error;
65452 +      /* Get the FILE we will use to write to the child.  */
65453 +      cygpath_in = pex_input_pipe (cygpath_pex, /*binary=*/0);
65454 +      if (!cygpath_in)
65455 +       goto error;
65456 +      /* Start the child process.  */
65457 +      if (pex_run (cygpath_pex, PEX_SEARCH | PEX_USE_PIPES, 
65458 +                  argv[0], (char**) argv, 
65459 +                  NULL, NULL,
65460 +                  &err) != NULL)
65461 +       goto error;
65462 +      /* Get the FILE we will use to read from the child.  */
65463 +      cygpath_out = pex_read_output (cygpath_pex, /*binary=*/1);
65464 +      if (!cygpath_out)
65465 +       goto error;
65466 +    }
65467 +  else if (!cygpath_pex) 
65468 +    /* We previously tried to use cygpath, but something went wrong.  */
65469 +    return false;
65470 +
65471 +  /* Write CYG_PATH to the child, on a line by itself.  */
65472 +  cygpath_log_msg_arg ("-> %s", cyg_path);
65473 +  if (fprintf (cygpath_in, "%s\n", cyg_path) < 0)
65474 +    {
65475 +      cygpath_perror ("write failed");
65476 +      goto error;
65477 +    }
65478 +  /* Flush the output.  (We cannot set the stream into line-buffered
65479 +     mode with setvbuf because Windows treats _IOLBF as a synonym for
65480 +     _IOFBF.)  */
65481 +  if (fflush (cygpath_in))
65482 +    cygpath_perror ("flush failed");
65483 +  /* Read the output.  */
65484 +  ok = true;
65485 +  while (1)
65486 +    {
65487 +      size_t pathlen;
65488 +      if (!fgets (win32_path, MAX_PATH, cygpath_out))
65489 +       {
65490 +         if (ferror (cygpath_out))
65491 +           cygpath_perror ("read failed");
65492 +         else
65493 +           {
65494 +             cygpath_log_msg ("error: EOF");
65495 +             /* Unfortunately, cygpath sometimes crashes for no
65496 +                apparent reason.  We give it two chances... */
65497 +             if (!retrying)
65498 +               {
65499 +                 retrying = true;
65500 +                 cygpath_log_msg ("retrying");
65501 +                 cygpath_close ();
65502 +                 cygpath_initialized = 0;
65503 +                 goto retry;
65504 +               }
65505 +           }
65506 +         goto error;
65507 +       }
65508 +      pathlen = strlen (win32_path);
65509 +      if (pathlen == 0 && ok)
65510 +       /* This isn't a well-formed response from cygpath.  */
65511 +       goto error;
65512 +      if (win32_path[pathlen - 1] == '\n')
65513 +       {
65514 +         win32_path[pathlen - 1] = '\0';
65515 +         cygpath_log_msg_arg ("<- %s", win32_path);
65516 +         break;
65517 +       }
65518 +      /* We didn't reach the end of the line.  There's no point in
65519 +        trying to use this output, since we know the length of
65520 +        paths are limited to MAX_PATH characters, but we read the
65521 +        entire line so that we are still in sync with
65522 +        cygpath.  */
65523 +      ok = false;
65524 +      if (cygpath_log)
65525 +       cygpath_log_msg_arg ("error: invalid response: %s",
65526 +                            win32_path);
65527 +    }
65528 +  
65529 +  return ok;
65530 +  
65531 + error:
65532 +  cygpath_close();
65533 +  return false;
65534 +}
65535 +
65536 +/* Returns the handle for the MVCRT DLL, or NULL if it is not
65537 +   available.  */
65538 +static HMODULE
65539 +msvcrt_dll (void)
65540 +{
65541 +  static HMODULE dll = (HMODULE)(-1);
65542 +
65543 +  /* After we call LoadLibrary, DLL will be either a valid handle or
65544 +     NULL, so this check ensures that we only try to load the library
65545 +     once.  */
65546 +  if (dll == (HMODULE)(-1))
65547 +    dll = LoadLibrary ("msvcrt.dll");
65548 +
65549 +  return dll;
65550 +}
65551 +
65552 +/* Call the underlying MSVCRT fopen with PATH and MODE, and return
65553 +   what it returns.  */
65554 +static FILE *
65555 +msvcrt_fopen (const char *path, const char *mode)
65556 +{
65557 +  typedef FILE *(fopen_type)(const char *path, 
65558 +                            const char *mode);
65559 +
65560 +  static fopen_type *f = NULL;
65561 +
65562 +  /* Get the address of "fopen".  */
65563 +  if (!f) 
65564 +    {
65565 +      HMODULE dll = msvcrt_dll ();
65566 +      if (!dll)
65567 +       {
65568 +         errno = ENOSYS;
65569 +         return NULL;
65570 +       }
65571 +      f = (fopen_type *) GetProcAddress (dll, "fopen");
65572 +      if (!f)
65573 +       {
65574 +         errno = ENOSYS;
65575 +         return NULL;
65576 +       }
65577 +    }
65578 +
65579 +  /* Call fopen.  */
65580 +  return (*f)(path, mode);
65581 +}
65582 +
65583 +FILE *
65584 +fopen (const char *path, const char *mode)
65585 +{
65586 +  FILE *f;
65587 +  char win32_path[MAX_PATH + 1];
65588 +
65589 +  /* Assume PATH is a Windows path.  */
65590 +  f = msvcrt_fopen (path, mode);
65591 +  if (f || errno != ENOENT)
65592 +    return f;
65593 +  /* Perhaps it is a Cygwin path?  */
65594 +  if (cygpath (path, win32_path))
65595 +    f = msvcrt_fopen (win32_path, mode);
65596 +  return f;
65597 +}
65598 +
65599 +int 
65600 +open (const char *path, int oflag, ...)
65601 +{
65602 +  int fd;
65603 +  char win32_path[MAX_PATH + 1];
65604 +  int pmode = 0;
65605 +
65606 +  if ((oflag & _O_CREAT))
65607 +    {
65608 +      va_list ap;
65609 +      va_start (ap, oflag);
65610 +      pmode = va_arg (ap, int); 
65611 +      va_end (ap);
65612 +    }
65613 +
65614 +  /* Assume PATH is a Windows path.  */
65615 +  fd = _open (path, oflag, pmode);
65616 +  if (fd != -1 || errno != ENOENT)
65617 +    return fd;
65618 +  /* Perhaps it is a Cygwin path?  */
65619 +  if (cygpath (path, win32_path))
65620 +    fd = _open (win32_path, oflag, pmode);
65621 +  return fd;
65622 +}
65623 +
65624 +int
65625 +stat (const char *path, struct stat *buffer)
65626 +{
65627 +  int r;
65628 +  char win32_path[MAX_PATH + 1];
65629 +
65630 +  /* Assume PATH is a Windows path.  */
65631 +  r = _stat (path, (struct _stat *) buffer);
65632 +  if (r != -1 || errno != ENOENT)
65633 +    return r;
65634 +  /* Perhaps it is a Cygwin path?  */
65635 +  if (cygpath (path, win32_path))
65636 +    r = _stat (win32_path, (struct _stat *) buffer);
65637 +  return r;
65638 +}
65639 +
65640 +int
65641 +access (const char *path, int mode)
65642 +{
65643 +  int r;
65644 +  char win32_path[MAX_PATH + 1];
65645 +
65646 +#ifdef _WIN32
65647 +  /* Some GNU tools mistakenly defined X_OK to 1 on Windows.  */
65648 +  mode = mode & ~1;
65649 +#endif
65650 +  /* Assume PATH is a Windows path.  */
65651 +  r = _access (path, mode);
65652 +  if (r != -1 || errno != ENOENT)
65653 +    return r;
65654 +  /* Perhaps it is a Cygwin path?  */
65655 +  if (cygpath (path, win32_path))
65656 +    r = _access (win32_path, mode);
65657 +  return r;
65658 +}
65659 +
65660 +/* Given the WINDOWS_CODE (typically the result of GetLastError), set
65661 +   ERRNO to the corresponding error code.  If there is no obvious
65662 +   correspondence, ERRNO will be set to EACCES.  */
65663 +static void
65664 +set_errno_from_windows_code (DWORD windows_code)
65665 +{
65666 +  int mapping[][2] = {
65667 +    {ERROR_ACCESS_DENIED, EACCES},
65668 +    {ERROR_ACCOUNT_DISABLED, EACCES},
65669 +    {ERROR_ACCOUNT_RESTRICTION, EACCES},
65670 +    {ERROR_ALREADY_ASSIGNED, EBUSY},
65671 +    {ERROR_ALREADY_EXISTS, EEXIST},
65672 +    {ERROR_ARITHMETIC_OVERFLOW, ERANGE},
65673 +    {ERROR_BAD_COMMAND, EIO},
65674 +    {ERROR_BAD_DEVICE, ENODEV},
65675 +    {ERROR_BAD_DRIVER_LEVEL, ENXIO},
65676 +    {ERROR_BAD_EXE_FORMAT, ENOEXEC},
65677 +    {ERROR_BAD_FORMAT, ENOEXEC},
65678 +    {ERROR_BAD_LENGTH, EINVAL},
65679 +    {ERROR_BAD_PATHNAME, ENOENT},
65680 +    {ERROR_BAD_PIPE, EPIPE},
65681 +    {ERROR_BAD_UNIT, ENODEV},
65682 +    {ERROR_BAD_USERNAME, EINVAL},
65683 +    {ERROR_BROKEN_PIPE, EPIPE},
65684 +    {ERROR_BUFFER_OVERFLOW, ENOMEM},
65685 +    {ERROR_BUSY, EBUSY},
65686 +    {ERROR_BUSY_DRIVE, EBUSY},
65687 +    {ERROR_CALL_NOT_IMPLEMENTED, ENOSYS},
65688 +    {ERROR_CRC, EIO},
65689 +    {ERROR_CURRENT_DIRECTORY, EINVAL},
65690 +    {ERROR_DEVICE_IN_USE, EBUSY},
65691 +    {ERROR_DIR_NOT_EMPTY, EEXIST},
65692 +    {ERROR_DIRECTORY, ENOENT},
65693 +    {ERROR_DISK_CHANGE, EIO},
65694 +    {ERROR_DISK_FULL, ENOSPC},
65695 +    {ERROR_DRIVE_LOCKED, EBUSY},
65696 +    {ERROR_ENVVAR_NOT_FOUND, EINVAL},
65697 +    {ERROR_EXE_MARKED_INVALID, ENOEXEC},
65698 +    {ERROR_FILE_EXISTS, EEXIST},
65699 +    {ERROR_FILE_INVALID, ENODEV},
65700 +    {ERROR_FILE_NOT_FOUND, ENOENT},
65701 +    {ERROR_FILENAME_EXCED_RANGE, ENAMETOOLONG},
65702 +    {ERROR_GEN_FAILURE, EIO},
65703 +    {ERROR_HANDLE_DISK_FULL, ENOSPC},
65704 +    {ERROR_INSUFFICIENT_BUFFER,  ENOMEM},
65705 +    {ERROR_INVALID_ACCESS, EINVAL},
65706 +    {ERROR_INVALID_ADDRESS, EFAULT},
65707 +    {ERROR_INVALID_BLOCK, EFAULT},
65708 +    {ERROR_INVALID_DATA, EINVAL},
65709 +    {ERROR_INVALID_DRIVE, ENODEV},
65710 +    {ERROR_INVALID_EXE_SIGNATURE,  ENOEXEC},
65711 +    {ERROR_INVALID_FLAGS, EINVAL},
65712 +    {ERROR_INVALID_FUNCTION,  ENOSYS},
65713 +    {ERROR_INVALID_HANDLE, EBADF},
65714 +    {ERROR_INVALID_LOGON_HOURS,  EACCES},
65715 +    {ERROR_INVALID_NAME, ENOENT},
65716 +    {ERROR_INVALID_OWNER, EINVAL},
65717 +    {ERROR_INVALID_PARAMETER, EINVAL},
65718 +    {ERROR_INVALID_PASSWORD, EPERM},
65719 +    {ERROR_INVALID_PRIMARY_GROUP, EINVAL},
65720 +    {ERROR_INVALID_SIGNAL_NUMBER, EINVAL},
65721 +    {ERROR_INVALID_TARGET_HANDLE, EIO},
65722 +    {ERROR_INVALID_WORKSTATION, EACCES},
65723 +    {ERROR_IO_DEVICE, EIO},
65724 +    {ERROR_IO_INCOMPLETE, EINTR},
65725 +    {ERROR_LOCKED, EBUSY},
65726 +    {ERROR_LOGON_FAILURE, EACCES},
65727 +    {ERROR_MAPPED_ALIGNMENT, EINVAL},
65728 +    {ERROR_META_EXPANSION_TOO_LONG, E2BIG},
65729 +    {ERROR_MORE_DATA, EPIPE},
65730 +    {ERROR_NEGATIVE_SEEK, ESPIPE},
65731 +    {ERROR_NO_DATA, EPIPE},
65732 +    {ERROR_NO_MORE_SEARCH_HANDLES, EIO},
65733 +    {ERROR_NO_PROC_SLOTS, EAGAIN},
65734 +    {ERROR_NO_SUCH_PRIVILEGE, EACCES},
65735 +    {ERROR_NOACCESS, EFAULT},
65736 +    {ERROR_NONE_MAPPED, EINVAL},
65737 +    {ERROR_NOT_ENOUGH_MEMORY, ENOMEM},
65738 +    {ERROR_NOT_READY, ENODEV},
65739 +    {ERROR_NOT_SAME_DEVICE, EXDEV},
65740 +    {ERROR_OPEN_FAILED, EIO},
65741 +    {ERROR_OPERATION_ABORTED, EINTR},
65742 +    {ERROR_OUTOFMEMORY,  ENOMEM},
65743 +    {ERROR_PASSWORD_EXPIRED, EACCES},
65744 +    {ERROR_PATH_BUSY,  EBUSY},
65745 +    {ERROR_PATH_NOT_FOUND, ENOTDIR},
65746 +    {ERROR_PIPE_BUSY, EBUSY},
65747 +    {ERROR_PIPE_CONNECTED, EPIPE},
65748 +    {ERROR_PIPE_LISTENING, EPIPE},
65749 +    {ERROR_PIPE_NOT_CONNECTED, EPIPE},
65750 +    {ERROR_PRIVILEGE_NOT_HELD, EACCES},
65751 +    {ERROR_READ_FAULT, EIO},
65752 +    {ERROR_SEEK, ESPIPE},
65753 +    {ERROR_SEEK_ON_DEVICE, ESPIPE},
65754 +    {ERROR_SHARING_BUFFER_EXCEEDED, ENFILE},
65755 +    {ERROR_STACK_OVERFLOW, ENOMEM},
65756 +    {ERROR_SWAPERROR, ENOENT},
65757 +    {ERROR_TOO_MANY_MODULES, EMFILE},
65758 +    {ERROR_TOO_MANY_OPEN_FILES, EMFILE},
65759 +    {ERROR_UNRECOGNIZED_MEDIA,  ENXIO},
65760 +    {ERROR_UNRECOGNIZED_VOLUME,  ENODEV},
65761 +    {ERROR_WAIT_NO_CHILDREN,  ECHILD},
65762 +    {ERROR_WRITE_FAULT, EIO},
65763 +    {ERROR_WRITE_PROTECT, EROFS}
65764 +/*  MinGW does not define ETXTBSY as yet.  
65765 +    {ERROR_LOCK_VIOLATION, ETXTBSY},
65766 +    {ERROR_SHARING_VIOLATION, ETXTBSY}, 
65767 +*/
65768 +  };
65769 +
65770 +  size_t i;
65771 +
65772 +  for (i = 0; i < sizeof (mapping)/sizeof (mapping[0]); ++i)
65773 +    if (mapping[i][0] == windows_code)
65774 +      {
65775 +       errno = mapping[i][1];
65776 +       return;
65777 +      }
65778 +
65779 +  /* Unrecognized error. Use EACCESS to have some error code,
65780 +     not misleading "No error" thing.  */
65781 +  errno = EACCES;      
65782 +}
65783 +
65784 +int rename (const char *oldpath, const char *newpath)
65785 +{
65786 +  BOOL r;
65787 +  int oldpath_converted = 0;
65788 +  char win32_oldpath[MAX_PATH + 1];
65789 +  char win32_newpath[MAX_PATH + 1];
65790 +
65791 +  /* Older versions of the cygpath program called FindFirstFile, but
65792 +     not FindClose.  As a result, a long-running cygpath program ends
65793 +     up leaking these handles, and, as a result, the Windows kernel
65794 +     will not let us remove or rename things in directories.  Therefore,
65795 +     we kill the child cygpath program now.
65796 +
65797 +     The defect in cygpath was corrected by this patch:
65798 +
65799 +       http://cygwin.com/ml/cygwin-patches/2007-q1/msg00033.html
65800 +
65801 +     but older versions of cygpath will be in use for the forseeable
65802 +     future.  */
65803 +
65804 +  cygpath_close ();
65805 +  cygpath_initialized = 0;
65806 +
65807 +  /* Assume all paths are Windows paths.  */
65808 +  r = MoveFileEx (oldpath, newpath, MOVEFILE_REPLACE_EXISTING);
65809 +  if (r)
65810 +      return 0;
65811 +  else if (GetLastError () != ERROR_PATH_NOT_FOUND)
65812 +    goto error;
65813 +
65814 +  /* Perhaps the old path is a cygwin path?  */
65815 +  if (cygpath (oldpath, win32_oldpath))
65816 +    {
65817 +      oldpath_converted = 1;
65818 +      r = MoveFileEx (win32_oldpath, newpath, MOVEFILE_REPLACE_EXISTING);      
65819 +      if (r)
65820 +          return 0;
65821 +      else if (GetLastError () != ERROR_PATH_NOT_FOUND)
65822 +          goto error;
65823 +    }
65824 +
65825 +  /* Perhaps the new path is a cygwin path?  */
65826 +  if (cygpath (newpath, win32_newpath))
65827 +    {
65828 +      r = MoveFileEx (oldpath_converted ? win32_oldpath : oldpath,
65829 +                     win32_newpath, MOVEFILE_REPLACE_EXISTING);
65830 +      if (r == TRUE)
65831 +       return 0;
65832 +    }
65833 +error:
65834 +  set_errno_from_windows_code (GetLastError ());
65835 +  return -1;      
65836 +}
65837 +
65838 +int remove (const char *pathname)
65839 +{
65840 +  int r;
65841 +  char win32_path[MAX_PATH + 1];
65842 +
65843 +  cygpath_close ();
65844 +  cygpath_initialized = 0;
65845 +
65846 +  /* Assume PATH is a Windows path.  */
65847 +  r = _unlink (pathname);
65848 +  if (r != -1 || errno != ENOENT)
65849 +    return r;
65850 +  /* Perhaps it is a Cygwin path?  */
65851 +  if (cygpath (pathname, win32_path))
65852 +    r = _unlink (win32_path);
65853 +  return r;
65854 +}
65855 +
65856 +int unlink(const char *pathname)
65857 +{
65858 +    return remove (pathname);
65859 +}
65860 +
65861 +int
65862 +chdir (const char *path)
65863 +{
65864 +  int ret;
65865 +  char win32_path[MAX_PATH + 1];
65866 +
65867 +  /* Assume PATH is a Windows path.  */
65868 +  ret = _chdir (path);
65869 +  if (ret != -1 || errno != ENOENT)
65870 +    return ret;
65871 +  /* Perhaps it is a Cygwin path?  */
65872 +  if (cygpath (path, win32_path))
65873 +    ret = _chdir (win32_path);
65874 +  return ret;
65875 +}
65876 diff -Nur a/libiberty/lrealpath.c b/libiberty/lrealpath.c
65877 --- a/libiberty/lrealpath.c     2005-05-24 22:48:25.000000000 +0200
65878 +++ b/libiberty/lrealpath.c     2010-01-25 09:50:29.615687242 +0100
65879 @@ -138,6 +138,17 @@
65880    {
65881      char buf[MAX_PATH];
65882      char* basename;
65883 +
65884 +    if (_access (filename, F_OK) != 0)
65885 +      {
65886 +       char cygbuf[MAX_PATH + 1];
65887 +       /* The file does not exist.  It's fine to call lrealpath
65888 +          on a non-existing path... but if this would be an existing
65889 +          path after cygpath conversion, use that instead.  */
65890 +       if (cygpath (filename, cygbuf) && _access (cygbuf, F_OK) == 0)
65891 +         filename = cygbuf;
65892 +      }
65893 +
65894      DWORD len = GetFullPathName (filename, MAX_PATH, buf, &basename);
65895      if (len == 0 || len > MAX_PATH - 1)
65896        return strdup (filename);
65897 diff -Nur a/libiberty/Makefile.in b/libiberty/Makefile.in
65898 --- a/libiberty/Makefile.in     2008-10-22 15:30:19.000000000 +0200
65899 +++ b/libiberty/Makefile.in     2010-01-25 09:50:29.615687242 +0100
65900 @@ -124,7 +124,7 @@
65901  CFILES = alloca.c argv.c asprintf.c atexit.c                           \
65902         basename.c bcmp.c bcopy.c bsearch.c bzero.c                     \
65903         calloc.c choose-temp.c clock.c concat.c cp-demangle.c           \
65904 -        cp-demint.c cplus-dem.c                                        \
65905 +        cp-demint.c cplus-dem.c cygpath.c                              \
65906         dyn-string.c                                                    \
65907         fdmatch.c ffs.c fibheap.c filename_cmp.c floatformat.c          \
65908         fnmatch.c fopen_unlocked.c                                      \
65909 @@ -182,7 +182,7 @@
65910  # maint-missing" and "make check".
65911  CONFIGURED_OFILES = ./asprintf.o ./atexit.o                            \
65912         ./basename.o ./bcmp.o ./bcopy.o ./bsearch.o ./bzero.o           \
65913 -       ./calloc.o ./clock.o ./copysign.o                               \
65914 +       ./calloc.o ./clock.o ./copysign.o ./cygpath.o                   \
65915         ./_doprnt.o                                                     \
65916         ./ffs.o                                                         \
65917         ./getcwd.o ./getpagesize.o ./gettimeofday.o                     \
65918 @@ -619,6 +619,13 @@
65919         else true; fi
65920         $(COMPILE.c) $(srcdir)/cplus-dem.c $(OUTPUT_OPTION)
65921  
65922 +./cygpath.o: $(srcdir)/cygpath.c config.h $(INCDIR)/ansidecl.h \
65923 +       $(INCDIR)/libiberty.h
65924 +       if [ x"$(PICFLAG)" != x ]; then \
65925 +         $(COMPILE.c) $(PICFLAG) $(srcdir)/cygpath.c -o pic/$@; \
65926 +       else true; fi
65927 +       $(COMPILE.c) $(srcdir)/cygpath.c $(OUTPUT_OPTION)
65928 +
65929  ./dyn-string.o: $(srcdir)/dyn-string.c config.h $(INCDIR)/ansidecl.h \
65930         $(INCDIR)/dyn-string.h $(INCDIR)/libiberty.h
65931         if [ x"$(PICFLAG)" != x ]; then \
65932 diff -Nur a/libiberty/pex-win32.c b/libiberty/pex-win32.c
65933 --- a/libiberty/pex-win32.c     2008-08-07 21:30:14.000000000 +0200
65934 +++ b/libiberty/pex-win32.c     2010-01-25 09:50:29.615687242 +0100
65935 @@ -119,7 +119,7 @@
65936  pex_win32_open_read (struct pex_obj *obj ATTRIBUTE_UNUSED, const char *name,
65937                      int binary)
65938  {
65939 -  return _open (name, _O_RDONLY | (binary ? _O_BINARY : _O_TEXT));
65940 +  return open (name, _O_RDONLY | (binary ? _O_BINARY : _O_TEXT));
65941  }
65942  
65943  /* Open a file for writing.  */
65944 @@ -130,10 +130,10 @@
65945  {
65946    /* Note that we can't use O_EXCL here because gcc may have already
65947       created the temporary file via make_temp_file.  */
65948 -  return _open (name,
65949 -               (_O_WRONLY | _O_CREAT | _O_TRUNC
65950 -                | (binary ? _O_BINARY : _O_TEXT)),
65951 -               _S_IREAD | _S_IWRITE);
65952 +  return open (name,
65953 +              (_O_WRONLY | _O_CREAT | _O_TRUNC
65954 +               | (binary ? _O_BINARY : _O_TEXT)),
65955 +              _S_IREAD | _S_IWRITE);
65956  }
65957  
65958  /* Close a file.  */
65959 @@ -746,6 +746,28 @@
65960    OSVERSIONINFO version_info;
65961    STARTUPINFO si;
65962    PROCESS_INFORMATION pi;
65963 +  int orig_out, orig_in, orig_err;
65964 +  BOOL separate_stderr = !(flags & PEX_STDERR_TO_STDOUT);
65965 +
65966 +  /* Ensure we have inheritable descriptors to pass to the child, and close the
65967 +     original descriptors.  */
65968 +  orig_in = in;
65969 +  in = _dup (orig_in);
65970 +  if (orig_in != STDIN_FILENO)
65971 +    _close (orig_in);
65972 +  
65973 +  orig_out = out;
65974 +  out = _dup (orig_out);
65975 +  if (orig_out != STDOUT_FILENO)
65976 +    _close (orig_out);
65977 +  
65978 +  if (separate_stderr)
65979 +    {
65980 +      orig_err = errdes;
65981 +      errdes = _dup (orig_err);
65982 +      if (orig_err != STDERR_FILENO)
65983 +       _close (orig_err);
65984 +    }
65985  
65986    stdin_handle = INVALID_HANDLE_VALUE;
65987    stdout_handle = INVALID_HANDLE_VALUE;
65988 @@ -753,7 +775,7 @@
65989  
65990    stdin_handle = (HANDLE) _get_osfhandle (in);
65991    stdout_handle = (HANDLE) _get_osfhandle (out);
65992 -  if (!(flags & PEX_STDERR_TO_STDOUT))
65993 +  if (separate_stderr)
65994      stderr_handle = (HANDLE) _get_osfhandle (errdes);
65995    else
65996      stderr_handle = stdout_handle;
65997 @@ -822,12 +844,13 @@
65998        *errmsg = "CreateProcess";
65999      }
66000  
66001 -  /* Close the standard output and standard error handles in the
66002 -     parent.  */ 
66003 -  if (out != STDOUT_FILENO)
66004 -    obj->funcs->close (obj, out);
66005 -  if (errdes != STDERR_FILENO)
66006 -    obj->funcs->close (obj, errdes);
66007 +  /* Close the standard input, standard output and standard error handles
66008 +     in the parent.  */ 
66009 +
66010 +  _close (in);
66011 +  _close (out);
66012 +  if (separate_stderr)
66013 +    _close (errdes);
66014  
66015    return pid;
66016  }
66017 @@ -883,7 +906,7 @@
66018  pex_win32_pipe (struct pex_obj *obj ATTRIBUTE_UNUSED, int *p,
66019                 int binary)
66020  {
66021 -  return _pipe (p, 256, binary ? _O_BINARY : _O_TEXT);
66022 +  return _pipe (p, 256, (binary ? _O_BINARY : _O_TEXT) | _O_NOINHERIT);
66023  }
66024  
66025  /* Get a FILE pointer to read from a file descriptor.  */
66026 diff -Nur a/libiberty/testsuite/test-expandargv.c b/libiberty/testsuite/test-expandargv.c
66027 --- a/libiberty/testsuite/test-expandargv.c     2006-01-20 23:55:36.000000000 +0100
66028 +++ b/libiberty/testsuite/test-expandargv.c     2010-01-25 09:50:29.615687242 +0100
66029 @@ -107,6 +107,38 @@
66030    ARGV0,
66031    0,
66032  
66033 +  /* Test 4 - Check for options beginning with an empty line.  */
66034 +  "\na\nb",    /* Test 4 data */
66035 +  ARGV0,
66036 +  "@test-expandargv-4.lst",
66037 +  0,
66038 +  ARGV0,
66039 +  "a",
66040 +  "b",
66041 +  0,
66042 +
66043 +  /* Test 5 - Check for options containing an empty argument.  */
66044 +  "a\n''\nb",    /* Test 5 data */
66045 +  ARGV0,
66046 +  "@test-expandargv-5.lst",
66047 +  0,
66048 +  ARGV0,
66049 +  "a",
66050 +  "",
66051 +  "b",
66052 +  0,
66053 +
66054 +  /* Test 6 - Check for options containing a quoted newline.  */
66055 +  "a\n'a\n\nb'\nb",    /* Test 6 data */
66056 +  ARGV0,
66057 +  "@test-expandargv-6.lst",
66058 +  0,
66059 +  ARGV0,
66060 +  "a",
66061 +  "a\n\nb",
66062 +  "b",
66063 +  0,
66064 +
66065    0 /* Test done marker, don't remove. */
66066  };
66067  
66068 @@ -246,7 +278,7 @@
66069        /* Compare each of the argv's ... */
66070        else
66071          for (k = 0; k < argc_after; k++)
66072 -          if (strncmp (argv_before[k], argv_after[k], strlen(argv_after[k])) != 0)
66073 +          if (strcmp (argv_before[k], argv_after[k]) != 0)
66074              {
66075                printf ("FAIL: test-expandargv-%d. Arguments don't match.\n", i);
66076                failed++;
66077 diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
66078 --- a/libjava/classpath/configure       2009-03-16 13:08:23.000000000 +0100
66079 +++ b/libjava/classpath/configure       2010-01-25 09:50:29.625686976 +0100
66080 @@ -461,7 +461,7 @@
66081  # include <unistd.h>
66082  #endif"
66083  
66084 -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 JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE GENINSRC_TRUE GENINSRC_FALSE multi_basedir INSTALL_BINARIES_TRUE INSTALL_BINARIES_FALSE LIBVERSION CLASSPATH_MODULE CLASSPATH_CONVENIENCE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CREATE_COLLECTIONS_TRUE CREATE_COLLECTIONS_FALSE CREATE_JNI_LIBRARIES_TRUE CREATE_JNI_LIBRARIES_FALSE CREATE_CORE_JNI_LIBRARIES_TRUE CREATE_CORE_JNI_LIBRARIES_FALSE CREATE_GCONF_PEER_LIBRARIES_TRUE CREATE_GCONF_PEER_LIBRARIES_FALSE CREATE_GSTREAMER_PEER_LIBRARIES_TRUE CREATE_GSTREAMER_PEER_LIBRARIES_FALSE default_toolkit CREATE_XMLJ_LIBRARY_TRUE CREATE_XMLJ_LIBRARY_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP CREATE_ALSA_LIBRARIES_TRUE CREATE_ALSA_LIBRARIES_FALSE CREATE_DSSI_LIBRARIES_TRUE CREATE_DSSI_LIBRARIES_FALSE CREATE_GTK_PEER_LIBRARIES_TRUE CREATE_GTK_PEER_LIBRARIES_FALSE CREATE_QT_PEER_LIBRARIES_TRUE CREATE_QT_PEER_LIBRARIES_FALSE CREATE_PLUGIN_TRUE CREATE_PLUGIN_FALSE CREATE_GJDOC_TRUE CREATE_GJDOC_FALSE toolexeclibdir nativeexeclibdir glibjdir CREATE_JNI_HEADERS_TRUE CREATE_JNI_HEADERS_FALSE CREATE_GJDOC_PARSER_TRUE CREATE_GJDOC_PARSER_FALSE CREATE_WRAPPERS_TRUE CREATE_WRAPPERS_FALSE LN_S LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM OBJDUMP ac_ct_OBJDUMP AR ac_ct_AR RANLIB ac_ct_RANLIB lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP PERL COLLECTIONS_PREFIX LIBMAGIC LIBICONV LTLIBICONV WARNING_CFLAGS EXTRA_CFLAGS STRICT_WARNING_CFLAGS ERROR_CFLAGS PKG_CONFIG XML_CFLAGS XML_LIBS XSLT_CFLAGS XSLT_LIBS X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS GTK_CFLAGS GTK_LIBS FREETYPE2_CFLAGS FREETYPE2_LIBS PANGOFT2_CFLAGS PANGOFT2_LIBS CAIRO_CFLAGS CAIRO_LIBS XTEST_LIBS GCONF_CFLAGS GCONF_LIBS GDK_CFLAGS GDK_LIBS GSTREAMER_CFLAGS GSTREAMER_LIBS GSTREAMER_BASE_CFLAGS GSTREAMER_BASE_LIBS GSTREAMER_PLUGINS_BASE_CFLAGS GSTREAMER_PLUGINS_BASE_LIBS GST_PLUGIN_LDFLAGS GSTREAMER_FILE_READER GSTREAMER_MIXER_PROVIDER QT_CFLAGS QT_LIBS MOC MOZILLA_CFLAGS MOZILLA_LIBS GLIB_CFLAGS GLIB_LIBS PLUGIN_DIR GMP_CFLAGS GMP_LIBS USER_JAVAH CLASSPATH_INCLUDES vm_classes MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBDEBUG INIT_LOAD_LIBRARY ECJ_JAR JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION REMOVE MKDIR CP DATE FIND ZIP JAR WITH_JAR_TRUE WITH_JAR_FALSE INSTALL_GLIBJ_ZIP_TRUE INSTALL_GLIBJ_ZIP_FALSE INSTALL_CLASS_FILES_TRUE INSTALL_CLASS_FILES_FALSE BUILD_CLASS_FILES_TRUE BUILD_CLASS_FILES_FALSE EXAMPLESDIR TOOLSDIR GJDOC CREATE_API_DOCS_TRUE CREATE_API_DOCS_FALSE JAY JAY_SKELETON REGEN_PARSERS_TRUE REGEN_PARSERS_FALSE USE_PREBUILT_GLIBJ_ZIP_TRUE USE_PREBUILT_GLIBJ_ZIP_FALSE PATH_TO_GLIBJ_ZIP JAVA uudecode JAVAC JAVAC_IS_GCJ GCJ_JAVAC_TRUE GCJ_JAVAC_FALSE ANTLR_JAR ANTLR ac_ct_ANTLR JAVAC_MEM_OPT USE_ESCHER_TRUE USE_ESCHER_FALSE PATH_TO_ESCHER ENABLE_LOCAL_SOCKETS_TRUE ENABLE_LOCAL_SOCKETS_FALSE DEFAULT_PREFS_PEER WANT_NATIVE_BIG_INTEGER CREATE_GMPBI_LIBRARY_TRUE CREATE_GMPBI_LIBRARY_FALSE LIBOBJS LTLIBOBJS'
66085 +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 JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE GENINSRC_TRUE GENINSRC_FALSE multi_basedir INSTALL_BINARIES_TRUE INSTALL_BINARIES_FALSE LIBVERSION CLASSPATH_MODULE CLASSPATH_CONVENIENCE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CREATE_COLLECTIONS_TRUE CREATE_COLLECTIONS_FALSE CREATE_JNI_LIBRARIES_TRUE CREATE_JNI_LIBRARIES_FALSE CREATE_CORE_JNI_LIBRARIES_TRUE CREATE_CORE_JNI_LIBRARIES_FALSE CREATE_GCONF_PEER_LIBRARIES_TRUE CREATE_GCONF_PEER_LIBRARIES_FALSE CREATE_GSTREAMER_PEER_LIBRARIES_TRUE CREATE_GSTREAMER_PEER_LIBRARIES_FALSE default_toolkit CREATE_XMLJ_LIBRARY_TRUE CREATE_XMLJ_LIBRARY_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP CREATE_ALSA_LIBRARIES_TRUE CREATE_ALSA_LIBRARIES_FALSE CREATE_DSSI_LIBRARIES_TRUE CREATE_DSSI_LIBRARIES_FALSE CREATE_GTK_PEER_LIBRARIES_TRUE CREATE_GTK_PEER_LIBRARIES_FALSE CREATE_QT_PEER_LIBRARIES_TRUE CREATE_QT_PEER_LIBRARIES_FALSE CREATE_PLUGIN_TRUE CREATE_PLUGIN_FALSE CREATE_GJDOC_TRUE CREATE_GJDOC_FALSE target_noncanonical toolexecdir toolexecmainlibdir toolexeclibdir nativeexeclibdir glibjdir CREATE_JNI_HEADERS_TRUE CREATE_JNI_HEADERS_FALSE CREATE_GJDOC_PARSER_TRUE CREATE_GJDOC_PARSER_FALSE CREATE_WRAPPERS_TRUE CREATE_WRAPPERS_FALSE LN_S LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM OBJDUMP ac_ct_OBJDUMP AR ac_ct_AR RANLIB ac_ct_RANLIB lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP PERL COLLECTIONS_PREFIX LIBMAGIC LIBICONV LTLIBICONV WARNING_CFLAGS EXTRA_CFLAGS STRICT_WARNING_CFLAGS ERROR_CFLAGS PKG_CONFIG XML_CFLAGS XML_LIBS XSLT_CFLAGS XSLT_LIBS X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS GTK_CFLAGS GTK_LIBS FREETYPE2_CFLAGS FREETYPE2_LIBS PANGOFT2_CFLAGS PANGOFT2_LIBS CAIRO_CFLAGS CAIRO_LIBS XTEST_LIBS GCONF_CFLAGS GCONF_LIBS GDK_CFLAGS GDK_LIBS GSTREAMER_CFLAGS GSTREAMER_LIBS GSTREAMER_BASE_CFLAGS GSTREAMER_BASE_LIBS GSTREAMER_PLUGINS_BASE_CFLAGS GSTREAMER_PLUGINS_BASE_LIBS GST_PLUGIN_LDFLAGS GSTREAMER_FILE_READER GSTREAMER_MIXER_PROVIDER QT_CFLAGS QT_LIBS MOC MOZILLA_CFLAGS MOZILLA_LIBS GLIB_CFLAGS GLIB_LIBS PLUGIN_DIR GMP_CFLAGS GMP_LIBS USER_JAVAH CLASSPATH_INCLUDES vm_classes MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBDEBUG INIT_LOAD_LIBRARY ECJ_JAR JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION REMOVE MKDIR CP DATE FIND ZIP JAR WITH_JAR_TRUE WITH_JAR_FALSE INSTALL_GLIBJ_ZIP_TRUE INSTALL_GLIBJ_ZIP_FALSE INSTALL_CLASS_FILES_TRUE INSTALL_CLASS_FILES_FALSE BUILD_CLASS_FILES_TRUE BUILD_CLASS_FILES_FALSE EXAMPLESDIR TOOLSDIR GJDOC CREATE_API_DOCS_TRUE CREATE_API_DOCS_FALSE JAY JAY_SKELETON REGEN_PARSERS_TRUE REGEN_PARSERS_FALSE USE_PREBUILT_GLIBJ_ZIP_TRUE USE_PREBUILT_GLIBJ_ZIP_FALSE PATH_TO_GLIBJ_ZIP JAVA uudecode JAVAC JAVAC_IS_GCJ GCJ_JAVAC_TRUE GCJ_JAVAC_FALSE ANTLR_JAR ANTLR ac_ct_ANTLR JAVAC_MEM_OPT USE_ESCHER_TRUE USE_ESCHER_FALSE PATH_TO_ESCHER ENABLE_LOCAL_SOCKETS_TRUE ENABLE_LOCAL_SOCKETS_FALSE DEFAULT_PREFS_PEER WANT_NATIVE_BIG_INTEGER CREATE_GMPBI_LIBRARY_TRUE CREATE_GMPBI_LIBRARY_FALSE LIBOBJS LTLIBOBJS'
66086  ac_subst_files=''
66087  ac_pwd=`pwd`
66088  
66089 @@ -1063,6 +1063,9 @@
66090                            (disabled by --disable-gmp) default=yes
66091    --disable-gjdoc         compile GJDoc (disabled by --disable-gjdoc)
66092                            default=yes
66093 +  --enable-version-specific-runtime-libs
66094 +                          specify that runtime libraries should be installed
66095 +                          in a compiler-specific directory
66096    --enable-regen-headers  automatically regenerate JNI headers default=yes if
66097                            headers don't exist
66098    --enable-regen-gjdoc-parser
66099 @@ -4838,11 +4841,57 @@
66100  fi
66101  
66102  
66103 +# Check whether --enable-version-specific-runtime-libs or --disable-version-specific-runtime-libs was given.
66104 +if test "${enable_version_specific_runtime_libs+set}" = set; then
66105 +  enableval="$enable_version_specific_runtime_libs"
66106 +  case "$enableval" in
66107 +      yes) version_specific_libs=yes ;;
66108 +      no)  version_specific_libs=no ;;
66109 +      *)   { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable version-specific libs" >&5
66110 +echo "$as_me: error: Unknown argument to enable/disable version-specific libs" >&2;}
66111 +   { (exit 1); exit 1; }; };;
66112 +     esac
66113 +else
66114 +  version_specific_libs=no
66115 +
66116 +fi;
66117 +
66118 +  case ${host_alias} in
66119 +    "") host_noncanonical=${build_noncanonical} ;;
66120 +    *) host_noncanonical=${host_alias} ;;
66121 +  esac
66122 +  case ${target_alias} in
66123 +    "") target_noncanonical=${host_noncanonical} ;;
66124 +    *) target_noncanonical=${target_alias} ;;
66125 +  esac
66126 +
66127  
66128 -  multi_os_directory=`$CC -print-multi-os-directory`
66129 -  case $multi_os_directory in
66130 -    .) toolexeclibdir=${libdir} ;; # Avoid trailing /.
66131 -    *) toolexeclibdir=${libdir}/${multi_os_directory} ;;
66132 +  case ${version_specific_libs} in
66133 +    yes)
66134 +      # Need the gcc compiler version to know where to install libraries
66135 +      # and header files if --enable-version-specific-runtime-libs option
66136 +      # is selected.
66137 +      includedir='$(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include/'
66138 +      toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
66139 +      toolexecmainlibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
66140 +      toolexeclibdir=$toolexecmainlibdir
66141 +      ;;
66142 +    no)
66143 +      if test -n "$with_cross_host" &&
66144 +        test x"$with_cross_host" != x"no"; then
66145 +       # Install a library built with a cross compiler in tooldir, not libdir.
66146 +       toolexecdir='$(exec_prefix)/$(target_noncanonical)'
66147 +       toolexecmainlibdir='$(toolexecdir)/lib'
66148 +      else
66149 +       toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
66150 +       toolexecmainlibdir='$(libdir)'
66151 +      fi
66152 +      multi_os_directory=`$CC -print-multi-os-directory`
66153 +      case $multi_os_directory in
66154 +       .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /.
66155 +       *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;;
66156 +      esac
66157 +      ;;
66158    esac
66159  
66160  
66161 @@ -5753,13 +5802,13 @@
66162  else
66163    lt_cv_nm_interface="BSD nm"
66164    echo "int some_variable = 0;" > conftest.$ac_ext
66165 -  (eval echo "\"\$as_me:5756: $ac_compile\"" >&5)
66166 +  (eval echo "\"\$as_me:5807: $ac_compile\"" >&5)
66167    (eval "$ac_compile" 2>conftest.err)
66168    cat conftest.err >&5
66169 -  (eval echo "\"\$as_me:5759: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
66170 +  (eval echo "\"\$as_me:5810: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
66171    (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
66172    cat conftest.err >&5
66173 -  (eval echo "\"\$as_me:5762: output\"" >&5)
66174 +  (eval echo "\"\$as_me:5813: output\"" >&5)
66175    cat conftest.out >&5
66176    if $GREP 'External.*some_variable' conftest.out > /dev/null; then
66177      lt_cv_nm_interface="MS dumpbin"
66178 @@ -6905,7 +6954,7 @@
66179    ;;
66180  *-*-irix6*)
66181    # Find out which ABI we are using.
66182 -  echo '#line 6908 "configure"' > conftest.$ac_ext
66183 +  echo '#line 6959 "configure"' > conftest.$ac_ext
66184    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
66185    (eval $ac_compile) 2>&5
66186    ac_status=$?
66187 @@ -8191,11 +8240,11 @@
66188     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
66189     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
66190     -e 's:$: $lt_compiler_flag:'`
66191 -   (eval echo "\"\$as_me:8194: $lt_compile\"" >&5)
66192 +   (eval echo "\"\$as_me:8245: $lt_compile\"" >&5)
66193     (eval "$lt_compile" 2>conftest.err)
66194     ac_status=$?
66195     cat conftest.err >&5
66196 -   echo "$as_me:8198: \$? = $ac_status" >&5
66197 +   echo "$as_me:8249: \$? = $ac_status" >&5
66198     if (exit $ac_status) && test -s "$ac_outfile"; then
66199       # The compiler can only warn and ignore the option if not recognized
66200       # So say no if there are warnings other than the usual output.
66201 @@ -8530,11 +8579,11 @@
66202     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
66203     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
66204     -e 's:$: $lt_compiler_flag:'`
66205 -   (eval echo "\"\$as_me:8533: $lt_compile\"" >&5)
66206 +   (eval echo "\"\$as_me:8584: $lt_compile\"" >&5)
66207     (eval "$lt_compile" 2>conftest.err)
66208     ac_status=$?
66209     cat conftest.err >&5
66210 -   echo "$as_me:8537: \$? = $ac_status" >&5
66211 +   echo "$as_me:8588: \$? = $ac_status" >&5
66212     if (exit $ac_status) && test -s "$ac_outfile"; then
66213       # The compiler can only warn and ignore the option if not recognized
66214       # So say no if there are warnings other than the usual output.
66215 @@ -8635,11 +8684,11 @@
66216     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
66217     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
66218     -e 's:$: $lt_compiler_flag:'`
66219 -   (eval echo "\"\$as_me:8638: $lt_compile\"" >&5)
66220 +   (eval echo "\"\$as_me:8689: $lt_compile\"" >&5)
66221     (eval "$lt_compile" 2>out/conftest.err)
66222     ac_status=$?
66223     cat out/conftest.err >&5
66224 -   echo "$as_me:8642: \$? = $ac_status" >&5
66225 +   echo "$as_me:8693: \$? = $ac_status" >&5
66226     if (exit $ac_status) && test -s out/conftest2.$ac_objext
66227     then
66228       # The compiler can only warn and ignore the option if not recognized
66229 @@ -8690,11 +8739,11 @@
66230     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
66231     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
66232     -e 's:$: $lt_compiler_flag:'`
66233 -   (eval echo "\"\$as_me:8693: $lt_compile\"" >&5)
66234 +   (eval echo "\"\$as_me:8744: $lt_compile\"" >&5)
66235     (eval "$lt_compile" 2>out/conftest.err)
66236     ac_status=$?
66237     cat out/conftest.err >&5
66238 -   echo "$as_me:8697: \$? = $ac_status" >&5
66239 +   echo "$as_me:8748: \$? = $ac_status" >&5
66240     if (exit $ac_status) && test -s out/conftest2.$ac_objext
66241     then
66242       # The compiler can only warn and ignore the option if not recognized
66243 @@ -11557,7 +11606,7 @@
66244    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
66245    lt_status=$lt_dlunknown
66246    cat > conftest.$ac_ext <<_LT_EOF
66247 -#line 11560 "configure"
66248 +#line 11611 "configure"
66249  #include "confdefs.h"
66250  
66251  #if HAVE_DLFCN_H
66252 @@ -11653,7 +11702,7 @@
66253    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
66254    lt_status=$lt_dlunknown
66255    cat > conftest.$ac_ext <<_LT_EOF
66256 -#line 11656 "configure"
66257 +#line 11707 "configure"
66258  #include "confdefs.h"
66259  
66260  #if HAVE_DLFCN_H
66261 @@ -16084,11 +16133,11 @@
66262     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
66263     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
66264     -e 's:$: $lt_compiler_flag:'`
66265 -   (eval echo "\"\$as_me:16087: $lt_compile\"" >&5)
66266 +   (eval echo "\"\$as_me:16138: $lt_compile\"" >&5)
66267     (eval "$lt_compile" 2>conftest.err)
66268     ac_status=$?
66269     cat conftest.err >&5
66270 -   echo "$as_me:16091: \$? = $ac_status" >&5
66271 +   echo "$as_me:16142: \$? = $ac_status" >&5
66272     if (exit $ac_status) && test -s "$ac_outfile"; then
66273       # The compiler can only warn and ignore the option if not recognized
66274       # So say no if there are warnings other than the usual output.
66275 @@ -16183,11 +16232,11 @@
66276     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
66277     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
66278     -e 's:$: $lt_compiler_flag:'`
66279 -   (eval echo "\"\$as_me:16186: $lt_compile\"" >&5)
66280 +   (eval echo "\"\$as_me:16237: $lt_compile\"" >&5)
66281     (eval "$lt_compile" 2>out/conftest.err)
66282     ac_status=$?
66283     cat out/conftest.err >&5
66284 -   echo "$as_me:16190: \$? = $ac_status" >&5
66285 +   echo "$as_me:16241: \$? = $ac_status" >&5
66286     if (exit $ac_status) && test -s out/conftest2.$ac_objext
66287     then
66288       # The compiler can only warn and ignore the option if not recognized
66289 @@ -16235,11 +16284,11 @@
66290     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
66291     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
66292     -e 's:$: $lt_compiler_flag:'`
66293 -   (eval echo "\"\$as_me:16238: $lt_compile\"" >&5)
66294 +   (eval echo "\"\$as_me:16289: $lt_compile\"" >&5)
66295     (eval "$lt_compile" 2>out/conftest.err)
66296     ac_status=$?
66297     cat out/conftest.err >&5
66298 -   echo "$as_me:16242: \$? = $ac_status" >&5
66299 +   echo "$as_me:16293: \$? = $ac_status" >&5
66300     if (exit $ac_status) && test -s out/conftest2.$ac_objext
66301     then
66302       # The compiler can only warn and ignore the option if not recognized
66303 @@ -29270,7 +29319,7 @@
66304  if uudecode$EXEEXT Test.uue; then
66305          ac_cv_prog_uudecode_base64=yes
66306  else
66307 -        echo "configure: 29273: uudecode had trouble decoding base 64 file 'Test.uue'" >&5
66308 +        echo "configure: 29324: uudecode had trouble decoding base 64 file 'Test.uue'" >&5
66309          echo "configure: failed file was:" >&5
66310          cat Test.uue >&5
66311          ac_cv_prog_uudecode_base64=no
66312 @@ -29417,7 +29466,7 @@
66313  JAVA_TEST=Object.java
66314  CLASS_TEST=Object.class
66315  cat << \EOF > $JAVA_TEST
66316 -/* #line 29420 "configure" */
66317 +/* #line 29471 "configure" */
66318  package java.lang;
66319  
66320  public class Object
66321 @@ -29466,7 +29515,7 @@
66322  CLASS_TEST=Test.class
66323  TEST=Test
66324  cat << \EOF > $JAVA_TEST
66325 -/* [#]line 29469 "configure" */
66326 +/* [#]line 29520 "configure" */
66327  public class Test {
66328  public static void main (String args[]) {
66329          System.exit (0);
66330 @@ -29786,7 +29835,7 @@
66331  JAVA_TEST=Object.java
66332  CLASS_TEST=Object.class
66333  cat << \EOF > $JAVA_TEST
66334 -/* #line 29789 "configure" */
66335 +/* #line 29840 "configure" */
66336  package java.lang;
66337  
66338  public class Object
66339 @@ -29827,7 +29876,7 @@
66340    JAVA_TEST=Test.java
66341    CLASS_TEST=Test.class
66342    cat << \EOF > $JAVA_TEST
66343 -  /* #line 29830 "configure" */
66344 +  /* #line 29881 "configure" */
66345    public class Test
66346    {
66347      public static void main(String args)
66348 @@ -31681,6 +31730,9 @@
66349  s,@CREATE_PLUGIN_FALSE@,$CREATE_PLUGIN_FALSE,;t t
66350  s,@CREATE_GJDOC_TRUE@,$CREATE_GJDOC_TRUE,;t t
66351  s,@CREATE_GJDOC_FALSE@,$CREATE_GJDOC_FALSE,;t t
66352 +s,@target_noncanonical@,$target_noncanonical,;t t
66353 +s,@toolexecdir@,$toolexecdir,;t t
66354 +s,@toolexecmainlibdir@,$toolexecmainlibdir,;t t
66355  s,@toolexeclibdir@,$toolexeclibdir,;t t
66356  s,@nativeexeclibdir@,$nativeexeclibdir,;t t
66357  s,@glibjdir@,$glibjdir,;t t
66358 diff -Nur a/libjava/classpath/configure.ac b/libjava/classpath/configure.ac
66359 --- a/libjava/classpath/configure.ac    2009-03-16 13:08:23.000000000 +0100
66360 +++ b/libjava/classpath/configure.ac    2010-01-25 09:50:29.625686976 +0100
66361 @@ -316,6 +316,16 @@
66362  dnl so that we can refer to the multilib installation directories from
66363  dnl classpath's build files.
66364  dnl -----------------------------------------------------------
66365 +AC_ARG_ENABLE(version-specific-runtime-libs,
66366 +  AS_HELP_STRING([--enable-version-specific-runtime-libs],    
66367 +                 [specify that runtime libraries should be installed in a compiler-specific directory]),
66368 +    [case "$enableval" in
66369 +      yes) version_specific_libs=yes ;;
66370 +      no)  version_specific_libs=no ;;
66371 +      *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
66372 +     esac],
66373 +    [version_specific_libs=no]
66374 +)
66375  CLASSPATH_TOOLEXECLIBDIR
66376  
66377  dnl -----------------------------------------------------------
66378 diff -Nur a/libjava/classpath/doc/api/Makefile.in b/libjava/classpath/doc/api/Makefile.in
66379 --- a/libjava/classpath/doc/api/Makefile.in     2008-11-12 21:55:13.000000000 +0100
66380 +++ b/libjava/classpath/doc/api/Makefile.in     2010-01-25 09:50:29.625686976 +0100
66381 @@ -334,9 +334,12 @@
66382  target = @target@
66383  target_alias = @target_alias@
66384  target_cpu = @target_cpu@
66385 +target_noncanonical = @target_noncanonical@
66386  target_os = @target_os@
66387  target_vendor = @target_vendor@
66388 +toolexecdir = @toolexecdir@
66389  toolexeclibdir = @toolexeclibdir@
66390 +toolexecmainlibdir = @toolexecmainlibdir@
66391  uudecode = @uudecode@
66392  vm_classes = @vm_classes@
66393  @CREATE_API_DOCS_TRUE@noinst_DATA = html
66394 diff -Nur a/libjava/classpath/doc/Makefile.in b/libjava/classpath/doc/Makefile.in
66395 --- a/libjava/classpath/doc/Makefile.in 2008-11-12 21:55:13.000000000 +0100
66396 +++ b/libjava/classpath/doc/Makefile.in 2010-01-25 09:50:29.625686976 +0100
66397 @@ -357,9 +357,12 @@
66398  target = @target@
66399  target_alias = @target_alias@
66400  target_cpu = @target_cpu@
66401 +target_noncanonical = @target_noncanonical@
66402  target_os = @target_os@
66403  target_vendor = @target_vendor@
66404 +toolexecdir = @toolexecdir@
66405  toolexeclibdir = @toolexeclibdir@
66406 +toolexecmainlibdir = @toolexecmainlibdir@
66407  uudecode = @uudecode@
66408  vm_classes = @vm_classes@
66409  SUBDIRS = api
66410 diff -Nur a/libjava/classpath/examples/Makefile.in b/libjava/classpath/examples/Makefile.in
66411 --- a/libjava/classpath/examples/Makefile.in    2008-11-12 21:55:13.000000000 +0100
66412 +++ b/libjava/classpath/examples/Makefile.in    2010-01-25 09:50:29.625686976 +0100
66413 @@ -343,9 +343,12 @@
66414  target = @target@
66415  target_alias = @target_alias@
66416  target_cpu = @target_cpu@
66417 +target_noncanonical = @target_noncanonical@
66418  target_os = @target_os@
66419  target_vendor = @target_vendor@
66420 +toolexecdir = @toolexecdir@
66421  toolexeclibdir = @toolexeclibdir@
66422 +toolexecmainlibdir = @toolexecmainlibdir@
66423  uudecode = @uudecode@
66424  vm_classes = @vm_classes@
66425  GLIBJ_CLASSPATH = '$(top_builddir)/lib/glibj.zip:$(top_builddir)/lib'
66426 diff -Nur a/libjava/classpath/external/jsr166/Makefile.in b/libjava/classpath/external/jsr166/Makefile.in
66427 --- a/libjava/classpath/external/jsr166/Makefile.in     2008-11-12 21:55:13.000000000 +0100
66428 +++ b/libjava/classpath/external/jsr166/Makefile.in     2010-01-25 09:50:29.625686976 +0100
66429 @@ -332,9 +332,12 @@
66430  target = @target@
66431  target_alias = @target_alias@
66432  target_cpu = @target_cpu@
66433 +target_noncanonical = @target_noncanonical@
66434  target_os = @target_os@
66435  target_vendor = @target_vendor@
66436 +toolexecdir = @toolexecdir@
66437  toolexeclibdir = @toolexeclibdir@
66438 +toolexecmainlibdir = @toolexecmainlibdir@
66439  uudecode = @uudecode@
66440  vm_classes = @vm_classes@
66441  EXTRA_DIST = IMPORTING \
66442 diff -Nur a/libjava/classpath/external/Makefile.in b/libjava/classpath/external/Makefile.in
66443 --- a/libjava/classpath/external/Makefile.in    2008-11-12 21:55:13.000000000 +0100
66444 +++ b/libjava/classpath/external/Makefile.in    2010-01-25 09:50:29.625686976 +0100
66445 @@ -341,9 +341,12 @@
66446  target = @target@
66447  target_alias = @target_alias@
66448  target_cpu = @target_cpu@
66449 +target_noncanonical = @target_noncanonical@
66450  target_os = @target_os@
66451  target_vendor = @target_vendor@
66452 +toolexecdir = @toolexecdir@
66453  toolexeclibdir = @toolexeclibdir@
66454 +toolexecmainlibdir = @toolexecmainlibdir@
66455  uudecode = @uudecode@
66456  vm_classes = @vm_classes@
66457  SUBDIRS = sax w3c_dom relaxngDatatype jsr166
66458 diff -Nur a/libjava/classpath/external/relaxngDatatype/Makefile.in b/libjava/classpath/external/relaxngDatatype/Makefile.in
66459 --- a/libjava/classpath/external/relaxngDatatype/Makefile.in    2008-11-12 21:55:13.000000000 +0100
66460 +++ b/libjava/classpath/external/relaxngDatatype/Makefile.in    2010-01-25 09:50:29.625686976 +0100
66461 @@ -332,9 +332,12 @@
66462  target = @target@
66463  target_alias = @target_alias@
66464  target_cpu = @target_cpu@
66465 +target_noncanonical = @target_noncanonical@
66466  target_os = @target_os@
66467  target_vendor = @target_vendor@
66468 +toolexecdir = @toolexecdir@
66469  toolexeclibdir = @toolexeclibdir@
66470 +toolexecmainlibdir = @toolexecmainlibdir@
66471  uudecode = @uudecode@
66472  vm_classes = @vm_classes@
66473  EXTRA_DIST = README.txt \
66474 diff -Nur a/libjava/classpath/external/sax/Makefile.in b/libjava/classpath/external/sax/Makefile.in
66475 --- a/libjava/classpath/external/sax/Makefile.in        2008-11-12 21:55:13.000000000 +0100
66476 +++ b/libjava/classpath/external/sax/Makefile.in        2010-01-25 09:50:29.625686976 +0100
66477 @@ -332,9 +332,12 @@
66478  target = @target@
66479  target_alias = @target_alias@
66480  target_cpu = @target_cpu@
66481 +target_noncanonical = @target_noncanonical@
66482  target_os = @target_os@
66483  target_vendor = @target_vendor@
66484 +toolexecdir = @toolexecdir@
66485  toolexeclibdir = @toolexeclibdir@
66486 +toolexecmainlibdir = @toolexecmainlibdir@
66487  uudecode = @uudecode@
66488  vm_classes = @vm_classes@
66489  EXTRA_DIST = README \
66490 diff -Nur a/libjava/classpath/external/w3c_dom/Makefile.in b/libjava/classpath/external/w3c_dom/Makefile.in
66491 --- a/libjava/classpath/external/w3c_dom/Makefile.in    2008-11-12 21:55:13.000000000 +0100
66492 +++ b/libjava/classpath/external/w3c_dom/Makefile.in    2010-01-25 09:50:29.625686976 +0100
66493 @@ -332,9 +332,12 @@
66494  target = @target@
66495  target_alias = @target_alias@
66496  target_cpu = @target_cpu@
66497 +target_noncanonical = @target_noncanonical@
66498  target_os = @target_os@
66499  target_vendor = @target_vendor@
66500 +toolexecdir = @toolexecdir@
66501  toolexeclibdir = @toolexeclibdir@
66502 +toolexecmainlibdir = @toolexecmainlibdir@
66503  uudecode = @uudecode@
66504  vm_classes = @vm_classes@
66505  EXTRA_DIST = README \
66506 diff -Nur a/libjava/classpath/include/Makefile.in b/libjava/classpath/include/Makefile.in
66507 --- a/libjava/classpath/include/Makefile.in     2008-11-12 21:55:13.000000000 +0100
66508 +++ b/libjava/classpath/include/Makefile.in     2010-01-25 09:50:29.625686976 +0100
66509 @@ -333,9 +333,12 @@
66510  target = @target@
66511  target_alias = @target_alias@
66512  target_cpu = @target_cpu@
66513 +target_noncanonical = @target_noncanonical@
66514  target_os = @target_os@
66515  target_vendor = @target_vendor@
66516 +toolexecdir = @toolexecdir@
66517  toolexeclibdir = @toolexeclibdir@
66518 +toolexecmainlibdir = @toolexecmainlibdir@
66519  uudecode = @uudecode@
66520  vm_classes = @vm_classes@
66521  @CREATE_JNI_HEADERS_FALSE@DISTCLEANFILES = jni_md.h config-int.h
66522 diff -Nur a/libjava/classpath/lib/Makefile.in b/libjava/classpath/lib/Makefile.in
66523 --- a/libjava/classpath/lib/Makefile.in 2008-11-12 21:55:13.000000000 +0100
66524 +++ b/libjava/classpath/lib/Makefile.in 2010-01-25 09:50:29.625686976 +0100
66525 @@ -337,9 +337,12 @@
66526  target = @target@
66527  target_alias = @target_alias@
66528  target_cpu = @target_cpu@
66529 +target_noncanonical = @target_noncanonical@
66530  target_os = @target_os@
66531  target_vendor = @target_vendor@
66532 +toolexecdir = @toolexecdir@
66533  toolexeclibdir = @toolexeclibdir@
66534 +toolexecmainlibdir = @toolexecmainlibdir@
66535  uudecode = @uudecode@
66536  vm_classes = @vm_classes@
66537  JAVA_DEPEND = java.dep
66538 diff -Nur a/libjava/classpath/m4/acinclude.m4 b/libjava/classpath/m4/acinclude.m4
66539 --- a/libjava/classpath/m4/acinclude.m4 2008-10-21 19:55:01.000000000 +0200
66540 +++ b/libjava/classpath/m4/acinclude.m4 2010-01-25 09:50:29.625686976 +0100
66541 @@ -247,11 +247,45 @@
66542  dnl -----------------------------------------------------------
66543  AC_DEFUN([CLASSPATH_TOOLEXECLIBDIR],
66544  [
66545 -  multi_os_directory=`$CC -print-multi-os-directory`
66546 -  case $multi_os_directory in
66547 -    .) toolexeclibdir=${libdir} ;; # Avoid trailing /.
66548 -    *) toolexeclibdir=${libdir}/${multi_os_directory} ;;
66549 +  case ${host_alias} in
66550 +    "") host_noncanonical=${build_noncanonical} ;;
66551 +    *) host_noncanonical=${host_alias} ;;
66552    esac
66553 +  case ${target_alias} in
66554 +    "") target_noncanonical=${host_noncanonical} ;;
66555 +    *) target_noncanonical=${target_alias} ;;
66556 +  esac
66557 +  AC_SUBST(target_noncanonical)
66558 +
66559 +  case ${version_specific_libs} in
66560 +    yes)
66561 +      # Need the gcc compiler version to know where to install libraries
66562 +      # and header files if --enable-version-specific-runtime-libs option
66563 +      # is selected.
66564 +      includedir='$(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include/'
66565 +      toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
66566 +      toolexecmainlibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
66567 +      toolexeclibdir=$toolexecmainlibdir
66568 +      ;;
66569 +    no)
66570 +      if test -n "$with_cross_host" &&
66571 +        test x"$with_cross_host" != x"no"; then
66572 +       # Install a library built with a cross compiler in tooldir, not libdir.
66573 +       toolexecdir='$(exec_prefix)/$(target_noncanonical)'
66574 +       toolexecmainlibdir='$(toolexecdir)/lib'
66575 +      else
66576 +       toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
66577 +       toolexecmainlibdir='$(libdir)'
66578 +      fi
66579 +      multi_os_directory=`$CC -print-multi-os-directory`
66580 +      case $multi_os_directory in
66581 +       .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /.
66582 +       *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;;
66583 +      esac
66584 +      ;;
66585 +  esac
66586 +  AC_SUBST(toolexecdir)
66587 +  AC_SUBST(toolexecmainlibdir)
66588    AC_SUBST(toolexeclibdir)
66589  ])
66590  
66591 diff -Nur a/libjava/classpath/Makefile.in b/libjava/classpath/Makefile.in
66592 --- a/libjava/classpath/Makefile.in     2009-02-25 22:40:28.000000000 +0100
66593 +++ b/libjava/classpath/Makefile.in     2010-01-25 09:50:29.625686976 +0100
66594 @@ -380,9 +380,12 @@
66595  target = @target@
66596  target_alias = @target_alias@
66597  target_cpu = @target_cpu@
66598 +target_noncanonical = @target_noncanonical@
66599  target_os = @target_os@
66600  target_vendor = @target_vendor@
66601 +toolexecdir = @toolexecdir@
66602  toolexeclibdir = @toolexeclibdir@
66603 +toolexecmainlibdir = @toolexecmainlibdir@
66604  uudecode = @uudecode@
66605  vm_classes = @vm_classes@
66606  
66607 diff -Nur a/libjava/classpath/native/fdlibm/Makefile.in b/libjava/classpath/native/fdlibm/Makefile.in
66608 --- a/libjava/classpath/native/fdlibm/Makefile.in       2008-11-12 21:55:13.000000000 +0100
66609 +++ b/libjava/classpath/native/fdlibm/Makefile.in       2010-01-25 09:50:29.625686976 +0100
66610 @@ -359,9 +359,12 @@
66611  target = @target@
66612  target_alias = @target_alias@
66613  target_cpu = @target_cpu@
66614 +target_noncanonical = @target_noncanonical@
66615  target_os = @target_os@
66616  target_vendor = @target_vendor@
66617 +toolexecdir = @toolexecdir@
66618  toolexeclibdir = @toolexeclibdir@
66619 +toolexecmainlibdir = @toolexecmainlibdir@
66620  uudecode = @uudecode@
66621  vm_classes = @vm_classes@
66622  noinst_LTLIBRARIES = libfdlibm.la 
66623 diff -Nur a/libjava/classpath/native/jawt/Makefile.in b/libjava/classpath/native/jawt/Makefile.in
66624 --- a/libjava/classpath/native/jawt/Makefile.in 2008-11-12 21:55:13.000000000 +0100
66625 +++ b/libjava/classpath/native/jawt/Makefile.in 2010-01-25 09:50:29.625686976 +0100
66626 @@ -359,9 +359,12 @@
66627  target = @target@
66628  target_alias = @target_alias@
66629  target_cpu = @target_cpu@
66630 +target_noncanonical = @target_noncanonical@
66631  target_os = @target_os@
66632  target_vendor = @target_vendor@
66633 +toolexecdir = @toolexecdir@
66634  toolexeclibdir = @toolexeclibdir@
66635 +toolexecmainlibdir = @toolexecmainlibdir@
66636  uudecode = @uudecode@
66637  vm_classes = @vm_classes@
66638  nativeexeclib_LTLIBRARIES = libjawt.la
66639 diff -Nur a/libjava/classpath/native/jni/classpath/Makefile.in b/libjava/classpath/native/jni/classpath/Makefile.in
66640 --- a/libjava/classpath/native/jni/classpath/Makefile.in        2008-11-12 21:55:13.000000000 +0100
66641 +++ b/libjava/classpath/native/jni/classpath/Makefile.in        2010-01-25 09:50:29.625686976 +0100
66642 @@ -350,9 +350,12 @@
66643  target = @target@
66644  target_alias = @target_alias@
66645  target_cpu = @target_cpu@
66646 +target_noncanonical = @target_noncanonical@
66647  target_os = @target_os@
66648  target_vendor = @target_vendor@
66649 +toolexecdir = @toolexecdir@
66650  toolexeclibdir = @toolexeclibdir@
66651 +toolexecmainlibdir = @toolexecmainlibdir@
66652  uudecode = @uudecode@
66653  vm_classes = @vm_classes@
66654  
66655 diff -Nur a/libjava/classpath/native/jni/gconf-peer/Makefile.in b/libjava/classpath/native/jni/gconf-peer/Makefile.in
66656 --- a/libjava/classpath/native/jni/gconf-peer/Makefile.in       2008-11-12 21:55:13.000000000 +0100
66657 +++ b/libjava/classpath/native/jni/gconf-peer/Makefile.in       2010-01-25 09:50:29.625686976 +0100
66658 @@ -359,9 +359,12 @@
66659  target = @target@
66660  target_alias = @target_alias@
66661  target_cpu = @target_cpu@
66662 +target_noncanonical = @target_noncanonical@
66663  target_os = @target_os@
66664  target_vendor = @target_vendor@
66665 +toolexecdir = @toolexecdir@
66666  toolexeclibdir = @toolexeclibdir@
66667 +toolexecmainlibdir = @toolexecmainlibdir@
66668  uudecode = @uudecode@
66669  vm_classes = @vm_classes@
66670  nativeexeclib_LTLIBRARIES = libgconfpeer.la
66671 diff -Nur a/libjava/classpath/native/jni/gstreamer-peer/Makefile.in b/libjava/classpath/native/jni/gstreamer-peer/Makefile.in
66672 --- a/libjava/classpath/native/jni/gstreamer-peer/Makefile.in   2008-11-12 21:55:13.000000000 +0100
66673 +++ b/libjava/classpath/native/jni/gstreamer-peer/Makefile.in   2010-01-25 09:50:29.625686976 +0100
66674 @@ -361,9 +361,12 @@
66675  target = @target@
66676  target_alias = @target_alias@
66677  target_cpu = @target_cpu@
66678 +target_noncanonical = @target_noncanonical@
66679  target_os = @target_os@
66680  target_vendor = @target_vendor@
66681 +toolexecdir = @toolexecdir@
66682  toolexeclibdir = @toolexeclibdir@
66683 +toolexecmainlibdir = @toolexecmainlibdir@
66684  uudecode = @uudecode@
66685  vm_classes = @vm_classes@
66686  nativeexeclib_LTLIBRARIES = libgstreamerpeer.la
66687 diff -Nur a/libjava/classpath/native/jni/gtk-peer/Makefile.in b/libjava/classpath/native/jni/gtk-peer/Makefile.in
66688 --- a/libjava/classpath/native/jni/gtk-peer/Makefile.in 2008-11-12 21:55:13.000000000 +0100
66689 +++ b/libjava/classpath/native/jni/gtk-peer/Makefile.in 2010-01-25 09:50:29.625686976 +0100
66690 @@ -397,9 +397,12 @@
66691  target = @target@
66692  target_alias = @target_alias@
66693  target_cpu = @target_cpu@
66694 +target_noncanonical = @target_noncanonical@
66695  target_os = @target_os@
66696  target_vendor = @target_vendor@
66697 +toolexecdir = @toolexecdir@
66698  toolexeclibdir = @toolexeclibdir@
66699 +toolexecmainlibdir = @toolexecmainlibdir@
66700  uudecode = @uudecode@
66701  vm_classes = @vm_classes@
66702  nativeexeclib_LTLIBRARIES = libgtkpeer.la
66703 diff -Nur a/libjava/classpath/native/jni/java-io/Makefile.in b/libjava/classpath/native/jni/java-io/Makefile.in
66704 --- a/libjava/classpath/native/jni/java-io/Makefile.in  2008-11-12 21:55:13.000000000 +0100
66705 +++ b/libjava/classpath/native/jni/java-io/Makefile.in  2010-01-25 09:50:29.625686976 +0100
66706 @@ -361,9 +361,12 @@
66707  target = @target@
66708  target_alias = @target_alias@
66709  target_cpu = @target_cpu@
66710 +target_noncanonical = @target_noncanonical@
66711  target_os = @target_os@
66712  target_vendor = @target_vendor@
66713 +toolexecdir = @toolexecdir@
66714  toolexeclibdir = @toolexeclibdir@
66715 +toolexecmainlibdir = @toolexecmainlibdir@
66716  uudecode = @uudecode@
66717  vm_classes = @vm_classes@
66718  nativeexeclib_LTLIBRARIES = libjavaio.la 
66719 diff -Nur a/libjava/classpath/native/jni/java-lang/Makefile.in b/libjava/classpath/native/jni/java-lang/Makefile.in
66720 --- a/libjava/classpath/native/jni/java-lang/Makefile.in        2008-11-12 21:55:13.000000000 +0100
66721 +++ b/libjava/classpath/native/jni/java-lang/Makefile.in        2010-01-25 09:50:29.625686976 +0100
66722 @@ -375,9 +375,12 @@
66723  target = @target@
66724  target_alias = @target_alias@
66725  target_cpu = @target_cpu@
66726 +target_noncanonical = @target_noncanonical@
66727  target_os = @target_os@
66728  target_vendor = @target_vendor@
66729 +toolexecdir = @toolexecdir@
66730  toolexeclibdir = @toolexeclibdir@
66731 +toolexecmainlibdir = @toolexecmainlibdir@
66732  uudecode = @uudecode@
66733  vm_classes = @vm_classes@
66734  nativeexeclib_LTLIBRARIES = libjavalang.la libjavalangreflect.la libjavalangmanagement.la
66735 diff -Nur a/libjava/classpath/native/jni/java-math/Makefile.in b/libjava/classpath/native/jni/java-math/Makefile.in
66736 --- a/libjava/classpath/native/jni/java-math/Makefile.in        2008-11-12 21:55:13.000000000 +0100
66737 +++ b/libjava/classpath/native/jni/java-math/Makefile.in        2010-01-25 09:50:29.625686976 +0100
66738 @@ -359,9 +359,12 @@
66739  target = @target@
66740  target_alias = @target_alias@
66741  target_cpu = @target_cpu@
66742 +target_noncanonical = @target_noncanonical@
66743  target_os = @target_os@
66744  target_vendor = @target_vendor@
66745 +toolexecdir = @toolexecdir@
66746  toolexeclibdir = @toolexeclibdir@
66747 +toolexecmainlibdir = @toolexecmainlibdir@
66748  uudecode = @uudecode@
66749  vm_classes = @vm_classes@
66750  nativeexeclib_LTLIBRARIES = libjavamath.la
66751 diff -Nur a/libjava/classpath/native/jni/java-net/Makefile.in b/libjava/classpath/native/jni/java-net/Makefile.in
66752 --- a/libjava/classpath/native/jni/java-net/Makefile.in 2008-11-12 21:55:13.000000000 +0100
66753 +++ b/libjava/classpath/native/jni/java-net/Makefile.in 2010-01-25 09:50:29.625686976 +0100
66754 @@ -371,9 +371,12 @@
66755  target = @target@
66756  target_alias = @target_alias@
66757  target_cpu = @target_cpu@
66758 +target_noncanonical = @target_noncanonical@
66759  target_os = @target_os@
66760  target_vendor = @target_vendor@
66761 +toolexecdir = @toolexecdir@
66762  toolexeclibdir = @toolexeclibdir@
66763 +toolexecmainlibdir = @toolexecmainlibdir@
66764  uudecode = @uudecode@
66765  vm_classes = @vm_classes@
66766  nativeexeclib_LTLIBRARIES = libjavanet.la
66767 diff -Nur a/libjava/classpath/native/jni/java-nio/Makefile.in b/libjava/classpath/native/jni/java-nio/Makefile.in
66768 --- a/libjava/classpath/native/jni/java-nio/Makefile.in 2008-11-12 21:55:13.000000000 +0100
66769 +++ b/libjava/classpath/native/jni/java-nio/Makefile.in 2010-01-25 09:50:29.625686976 +0100
66770 @@ -369,9 +369,12 @@
66771  target = @target@
66772  target_alias = @target_alias@
66773  target_cpu = @target_cpu@
66774 +target_noncanonical = @target_noncanonical@
66775  target_os = @target_os@
66776  target_vendor = @target_vendor@
66777 +toolexecdir = @toolexecdir@
66778  toolexeclibdir = @toolexeclibdir@
66779 +toolexecmainlibdir = @toolexecmainlibdir@
66780  uudecode = @uudecode@
66781  vm_classes = @vm_classes@
66782  nativeexeclib_LTLIBRARIES = libjavanio.la
66783 diff -Nur a/libjava/classpath/native/jni/java-util/Makefile.in b/libjava/classpath/native/jni/java-util/Makefile.in
66784 --- a/libjava/classpath/native/jni/java-util/Makefile.in        2008-11-12 21:55:13.000000000 +0100
66785 +++ b/libjava/classpath/native/jni/java-util/Makefile.in        2010-01-25 09:50:29.625686976 +0100
66786 @@ -358,9 +358,12 @@
66787  target = @target@
66788  target_alias = @target_alias@
66789  target_cpu = @target_cpu@
66790 +target_noncanonical = @target_noncanonical@
66791  target_os = @target_os@
66792  target_vendor = @target_vendor@
66793 +toolexecdir = @toolexecdir@
66794  toolexeclibdir = @toolexeclibdir@
66795 +toolexecmainlibdir = @toolexecmainlibdir@
66796  uudecode = @uudecode@
66797  vm_classes = @vm_classes@
66798  nativeexeclib_LTLIBRARIES = libjavautil.la
66799 diff -Nur a/libjava/classpath/native/jni/Makefile.in b/libjava/classpath/native/jni/Makefile.in
66800 --- a/libjava/classpath/native/jni/Makefile.in  2008-11-12 21:55:13.000000000 +0100
66801 +++ b/libjava/classpath/native/jni/Makefile.in  2010-01-25 09:50:29.625686976 +0100
66802 @@ -340,9 +340,12 @@
66803  target = @target@
66804  target_alias = @target_alias@
66805  target_cpu = @target_cpu@
66806 +target_noncanonical = @target_noncanonical@
66807  target_os = @target_os@
66808  target_vendor = @target_vendor@
66809 +toolexecdir = @toolexecdir@
66810  toolexeclibdir = @toolexeclibdir@
66811 +toolexecmainlibdir = @toolexecmainlibdir@
66812  uudecode = @uudecode@
66813  vm_classes = @vm_classes@
66814  @CREATE_CORE_JNI_LIBRARIES_TRUE@JNIDIRS = native-lib java-io java-lang java-net java-nio java-util
66815 diff -Nur a/libjava/classpath/native/jni/midi-alsa/Makefile.in b/libjava/classpath/native/jni/midi-alsa/Makefile.in
66816 --- a/libjava/classpath/native/jni/midi-alsa/Makefile.in        2008-11-12 21:55:13.000000000 +0100
66817 +++ b/libjava/classpath/native/jni/midi-alsa/Makefile.in        2010-01-25 09:50:29.625686976 +0100
66818 @@ -361,9 +361,12 @@
66819  target = @target@
66820  target_alias = @target_alias@
66821  target_cpu = @target_cpu@
66822 +target_noncanonical = @target_noncanonical@
66823  target_os = @target_os@
66824  target_vendor = @target_vendor@
66825 +toolexecdir = @toolexecdir@
66826  toolexeclibdir = @toolexeclibdir@
66827 +toolexecmainlibdir = @toolexecmainlibdir@
66828  uudecode = @uudecode@
66829  vm_classes = @vm_classes@
66830  nativeexeclib_LTLIBRARIES = libgjsmalsa.la 
66831 diff -Nur a/libjava/classpath/native/jni/midi-dssi/Makefile.in b/libjava/classpath/native/jni/midi-dssi/Makefile.in
66832 --- a/libjava/classpath/native/jni/midi-dssi/Makefile.in        2008-11-12 21:55:13.000000000 +0100
66833 +++ b/libjava/classpath/native/jni/midi-dssi/Makefile.in        2010-01-25 09:50:29.625686976 +0100
66834 @@ -361,9 +361,12 @@
66835  target = @target@
66836  target_alias = @target_alias@
66837  target_cpu = @target_cpu@
66838 +target_noncanonical = @target_noncanonical@
66839  target_os = @target_os@
66840  target_vendor = @target_vendor@
66841 +toolexecdir = @toolexecdir@
66842  toolexeclibdir = @toolexeclibdir@
66843 +toolexecmainlibdir = @toolexecmainlibdir@
66844  uudecode = @uudecode@
66845  vm_classes = @vm_classes@
66846  nativeexeclib_LTLIBRARIES = libgjsmdssi.la 
66847 diff -Nur a/libjava/classpath/native/jni/native-lib/Makefile.in b/libjava/classpath/native/jni/native-lib/Makefile.in
66848 --- a/libjava/classpath/native/jni/native-lib/Makefile.in       2008-11-12 21:55:13.000000000 +0100
66849 +++ b/libjava/classpath/native/jni/native-lib/Makefile.in       2010-01-25 09:50:29.625686976 +0100
66850 @@ -350,9 +350,12 @@
66851  target = @target@
66852  target_alias = @target_alias@
66853  target_cpu = @target_cpu@
66854 +target_noncanonical = @target_noncanonical@
66855  target_os = @target_os@
66856  target_vendor = @target_vendor@
66857 +toolexecdir = @toolexecdir@
66858  toolexeclibdir = @toolexeclibdir@
66859 +toolexecmainlibdir = @toolexecmainlibdir@
66860  uudecode = @uudecode@
66861  vm_classes = @vm_classes@
66862  noinst_LTLIBRARIES = libclasspathnative.la
66863 diff -Nur a/libjava/classpath/native/jni/qt-peer/Makefile.in b/libjava/classpath/native/jni/qt-peer/Makefile.in
66864 --- a/libjava/classpath/native/jni/qt-peer/Makefile.in  2008-11-12 21:55:13.000000000 +0100
66865 +++ b/libjava/classpath/native/jni/qt-peer/Makefile.in  2010-01-25 09:50:29.635686641 +0100
66866 @@ -376,9 +376,12 @@
66867  target = @target@
66868  target_alias = @target_alias@
66869  target_cpu = @target_cpu@
66870 +target_noncanonical = @target_noncanonical@
66871  target_os = @target_os@
66872  target_vendor = @target_vendor@
66873 +toolexecdir = @toolexecdir@
66874  toolexeclibdir = @toolexeclibdir@
66875 +toolexecmainlibdir = @toolexecmainlibdir@
66876  uudecode = @uudecode@
66877  vm_classes = @vm_classes@
66878  noinst_LTLIBRARIES = libqtpeer.la
66879 diff -Nur a/libjava/classpath/native/jni/xmlj/Makefile.in b/libjava/classpath/native/jni/xmlj/Makefile.in
66880 --- a/libjava/classpath/native/jni/xmlj/Makefile.in     2008-11-12 21:55:13.000000000 +0100
66881 +++ b/libjava/classpath/native/jni/xmlj/Makefile.in     2010-01-25 09:50:29.635686641 +0100
66882 @@ -360,9 +360,12 @@
66883  target = @target@
66884  target_alias = @target_alias@
66885  target_cpu = @target_cpu@
66886 +target_noncanonical = @target_noncanonical@
66887  target_os = @target_os@
66888  target_vendor = @target_vendor@
66889 +toolexecdir = @toolexecdir@
66890  toolexeclibdir = @toolexeclibdir@
66891 +toolexecmainlibdir = @toolexecmainlibdir@
66892  uudecode = @uudecode@
66893  vm_classes = @vm_classes@
66894  nativeexeclib_LTLIBRARIES = libxmlj.la
66895 diff -Nur a/libjava/classpath/native/Makefile.in b/libjava/classpath/native/Makefile.in
66896 --- a/libjava/classpath/native/Makefile.in      2008-11-12 21:55:13.000000000 +0100
66897 +++ b/libjava/classpath/native/Makefile.in      2010-01-25 09:50:29.635686641 +0100
66898 @@ -340,9 +340,12 @@
66899  target = @target@
66900  target_alias = @target_alias@
66901  target_cpu = @target_cpu@
66902 +target_noncanonical = @target_noncanonical@
66903  target_os = @target_os@
66904  target_vendor = @target_vendor@
66905 +toolexecdir = @toolexecdir@
66906  toolexeclibdir = @toolexeclibdir@
66907 +toolexecmainlibdir = @toolexecmainlibdir@
66908  uudecode = @uudecode@
66909  vm_classes = @vm_classes@
66910  @CREATE_JNI_LIBRARIES_TRUE@JNIDIR = jni
66911 diff -Nur a/libjava/classpath/native/plugin/Makefile.in b/libjava/classpath/native/plugin/Makefile.in
66912 --- a/libjava/classpath/native/plugin/Makefile.in       2008-11-12 21:55:13.000000000 +0100
66913 +++ b/libjava/classpath/native/plugin/Makefile.in       2010-01-25 09:50:29.635686641 +0100
66914 @@ -358,9 +358,12 @@
66915  target = @target@
66916  target_alias = @target_alias@
66917  target_cpu = @target_cpu@
66918 +target_noncanonical = @target_noncanonical@
66919  target_os = @target_os@
66920  target_vendor = @target_vendor@
66921 +toolexecdir = @toolexecdir@
66922  toolexeclibdir = @toolexeclibdir@
66923 +toolexecmainlibdir = @toolexecmainlibdir@
66924  uudecode = @uudecode@
66925  vm_classes = @vm_classes@
66926  nativeexeclib_LTLIBRARIES = libgcjwebplugin.la
66927 diff -Nur a/libjava/classpath/resource/Makefile.in b/libjava/classpath/resource/Makefile.in
66928 --- a/libjava/classpath/resource/Makefile.in    2008-11-12 21:55:13.000000000 +0100
66929 +++ b/libjava/classpath/resource/Makefile.in    2010-01-25 09:50:29.635686641 +0100
66930 @@ -343,9 +343,12 @@
66931  target = @target@
66932  target_alias = @target_alias@
66933  target_cpu = @target_cpu@
66934 +target_noncanonical = @target_noncanonical@
66935  target_os = @target_os@
66936  target_vendor = @target_vendor@
66937 +toolexecdir = @toolexecdir@
66938  toolexeclibdir = @toolexeclibdir@
66939 +toolexecmainlibdir = @toolexecmainlibdir@
66940  uudecode = @uudecode@
66941  vm_classes = @vm_classes@
66942  logging_DATA = java/util/logging/logging.properties
66943 diff -Nur a/libjava/classpath/scripts/Makefile.in b/libjava/classpath/scripts/Makefile.in
66944 --- a/libjava/classpath/scripts/Makefile.in     2008-11-12 21:55:13.000000000 +0100
66945 +++ b/libjava/classpath/scripts/Makefile.in     2010-01-25 09:50:29.635686641 +0100
66946 @@ -333,9 +333,12 @@
66947  target = @target@
66948  target_alias = @target_alias@
66949  target_cpu = @target_cpu@
66950 +target_noncanonical = @target_noncanonical@
66951  target_os = @target_os@
66952  target_vendor = @target_vendor@
66953 +toolexecdir = @toolexecdir@
66954  toolexeclibdir = @toolexeclibdir@
66955 +toolexecmainlibdir = @toolexecmainlibdir@
66956  uudecode = @uudecode@
66957  vm_classes = @vm_classes@
66958  EXTRA_DIST = generate-locale-list.sh import-cacerts.sh
66959 diff -Nur a/libjava/classpath/tools/Makefile.in b/libjava/classpath/tools/Makefile.in
66960 --- a/libjava/classpath/tools/Makefile.in       2008-11-12 21:55:13.000000000 +0100
66961 +++ b/libjava/classpath/tools/Makefile.in       2010-01-25 09:50:29.635686641 +0100
66962 @@ -448,9 +448,12 @@
66963  target = @target@
66964  target_alias = @target_alias@
66965  target_cpu = @target_cpu@
66966 +target_noncanonical = @target_noncanonical@
66967  target_os = @target_os@
66968  target_vendor = @target_vendor@
66969 +toolexecdir = @toolexecdir@
66970  toolexeclibdir = @toolexeclibdir@
66971 +toolexecmainlibdir = @toolexecmainlibdir@
66972  uudecode = @uudecode@
66973  vm_classes = @vm_classes@
66974  @CREATE_GJDOC_TRUE@gjdoc_gendir = ${top_srcdir}/tools/generated
66975 diff -Nur a/libjava/configure b/libjava/configure
66976 --- a/libjava/configure 2009-07-22 09:43:59.000000000 +0200
66977 +++ b/libjava/configure 2010-01-25 09:50:29.635686641 +0100
66978 @@ -26501,10 +26501,10 @@
66979  multi_os_directory=`$CC -print-multi-os-directory`
66980  case $multi_os_directory in
66981    .)
66982 -   dbexecdir='$(libdir)/'$gcjsubdir # Avoid /.
66983 +   dbexecdir='$(toolexeclibdir)/'$gcjsubdir # Avoid /.
66984     ;;
66985    *)
66986 -   dbexecdir='$(libdir)/'$multi_os_directory/$gcjsubdir
66987 +   dbexecdir='$(toolexeclibdir)/'$multi_os_directory/$gcjsubdir
66988     ;;
66989  esac
66990  
66991 @@ -27652,6 +27652,74 @@
66992    ac_status=$?
66993    echo "$as_me:$LINENO: \$? = $ac_status" >&5
66994    (exit $ac_status); }; }; then
66995 +  chktls_save_LDFLAGS="$LDFLAGS"
66996 +                         case $host in
66997 +           *-*-linux*)
66998 +             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
66999 +             ;;
67000 +         esac
67001 +         chktls_save_CFLAGS="$CFLAGS"
67002 +         CFLAGS="-fPIC $CFLAGS"
67003 +                 if test x$gcc_no_link = xyes; then
67004 +  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
67005 +echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
67006 +   { (exit 1); exit 1; }; }
67007 +fi
67008 +cat >conftest.$ac_ext <<_ACEOF
67009 +int f() { return 0; }
67010 +_ACEOF
67011 +rm -f conftest.$ac_objext conftest$ac_exeext
67012 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
67013 +  (eval $ac_link) 2>conftest.er1
67014 +  ac_status=$?
67015 +  grep -v '^ *+' conftest.er1 >conftest.err
67016 +  rm -f conftest.er1
67017 +  cat conftest.err >&5
67018 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67019 +  (exit $ac_status); } &&
67020 +        { ac_try='test -z "$ac_c_werror_flag"
67021 +                        || test ! -s conftest.err'
67022 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67023 +  (eval $ac_try) 2>&5
67024 +  ac_status=$?
67025 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67026 +  (exit $ac_status); }; } &&
67027 +        { ac_try='test -s conftest$ac_exeext'
67028 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67029 +  (eval $ac_try) 2>&5
67030 +  ac_status=$?
67031 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67032 +  (exit $ac_status); }; }; then
67033 +  if test x$gcc_no_link = xyes; then
67034 +  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
67035 +echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
67036 +   { (exit 1); exit 1; }; }
67037 +fi
67038 +cat >conftest.$ac_ext <<_ACEOF
67039 +__thread int a; int b; int f() { return a = b; }
67040 +_ACEOF
67041 +rm -f conftest.$ac_objext conftest$ac_exeext
67042 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
67043 +  (eval $ac_link) 2>conftest.er1
67044 +  ac_status=$?
67045 +  grep -v '^ *+' conftest.er1 >conftest.err
67046 +  rm -f conftest.er1
67047 +  cat conftest.err >&5
67048 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67049 +  (exit $ac_status); } &&
67050 +        { ac_try='test -z "$ac_c_werror_flag"
67051 +                        || test ! -s conftest.err'
67052 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67053 +  (eval $ac_try) 2>&5
67054 +  ac_status=$?
67055 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67056 +  (exit $ac_status); }; } &&
67057 +        { ac_try='test -s conftest$ac_exeext'
67058 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67059 +  (eval $ac_try) 2>&5
67060 +  ac_status=$?
67061 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67062 +  (exit $ac_status); }; }; then
67063    gcc_cv_have_tls=yes
67064  else
67065    echo "$as_me: failed program was:" >&5
67066 @@ -27661,6 +27729,24 @@
67067  fi
67068  rm -f conftest.err conftest.$ac_objext \
67069        conftest$ac_exeext conftest.$ac_ext
67070 +else
67071 +  echo "$as_me: failed program was:" >&5
67072 +sed 's/^/| /' conftest.$ac_ext >&5
67073 +
67074 +gcc_cv_have_tls=yes
67075 +fi
67076 +rm -f conftest.err conftest.$ac_objext \
67077 +      conftest$ac_exeext conftest.$ac_ext
67078 +         CFLAGS="$chktls_save_CFLAGS"
67079 +         LDFLAGS="$chktls_save_LDFLAGS"
67080 +else
67081 +  echo "$as_me: failed program was:" >&5
67082 +sed 's/^/| /' conftest.$ac_ext >&5
67083 +
67084 +gcc_cv_have_tls=no
67085 +fi
67086 +rm -f conftest.err conftest.$ac_objext \
67087 +      conftest$ac_exeext conftest.$ac_ext
67088  
67089  
67090  else
67091 diff -Nur a/libjava/configure.ac b/libjava/configure.ac
67092 --- a/libjava/configure.ac      2009-04-26 16:24:38.000000000 +0200
67093 +++ b/libjava/configure.ac      2010-01-25 09:50:29.635686641 +0100
67094 @@ -1490,10 +1490,10 @@
67095  multi_os_directory=`$CC -print-multi-os-directory`
67096  case $multi_os_directory in
67097    .)
67098 -   dbexecdir='$(libdir)/'$gcjsubdir # Avoid /.
67099 +   dbexecdir='$(toolexeclibdir)/'$gcjsubdir # Avoid /.
67100     ;;
67101    *)
67102 -   dbexecdir='$(libdir)/'$multi_os_directory/$gcjsubdir
67103 +   dbexecdir='$(toolexeclibdir)/'$multi_os_directory/$gcjsubdir
67104     ;;
67105  esac
67106  AC_SUBST(dbexecdir)
67107 diff -Nur a/libjava/Makefile.am b/libjava/Makefile.am
67108 --- a/libjava/Makefile.am       2009-05-11 10:21:39.000000000 +0200
67109 +++ b/libjava/Makefile.am       2010-01-25 09:50:29.635686641 +0100
67110 @@ -55,9 +55,14 @@
67111  
67112  dbexec_LTLIBRARIES = libjvm.la
67113  
67114 -pkgconfigdir = $(libdir)/pkgconfig
67115 +# Install the pkgconfig file in a target-specific directory, since the
67116 +# libraries it indicates
67117  
67118 -jardir = $(datadir)/java
67119 +pkgconfigdir = $(toolexeclibdir)/pkgconfig
67120 +
67121 +# We install the JAR in a target-specific directory so that toolchains
67122 +# build from different sources can be installed in the same directory.
67123 +jardir = $(prefix)/$(target_noncanonical)/share/java
67124  jar_DATA = libgcj-$(gcc_version).jar libgcj-tools-$(gcc_version).jar
67125  if INSTALL_ECJ_JAR
67126  jar_DATA += $(ECJ_BUILD_JAR)
67127 diff -Nur a/libjava/Makefile.in b/libjava/Makefile.in
67128 --- a/libjava/Makefile.in       2009-07-22 09:43:59.000000000 +0200
67129 +++ b/libjava/Makefile.in       2010-01-25 09:50:29.645688750 +0100
67130 @@ -916,8 +916,14 @@
67131         $(am__append_2) $(am__append_3)
67132  toolexecmainlib_DATA = libgcj.spec
67133  dbexec_LTLIBRARIES = libjvm.la
67134 -pkgconfigdir = $(libdir)/pkgconfig
67135 -jardir = $(datadir)/java
67136 +
67137 +# Install the pkgconfig file in a target-specific directory, since the
67138 +# libraries it indicates
67139 +pkgconfigdir = $(toolexeclibdir)/pkgconfig
67140 +
67141 +# We install the JAR in a target-specific directory so that toolchains
67142 +# build from different sources can be installed in the same directory.
67143 +jardir = $(prefix)/$(target_noncanonical)/share/java
67144  jar_DATA = libgcj-$(gcc_version).jar libgcj-tools-$(gcc_version).jar \
67145         $(am__append_4)
67146  @JAVA_HOME_SET_FALSE@JAVA_HOME_DIR = $(prefix)
67147 diff -Nur a/libmudflap/configure b/libmudflap/configure
67148 --- a/libmudflap/configure      2009-03-01 18:49:31.000000000 +0100
67149 +++ b/libmudflap/configure      2010-01-25 09:50:29.645688750 +0100
67150 @@ -12787,6 +12787,64 @@
67151    ac_status=$?
67152    echo "$as_me:$LINENO: \$? = $ac_status" >&5
67153    (exit $ac_status); }; }; then
67154 +  chktls_save_LDFLAGS="$LDFLAGS"
67155 +                         case $host in
67156 +           *-*-linux*)
67157 +             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
67158 +             ;;
67159 +         esac
67160 +         chktls_save_CFLAGS="$CFLAGS"
67161 +         CFLAGS="-fPIC $CFLAGS"
67162 +                 cat >conftest.$ac_ext <<_ACEOF
67163 +int f() { return 0; }
67164 +_ACEOF
67165 +rm -f conftest.$ac_objext conftest$ac_exeext
67166 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
67167 +  (eval $ac_link) 2>conftest.er1
67168 +  ac_status=$?
67169 +  grep -v '^ *+' conftest.er1 >conftest.err
67170 +  rm -f conftest.er1
67171 +  cat conftest.err >&5
67172 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67173 +  (exit $ac_status); } &&
67174 +        { ac_try='test -z "$ac_c_werror_flag"
67175 +                        || test ! -s conftest.err'
67176 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67177 +  (eval $ac_try) 2>&5
67178 +  ac_status=$?
67179 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67180 +  (exit $ac_status); }; } &&
67181 +        { ac_try='test -s conftest$ac_exeext'
67182 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67183 +  (eval $ac_try) 2>&5
67184 +  ac_status=$?
67185 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67186 +  (exit $ac_status); }; }; then
67187 +  cat >conftest.$ac_ext <<_ACEOF
67188 +__thread int a; int b; int f() { return a = b; }
67189 +_ACEOF
67190 +rm -f conftest.$ac_objext conftest$ac_exeext
67191 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
67192 +  (eval $ac_link) 2>conftest.er1
67193 +  ac_status=$?
67194 +  grep -v '^ *+' conftest.er1 >conftest.err
67195 +  rm -f conftest.er1
67196 +  cat conftest.err >&5
67197 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67198 +  (exit $ac_status); } &&
67199 +        { ac_try='test -z "$ac_c_werror_flag"
67200 +                        || test ! -s conftest.err'
67201 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67202 +  (eval $ac_try) 2>&5
67203 +  ac_status=$?
67204 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67205 +  (exit $ac_status); }; } &&
67206 +        { ac_try='test -s conftest$ac_exeext'
67207 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67208 +  (eval $ac_try) 2>&5
67209 +  ac_status=$?
67210 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67211 +  (exit $ac_status); }; }; then
67212    gcc_cv_have_tls=yes
67213  else
67214    echo "$as_me: failed program was:" >&5
67215 @@ -12796,6 +12854,24 @@
67216  fi
67217  rm -f conftest.err conftest.$ac_objext \
67218        conftest$ac_exeext conftest.$ac_ext
67219 +else
67220 +  echo "$as_me: failed program was:" >&5
67221 +sed 's/^/| /' conftest.$ac_ext >&5
67222 +
67223 +gcc_cv_have_tls=yes
67224 +fi
67225 +rm -f conftest.err conftest.$ac_objext \
67226 +      conftest$ac_exeext conftest.$ac_ext
67227 +         CFLAGS="$chktls_save_CFLAGS"
67228 +         LDFLAGS="$chktls_save_LDFLAGS"
67229 +else
67230 +  echo "$as_me: failed program was:" >&5
67231 +sed 's/^/| /' conftest.$ac_ext >&5
67232 +
67233 +gcc_cv_have_tls=no
67234 +fi
67235 +rm -f conftest.err conftest.$ac_objext \
67236 +      conftest$ac_exeext conftest.$ac_ext
67237  
67238  
67239  else
67240 diff -Nur a/libstdc++-v3/config/cpu/sh/atomicity.h b/libstdc++-v3/config/cpu/sh/atomicity.h
67241 --- a/libstdc++-v3/config/cpu/sh/atomicity.h    2009-04-10 01:23:07.000000000 +0200
67242 +++ b/libstdc++-v3/config/cpu/sh/atomicity.h    2010-01-25 09:50:29.645688750 +0100
67243 @@ -25,47 +25,48 @@
67244  
67245  #ifdef __SH4A__
67246  
67247 -#ifndef _GLIBCXX_ATOMICITY_H
67248 -#define _GLIBCXX_ATOMICITY_H   1
67249 +#include <ext/atomicity.h>
67250  
67251 -typedef int _Atomic_word;
67252 +_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
67253  
67254 -static inline _Atomic_word
67255 -__attribute__ ((__unused__))
67256 -__exchange_and_add (volatile _Atomic_word* __mem, int __val)
67257 -{
67258 -  _Atomic_word __result;
67259 +  typedef int _Atomic_word;
67260  
67261 -  __asm__ __volatile__
67262 -    ("0:\n"
67263 -     "\tmovli.l\t@%2,r0\n"
67264 -     "\tmov\tr0,%1\n"
67265 -     "\tadd\t%3,r0\n"
67266 -     "\tmovco.l\tr0,@%2\n"
67267 -     "\tbf\t0b"
67268 -     : "+m" (*__mem), "=r" (__result)
67269 -     : "r" (__mem), "rI08" (__val)
67270 -     : "r0");
67271 -
67272 -  return __result;
67273 -}
67274 -
67275 -
67276 -static inline void
67277 -__attribute__ ((__unused__))
67278 -__atomic_add (volatile _Atomic_word* __mem, int __val)
67279 -{
67280 -  asm("0:\n"
67281 -      "\tmovli.l\t@%1,r0\n"
67282 -      "\tadd\t%2,r0\n"
67283 -      "\tmovco.l\tr0,@%1\n"
67284 -      "\tbf\t0b"
67285 -      : "+m" (*__mem)
67286 -      : "r" (__mem), "rI08" (__val)
67287 -      : "r0");
67288 -}
67289 +  _Atomic_word
67290 +  __attribute__ ((__unused__))
67291 +  __exchange_and_add (volatile _Atomic_word* __mem, int __val)
67292 +  {
67293 +    _Atomic_word __result;
67294  
67295 -#endif
67296 +    __asm__ __volatile__
67297 +      ("0:\n"
67298 +       "\tmovli.l\t@%2,r0\n"
67299 +       "\tmov\tr0,%1\n"
67300 +       "\tadd\t%3,r0\n"
67301 +       "\tmovco.l\tr0,@%2\n"
67302 +       "\tbf\t0b"
67303 +       : "+m" (*__mem), "=&r" (__result)
67304 +       : "r" (__mem), "rI08" (__val)
67305 +       : "r0");
67306 +
67307 +    return __result;
67308 +  }
67309 +
67310 +
67311 +  void
67312 +  __attribute__ ((__unused__))
67313 +  __atomic_add (volatile _Atomic_word* __mem, int __val)
67314 +  {
67315 +    asm("0:\n"
67316 +       "\tmovli.l\t@%1,r0\n"
67317 +       "\tadd\t%2,r0\n"
67318 +       "\tmovco.l\tr0,@%1\n"
67319 +       "\tbf\t0b"
67320 +       : "+m" (*__mem)
67321 +       : "r" (__mem), "rI08" (__val)
67322 +       : "r0");
67323 +  }
67324 +
67325 +_GLIBCXX_END_NAMESPACE
67326  
67327  #else /* !__SH4A__ */
67328  
67329 diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
67330 --- a/libstdc++-v3/configure    2009-05-07 12:23:06.000000000 +0200
67331 +++ b/libstdc++-v3/configure    2010-01-25 09:50:29.665687451 +0100
67332 @@ -458,7 +458,7 @@
67333  # include <unistd.h>
67334  #endif"
67335  
67336 -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 libtool_VERSION multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar glibcxx_builddir glibcxx_srcdir toplevel_srcdir CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LN_S AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CPP CPPFLAGS EGREP LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM OBJDUMP ac_ct_OBJDUMP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 LDFLAGS CXXCPP enable_shared enable_static GLIBCXX_HOSTED_TRUE GLIBCXX_HOSTED_FALSE GLIBCXX_BUILD_PCH_TRUE GLIBCXX_BUILD_PCH_FALSE glibcxx_PCHFLAGS glibcxx_thread_h WERROR SECTION_FLAGS CSTDIO_H BASIC_FILE_H BASIC_FILE_CC check_msgfmt glibcxx_MOFILES glibcxx_POFILES glibcxx_localedir USE_NLS CLOCALE_H CMESSAGES_H CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_H CTIME_CC CLOCALE_CC CLOCALE_INTERNAL_H ALLOCATOR_H ALLOCATOR_NAME C_INCLUDE_DIR GLIBCXX_C_HEADERS_C_TRUE GLIBCXX_C_HEADERS_C_FALSE GLIBCXX_C_HEADERS_C_STD_TRUE GLIBCXX_C_HEADERS_C_STD_FALSE GLIBCXX_C_HEADERS_C_GLOBAL_TRUE GLIBCXX_C_HEADERS_C_GLOBAL_FALSE GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE GLIBCXX_C_HEADERS_EXTRA_TRUE GLIBCXX_C_HEADERS_EXTRA_FALSE DEBUG_FLAGS GLIBCXX_BUILD_DEBUG_TRUE GLIBCXX_BUILD_DEBUG_FALSE ENABLE_PARALLEL_TRUE ENABLE_PARALLEL_FALSE EXTRA_CXX_FLAGS GLIBCXX_LIBS SECTION_LDFLAGS OPT_LDFLAGS LIBICONV LTLIBICONV SYMVER_FILE port_specific_symbol_files ENABLE_SYMVERS_TRUE ENABLE_SYMVERS_FALSE ENABLE_SYMVERS_GNU_TRUE ENABLE_SYMVERS_GNU_FALSE ENABLE_SYMVERS_GNU_NAMESPACE_TRUE ENABLE_SYMVERS_GNU_NAMESPACE_FALSE ENABLE_SYMVERS_DARWIN_TRUE ENABLE_SYMVERS_DARWIN_FALSE ENABLE_VISIBILITY_TRUE ENABLE_VISIBILITY_FALSE GLIBCXX_LDBL_COMPAT_TRUE GLIBCXX_LDBL_COMPAT_FALSE baseline_dir ATOMICITY_SRCDIR ATOMIC_WORD_SRCDIR ATOMIC_FLAGS CPU_DEFINES_SRCDIR ABI_TWEAKS_SRCDIR OS_INC_SRCDIR ERROR_CONSTANTS_SRCDIR glibcxx_prefixdir gxx_include_dir glibcxx_toolexecdir glibcxx_toolexeclibdir GLIBCXX_INCLUDES TOPLEVEL_INCLUDES OPTIMIZE_CXXFLAGS WARN_FLAGS LIBSUPCXX_PICFLAGS LIBOBJS LTLIBOBJS'
67337 +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 libtool_VERSION multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar glibcxx_builddir glibcxx_srcdir toplevel_srcdir CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LN_S AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CPP CPPFLAGS EGREP LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM OBJDUMP ac_ct_OBJDUMP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 LDFLAGS CXXCPP enable_shared enable_static GLIBCXX_HOSTED_TRUE GLIBCXX_HOSTED_FALSE GLIBCXX_BUILD_PCH_TRUE GLIBCXX_BUILD_PCH_FALSE glibcxx_PCHFLAGS glibcxx_thread_h WERROR SECTION_FLAGS CSTDIO_H BASIC_FILE_H BASIC_FILE_CC check_msgfmt glibcxx_MOFILES glibcxx_POFILES glibcxx_localedir USE_NLS CLOCALE_H CMESSAGES_H CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_H CTIME_CC CLOCALE_CC CLOCALE_INTERNAL_H ALLOCATOR_H ALLOCATOR_NAME C_INCLUDE_DIR GLIBCXX_C_HEADERS_C_TRUE GLIBCXX_C_HEADERS_C_FALSE GLIBCXX_C_HEADERS_C_STD_TRUE GLIBCXX_C_HEADERS_C_STD_FALSE GLIBCXX_C_HEADERS_C_GLOBAL_TRUE GLIBCXX_C_HEADERS_C_GLOBAL_FALSE GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE GLIBCXX_C_HEADERS_EXTRA_TRUE GLIBCXX_C_HEADERS_EXTRA_FALSE DEBUG_FLAGS GLIBCXX_BUILD_DEBUG_TRUE GLIBCXX_BUILD_DEBUG_FALSE ENABLE_PARALLEL_TRUE ENABLE_PARALLEL_FALSE EXTRA_CXX_FLAGS GLIBCXX_LIBS SECTION_LDFLAGS OPT_LDFLAGS LIBICONV LTLIBICONV SYMVER_FILE port_specific_symbol_files ENABLE_SYMVERS_TRUE ENABLE_SYMVERS_FALSE ENABLE_SYMVERS_GNU_TRUE ENABLE_SYMVERS_GNU_FALSE ENABLE_SYMVERS_GNU_NAMESPACE_TRUE ENABLE_SYMVERS_GNU_NAMESPACE_FALSE ENABLE_SYMVERS_DARWIN_TRUE ENABLE_SYMVERS_DARWIN_FALSE ENABLE_VISIBILITY_TRUE ENABLE_VISIBILITY_FALSE GLIBCXX_LDBL_COMPAT_TRUE GLIBCXX_LDBL_COMPAT_FALSE baseline_dir ATOMICITY_SRCDIR ATOMIC_WORD_SRCDIR ATOMIC_FLAGS CPU_DEFINES_SRCDIR ABI_TWEAKS_SRCDIR OS_INC_SRCDIR ERROR_CONSTANTS_SRCDIR LIBSUPCXX_PRONLY_TRUE LIBSUPCXX_PRONLY_FALSE glibcxx_prefixdir gxx_include_dir glibcxx_toolexecdir glibcxx_toolexeclibdir GLIBCXX_INCLUDES TOPLEVEL_INCLUDES OPTIMIZE_CXXFLAGS WARN_FLAGS LIBSUPCXX_PICFLAGS LIBOBJS LTLIBOBJS'
67338  ac_subst_files=''
67339  ac_pwd=`pwd`
67340  
67341 @@ -40730,6 +40730,74 @@
67342    ac_status=$?
67343    echo "$as_me:$LINENO: \$? = $ac_status" >&5
67344    (exit $ac_status); }; }; then
67345 +  chktls_save_LDFLAGS="$LDFLAGS"
67346 +                         case $host in
67347 +           *-*-linux*)
67348 +             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
67349 +             ;;
67350 +         esac
67351 +         chktls_save_CFLAGS="$CFLAGS"
67352 +         CFLAGS="-fPIC $CFLAGS"
67353 +                 if test x$gcc_no_link = xyes; then
67354 +  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
67355 +echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
67356 +   { (exit 1); exit 1; }; }
67357 +fi
67358 +cat >conftest.$ac_ext <<_ACEOF
67359 +int f() { return 0; }
67360 +_ACEOF
67361 +rm -f conftest.$ac_objext conftest$ac_exeext
67362 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
67363 +  (eval $ac_link) 2>conftest.er1
67364 +  ac_status=$?
67365 +  grep -v '^ *+' conftest.er1 >conftest.err
67366 +  rm -f conftest.er1
67367 +  cat conftest.err >&5
67368 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67369 +  (exit $ac_status); } &&
67370 +        { ac_try='test -z "$ac_c_werror_flag"
67371 +                        || test ! -s conftest.err'
67372 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67373 +  (eval $ac_try) 2>&5
67374 +  ac_status=$?
67375 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67376 +  (exit $ac_status); }; } &&
67377 +        { ac_try='test -s conftest$ac_exeext'
67378 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67379 +  (eval $ac_try) 2>&5
67380 +  ac_status=$?
67381 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67382 +  (exit $ac_status); }; }; then
67383 +  if test x$gcc_no_link = xyes; then
67384 +  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
67385 +echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
67386 +   { (exit 1); exit 1; }; }
67387 +fi
67388 +cat >conftest.$ac_ext <<_ACEOF
67389 +__thread int a; int b; int f() { return a = b; }
67390 +_ACEOF
67391 +rm -f conftest.$ac_objext conftest$ac_exeext
67392 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
67393 +  (eval $ac_link) 2>conftest.er1
67394 +  ac_status=$?
67395 +  grep -v '^ *+' conftest.er1 >conftest.err
67396 +  rm -f conftest.er1
67397 +  cat conftest.err >&5
67398 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67399 +  (exit $ac_status); } &&
67400 +        { ac_try='test -z "$ac_c_werror_flag"
67401 +                        || test ! -s conftest.err'
67402 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67403 +  (eval $ac_try) 2>&5
67404 +  ac_status=$?
67405 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67406 +  (exit $ac_status); }; } &&
67407 +        { ac_try='test -s conftest$ac_exeext'
67408 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67409 +  (eval $ac_try) 2>&5
67410 +  ac_status=$?
67411 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67412 +  (exit $ac_status); }; }; then
67413    gcc_cv_have_tls=yes
67414  else
67415    echo "$as_me: failed program was:" >&5
67416 @@ -40739,6 +40807,24 @@
67417  fi
67418  rm -f conftest.err conftest.$ac_objext \
67419        conftest$ac_exeext conftest.$ac_ext
67420 +else
67421 +  echo "$as_me: failed program was:" >&5
67422 +sed 's/^/| /' conftest.$ac_ext >&5
67423 +
67424 +gcc_cv_have_tls=yes
67425 +fi
67426 +rm -f conftest.err conftest.$ac_objext \
67427 +      conftest$ac_exeext conftest.$ac_ext
67428 +         CFLAGS="$chktls_save_CFLAGS"
67429 +         LDFLAGS="$chktls_save_LDFLAGS"
67430 +else
67431 +  echo "$as_me: failed program was:" >&5
67432 +sed 's/^/| /' conftest.$ac_ext >&5
67433 +
67434 +gcc_cv_have_tls=no
67435 +fi
67436 +rm -f conftest.err conftest.$ac_objext \
67437 +      conftest$ac_exeext conftest.$ac_ext
67438  
67439  
67440  else
67441 @@ -76926,6 +77012,74 @@
67442    ac_status=$?
67443    echo "$as_me:$LINENO: \$? = $ac_status" >&5
67444    (exit $ac_status); }; }; then
67445 +  chktls_save_LDFLAGS="$LDFLAGS"
67446 +                         case $host in
67447 +           *-*-linux*)
67448 +             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
67449 +             ;;
67450 +         esac
67451 +         chktls_save_CFLAGS="$CFLAGS"
67452 +         CFLAGS="-fPIC $CFLAGS"
67453 +                 if test x$gcc_no_link = xyes; then
67454 +  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
67455 +echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
67456 +   { (exit 1); exit 1; }; }
67457 +fi
67458 +cat >conftest.$ac_ext <<_ACEOF
67459 +int f() { return 0; }
67460 +_ACEOF
67461 +rm -f conftest.$ac_objext conftest$ac_exeext
67462 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
67463 +  (eval $ac_link) 2>conftest.er1
67464 +  ac_status=$?
67465 +  grep -v '^ *+' conftest.er1 >conftest.err
67466 +  rm -f conftest.er1
67467 +  cat conftest.err >&5
67468 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67469 +  (exit $ac_status); } &&
67470 +        { ac_try='test -z "$ac_c_werror_flag"
67471 +                        || test ! -s conftest.err'
67472 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67473 +  (eval $ac_try) 2>&5
67474 +  ac_status=$?
67475 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67476 +  (exit $ac_status); }; } &&
67477 +        { ac_try='test -s conftest$ac_exeext'
67478 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67479 +  (eval $ac_try) 2>&5
67480 +  ac_status=$?
67481 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67482 +  (exit $ac_status); }; }; then
67483 +  if test x$gcc_no_link = xyes; then
67484 +  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
67485 +echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
67486 +   { (exit 1); exit 1; }; }
67487 +fi
67488 +cat >conftest.$ac_ext <<_ACEOF
67489 +__thread int a; int b; int f() { return a = b; }
67490 +_ACEOF
67491 +rm -f conftest.$ac_objext conftest$ac_exeext
67492 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
67493 +  (eval $ac_link) 2>conftest.er1
67494 +  ac_status=$?
67495 +  grep -v '^ *+' conftest.er1 >conftest.err
67496 +  rm -f conftest.er1
67497 +  cat conftest.err >&5
67498 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67499 +  (exit $ac_status); } &&
67500 +        { ac_try='test -z "$ac_c_werror_flag"
67501 +                        || test ! -s conftest.err'
67502 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67503 +  (eval $ac_try) 2>&5
67504 +  ac_status=$?
67505 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67506 +  (exit $ac_status); }; } &&
67507 +        { ac_try='test -s conftest$ac_exeext'
67508 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67509 +  (eval $ac_try) 2>&5
67510 +  ac_status=$?
67511 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67512 +  (exit $ac_status); }; }; then
67513    gcc_cv_have_tls=yes
67514  else
67515    echo "$as_me: failed program was:" >&5
67516 @@ -76935,6 +77089,24 @@
67517  fi
67518  rm -f conftest.err conftest.$ac_objext \
67519        conftest$ac_exeext conftest.$ac_ext
67520 +else
67521 +  echo "$as_me: failed program was:" >&5
67522 +sed 's/^/| /' conftest.$ac_ext >&5
67523 +
67524 +gcc_cv_have_tls=yes
67525 +fi
67526 +rm -f conftest.err conftest.$ac_objext \
67527 +      conftest$ac_exeext conftest.$ac_ext
67528 +         CFLAGS="$chktls_save_CFLAGS"
67529 +         LDFLAGS="$chktls_save_LDFLAGS"
67530 +else
67531 +  echo "$as_me: failed program was:" >&5
67532 +sed 's/^/| /' conftest.$ac_ext >&5
67533 +
67534 +gcc_cv_have_tls=no
67535 +fi
67536 +rm -f conftest.err conftest.$ac_objext \
67537 +      conftest$ac_exeext conftest.$ac_ext
67538  
67539  
67540  else
67541 @@ -94541,6 +94713,74 @@
67542    ac_status=$?
67543    echo "$as_me:$LINENO: \$? = $ac_status" >&5
67544    (exit $ac_status); }; }; then
67545 +  chktls_save_LDFLAGS="$LDFLAGS"
67546 +                         case $host in
67547 +           *-*-linux*)
67548 +             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
67549 +             ;;
67550 +         esac
67551 +         chktls_save_CFLAGS="$CFLAGS"
67552 +         CFLAGS="-fPIC $CFLAGS"
67553 +                 if test x$gcc_no_link = xyes; then
67554 +  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
67555 +echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
67556 +   { (exit 1); exit 1; }; }
67557 +fi
67558 +cat >conftest.$ac_ext <<_ACEOF
67559 +int f() { return 0; }
67560 +_ACEOF
67561 +rm -f conftest.$ac_objext conftest$ac_exeext
67562 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
67563 +  (eval $ac_link) 2>conftest.er1
67564 +  ac_status=$?
67565 +  grep -v '^ *+' conftest.er1 >conftest.err
67566 +  rm -f conftest.er1
67567 +  cat conftest.err >&5
67568 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67569 +  (exit $ac_status); } &&
67570 +        { ac_try='test -z "$ac_c_werror_flag"
67571 +                        || test ! -s conftest.err'
67572 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67573 +  (eval $ac_try) 2>&5
67574 +  ac_status=$?
67575 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67576 +  (exit $ac_status); }; } &&
67577 +        { ac_try='test -s conftest$ac_exeext'
67578 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67579 +  (eval $ac_try) 2>&5
67580 +  ac_status=$?
67581 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67582 +  (exit $ac_status); }; }; then
67583 +  if test x$gcc_no_link = xyes; then
67584 +  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
67585 +echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
67586 +   { (exit 1); exit 1; }; }
67587 +fi
67588 +cat >conftest.$ac_ext <<_ACEOF
67589 +__thread int a; int b; int f() { return a = b; }
67590 +_ACEOF
67591 +rm -f conftest.$ac_objext conftest$ac_exeext
67592 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
67593 +  (eval $ac_link) 2>conftest.er1
67594 +  ac_status=$?
67595 +  grep -v '^ *+' conftest.er1 >conftest.err
67596 +  rm -f conftest.er1
67597 +  cat conftest.err >&5
67598 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67599 +  (exit $ac_status); } &&
67600 +        { ac_try='test -z "$ac_c_werror_flag"
67601 +                        || test ! -s conftest.err'
67602 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67603 +  (eval $ac_try) 2>&5
67604 +  ac_status=$?
67605 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67606 +  (exit $ac_status); }; } &&
67607 +        { ac_try='test -s conftest$ac_exeext'
67608 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
67609 +  (eval $ac_try) 2>&5
67610 +  ac_status=$?
67611 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
67612 +  (exit $ac_status); }; }; then
67613    gcc_cv_have_tls=yes
67614  else
67615    echo "$as_me: failed program was:" >&5
67616 @@ -94550,6 +94790,24 @@
67617  fi
67618  rm -f conftest.err conftest.$ac_objext \
67619        conftest$ac_exeext conftest.$ac_ext
67620 +else
67621 +  echo "$as_me: failed program was:" >&5
67622 +sed 's/^/| /' conftest.$ac_ext >&5
67623 +
67624 +gcc_cv_have_tls=yes
67625 +fi
67626 +rm -f conftest.err conftest.$ac_objext \
67627 +      conftest$ac_exeext conftest.$ac_ext
67628 +         CFLAGS="$chktls_save_CFLAGS"
67629 +         LDFLAGS="$chktls_save_LDFLAGS"
67630 +else
67631 +  echo "$as_me: failed program was:" >&5
67632 +sed 's/^/| /' conftest.$ac_ext >&5
67633 +
67634 +gcc_cv_have_tls=no
67635 +fi
67636 +rm -f conftest.err conftest.$ac_objext \
67637 +      conftest$ac_exeext conftest.$ac_ext
67638  
67639  
67640  else
67641 @@ -114470,7 +114728,8 @@
67642  cat confdefs.h >>conftest.$ac_ext
67643  cat >>conftest.$ac_ext <<_ACEOF
67644  /* end confdefs.h.  */
67645 -$ac_includes_default
67646 +/* no standard headers */
67647 +
67648  int
67649  main ()
67650  {
67651 @@ -114534,7 +114793,8 @@
67652  cat confdefs.h >>conftest.$ac_ext
67653  cat >>conftest.$ac_ext <<_ACEOF
67654  /* end confdefs.h.  */
67655 -$ac_includes_default
67656 +/* no standard headers */
67657 +
67658  int
67659  main ()
67660  {
67661 @@ -114575,7 +114835,8 @@
67662  cat confdefs.h >>conftest.$ac_ext
67663  cat >>conftest.$ac_ext <<_ACEOF
67664  /* end confdefs.h.  */
67665 -$ac_includes_default
67666 +/* no standard headers */
67667 +
67668  int
67669  main ()
67670  {
67671 @@ -114632,7 +114893,8 @@
67672  cat confdefs.h >>conftest.$ac_ext
67673  cat >>conftest.$ac_ext <<_ACEOF
67674  /* end confdefs.h.  */
67675 -$ac_includes_default
67676 +/* no standard headers */
67677 +
67678  int
67679  main ()
67680  {
67681 @@ -114673,7 +114935,8 @@
67682  cat confdefs.h >>conftest.$ac_ext
67683  cat >>conftest.$ac_ext <<_ACEOF
67684  /* end confdefs.h.  */
67685 -$ac_includes_default
67686 +/* no standard headers */
67687 +
67688  int
67689  main ()
67690  {
67691 @@ -114738,7 +115001,8 @@
67692  cat confdefs.h >>conftest.$ac_ext
67693  cat >>conftest.$ac_ext <<_ACEOF
67694  /* end confdefs.h.  */
67695 -$ac_includes_default
67696 +/* no standard headers */
67697 +
67698  int
67699  main ()
67700  {
67701 @@ -114806,7 +115070,8 @@
67702  cat confdefs.h >>conftest.$ac_ext
67703  cat >>conftest.$ac_ext <<_ACEOF
67704  /* end confdefs.h.  */
67705 -$ac_includes_default
67706 +/* no standard headers */
67707 +
67708  long longval () { return (long) (sizeof (void *)); }
67709  unsigned long ulongval () { return (long) (sizeof (void *)); }
67710  #include <stdio.h>
67711 @@ -114894,7 +115159,8 @@
67712  cat confdefs.h >>conftest.$ac_ext
67713  cat >>conftest.$ac_ext <<_ACEOF
67714  /* end confdefs.h.  */
67715 -$ac_includes_default
67716 +/* no standard headers */
67717 +
67718  int
67719  main ()
67720  {
67721 @@ -114958,7 +115224,8 @@
67722  cat confdefs.h >>conftest.$ac_ext
67723  cat >>conftest.$ac_ext <<_ACEOF
67724  /* end confdefs.h.  */
67725 -$ac_includes_default
67726 +/* no standard headers */
67727 +
67728  int
67729  main ()
67730  {
67731 @@ -114999,7 +115266,8 @@
67732  cat confdefs.h >>conftest.$ac_ext
67733  cat >>conftest.$ac_ext <<_ACEOF
67734  /* end confdefs.h.  */
67735 -$ac_includes_default
67736 +/* no standard headers */
67737 +
67738  int
67739  main ()
67740  {
67741 @@ -115056,7 +115324,8 @@
67742  cat confdefs.h >>conftest.$ac_ext
67743  cat >>conftest.$ac_ext <<_ACEOF
67744  /* end confdefs.h.  */
67745 -$ac_includes_default
67746 +/* no standard headers */
67747 +
67748  int
67749  main ()
67750  {
67751 @@ -115097,7 +115366,8 @@
67752  cat confdefs.h >>conftest.$ac_ext
67753  cat >>conftest.$ac_ext <<_ACEOF
67754  /* end confdefs.h.  */
67755 -$ac_includes_default
67756 +/* no standard headers */
67757 +
67758  int
67759  main ()
67760  {
67761 @@ -115162,7 +115432,8 @@
67762  cat confdefs.h >>conftest.$ac_ext
67763  cat >>conftest.$ac_ext <<_ACEOF
67764  /* end confdefs.h.  */
67765 -$ac_includes_default
67766 +/* no standard headers */
67767 +
67768  int
67769  main ()
67770  {
67771 @@ -115230,7 +115501,8 @@
67772  cat confdefs.h >>conftest.$ac_ext
67773  cat >>conftest.$ac_ext <<_ACEOF
67774  /* end confdefs.h.  */
67775 -$ac_includes_default
67776 +/* no standard headers */
67777 +
67778  long longval () { return (long) (sizeof (long)); }
67779  unsigned long ulongval () { return (long) (sizeof (long)); }
67780  #include <stdio.h>
67781 @@ -115318,7 +115590,8 @@
67782  cat confdefs.h >>conftest.$ac_ext
67783  cat >>conftest.$ac_ext <<_ACEOF
67784  /* end confdefs.h.  */
67785 -$ac_includes_default
67786 +/* no standard headers */
67787 +
67788  int
67789  main ()
67790  {
67791 @@ -115382,7 +115655,8 @@
67792  cat confdefs.h >>conftest.$ac_ext
67793  cat >>conftest.$ac_ext <<_ACEOF
67794  /* end confdefs.h.  */
67795 -$ac_includes_default
67796 +/* no standard headers */
67797 +
67798  int
67799  main ()
67800  {
67801 @@ -115423,7 +115697,8 @@
67802  cat confdefs.h >>conftest.$ac_ext
67803  cat >>conftest.$ac_ext <<_ACEOF
67804  /* end confdefs.h.  */
67805 -$ac_includes_default
67806 +/* no standard headers */
67807 +
67808  int
67809  main ()
67810  {
67811 @@ -115480,7 +115755,8 @@
67812  cat confdefs.h >>conftest.$ac_ext
67813  cat >>conftest.$ac_ext <<_ACEOF
67814  /* end confdefs.h.  */
67815 -$ac_includes_default
67816 +/* no standard headers */
67817 +
67818  int
67819  main ()
67820  {
67821 @@ -115521,7 +115797,8 @@
67822  cat confdefs.h >>conftest.$ac_ext
67823  cat >>conftest.$ac_ext <<_ACEOF
67824  /* end confdefs.h.  */
67825 -$ac_includes_default
67826 +/* no standard headers */
67827 +
67828  int
67829  main ()
67830  {
67831 @@ -115586,7 +115863,8 @@
67832  cat confdefs.h >>conftest.$ac_ext
67833  cat >>conftest.$ac_ext <<_ACEOF
67834  /* end confdefs.h.  */
67835 -$ac_includes_default
67836 +/* no standard headers */
67837 +
67838  int
67839  main ()
67840  {
67841 @@ -115654,7 +115932,8 @@
67842  cat confdefs.h >>conftest.$ac_ext
67843  cat >>conftest.$ac_ext <<_ACEOF
67844  /* end confdefs.h.  */
67845 -$ac_includes_default
67846 +/* no standard headers */
67847 +
67848  long longval () { return (long) (sizeof (int)); }
67849  unsigned long ulongval () { return (long) (sizeof (int)); }
67850  #include <stdio.h>
67851 @@ -115738,7 +116017,8 @@
67852  cat confdefs.h >>conftest.$ac_ext
67853  cat >>conftest.$ac_ext <<_ACEOF
67854  /* end confdefs.h.  */
67855 -$ac_includes_default
67856 +/* no standard headers */
67857 +
67858  int
67859  main ()
67860  {
67861 @@ -115802,7 +116082,8 @@
67862  cat confdefs.h >>conftest.$ac_ext
67863  cat >>conftest.$ac_ext <<_ACEOF
67864  /* end confdefs.h.  */
67865 -$ac_includes_default
67866 +/* no standard headers */
67867 +
67868  int
67869  main ()
67870  {
67871 @@ -115843,7 +116124,8 @@
67872  cat confdefs.h >>conftest.$ac_ext
67873  cat >>conftest.$ac_ext <<_ACEOF
67874  /* end confdefs.h.  */
67875 -$ac_includes_default
67876 +/* no standard headers */
67877 +
67878  int
67879  main ()
67880  {
67881 @@ -115900,7 +116182,8 @@
67882  cat confdefs.h >>conftest.$ac_ext
67883  cat >>conftest.$ac_ext <<_ACEOF
67884  /* end confdefs.h.  */
67885 -$ac_includes_default
67886 +/* no standard headers */
67887 +
67888  int
67889  main ()
67890  {
67891 @@ -115941,7 +116224,8 @@
67892  cat confdefs.h >>conftest.$ac_ext
67893  cat >>conftest.$ac_ext <<_ACEOF
67894  /* end confdefs.h.  */
67895 -$ac_includes_default
67896 +/* no standard headers */
67897 +
67898  int
67899  main ()
67900  {
67901 @@ -116006,7 +116290,8 @@
67902  cat confdefs.h >>conftest.$ac_ext
67903  cat >>conftest.$ac_ext <<_ACEOF
67904  /* end confdefs.h.  */
67905 -$ac_includes_default
67906 +/* no standard headers */
67907 +
67908  int
67909  main ()
67910  {
67911 @@ -116074,7 +116359,8 @@
67912  cat confdefs.h >>conftest.$ac_ext
67913  cat >>conftest.$ac_ext <<_ACEOF
67914  /* end confdefs.h.  */
67915 -$ac_includes_default
67916 +/* no standard headers */
67917 +
67918  long longval () { return (long) (sizeof (short)); }
67919  unsigned long ulongval () { return (long) (sizeof (short)); }
67920  #include <stdio.h>
67921 @@ -116158,7 +116444,8 @@
67922  cat confdefs.h >>conftest.$ac_ext
67923  cat >>conftest.$ac_ext <<_ACEOF
67924  /* end confdefs.h.  */
67925 -$ac_includes_default
67926 +/* no standard headers */
67927 +
67928  int
67929  main ()
67930  {
67931 @@ -116222,7 +116509,8 @@
67932  cat confdefs.h >>conftest.$ac_ext
67933  cat >>conftest.$ac_ext <<_ACEOF
67934  /* end confdefs.h.  */
67935 -$ac_includes_default
67936 +/* no standard headers */
67937 +
67938  int
67939  main ()
67940  {
67941 @@ -116263,7 +116551,8 @@
67942  cat confdefs.h >>conftest.$ac_ext
67943  cat >>conftest.$ac_ext <<_ACEOF
67944  /* end confdefs.h.  */
67945 -$ac_includes_default
67946 +/* no standard headers */
67947 +
67948  int
67949  main ()
67950  {
67951 @@ -116320,7 +116609,8 @@
67952  cat confdefs.h >>conftest.$ac_ext
67953  cat >>conftest.$ac_ext <<_ACEOF
67954  /* end confdefs.h.  */
67955 -$ac_includes_default
67956 +/* no standard headers */
67957 +
67958  int
67959  main ()
67960  {
67961 @@ -116361,7 +116651,8 @@
67962  cat confdefs.h >>conftest.$ac_ext
67963  cat >>conftest.$ac_ext <<_ACEOF
67964  /* end confdefs.h.  */
67965 -$ac_includes_default
67966 +/* no standard headers */
67967 +
67968  int
67969  main ()
67970  {
67971 @@ -116426,7 +116717,8 @@
67972  cat confdefs.h >>conftest.$ac_ext
67973  cat >>conftest.$ac_ext <<_ACEOF
67974  /* end confdefs.h.  */
67975 -$ac_includes_default
67976 +/* no standard headers */
67977 +
67978  int
67979  main ()
67980  {
67981 @@ -116494,7 +116786,8 @@
67982  cat confdefs.h >>conftest.$ac_ext
67983  cat >>conftest.$ac_ext <<_ACEOF
67984  /* end confdefs.h.  */
67985 -$ac_includes_default
67986 +/* no standard headers */
67987 +
67988  long longval () { return (long) (sizeof (char)); }
67989  unsigned long ulongval () { return (long) (sizeof (char)); }
67990  #include <stdio.h>
67991 @@ -118004,6 +118297,24 @@
67992  
67993  
67994  
67995 +# For SymbianOS, we use a highly cut-down libsupc++. This lets us
67996 +# conditionalise libsupc++'s Makefile.am to include only the necessary sources.
67997 +case "$target" in
67998 +  *arm*-symbianelf)
67999 +  LIBSUPCXX_PRONLY=yes;;
68000 +  *);;
68001 +esac
68002 +
68003 +
68004 +if test x$LIBSUPCXX_PRONLY = xyes; then
68005 +  LIBSUPCXX_PRONLY_TRUE=
68006 +  LIBSUPCXX_PRONLY_FALSE='#'
68007 +else
68008 +  LIBSUPCXX_PRONLY_TRUE='#'
68009 +  LIBSUPCXX_PRONLY_FALSE=
68010 +fi
68011 +
68012 +
68013  # Determine cross-compile flags and AM_CONDITIONALs.
68014  #AC_SUBST(GLIBCXX_IS_NATIVE)
68015  #AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
68016 @@ -118582,6 +118893,13 @@
68017  Usually this means the macro was only invoked conditionally." >&2;}
68018     { (exit 1); exit 1; }; }
68019  fi
68020 +if test -z "${LIBSUPCXX_PRONLY_TRUE}" && test -z "${LIBSUPCXX_PRONLY_FALSE}"; then
68021 +  { { echo "$as_me:$LINENO: error: conditional \"LIBSUPCXX_PRONLY\" was never defined.
68022 +Usually this means the macro was only invoked conditionally." >&5
68023 +echo "$as_me: error: conditional \"LIBSUPCXX_PRONLY\" was never defined.
68024 +Usually this means the macro was only invoked conditionally." >&2;}
68025 +   { (exit 1); exit 1; }; }
68026 +fi
68027  
68028  : ${CONFIG_STATUS=./config.status}
68029  ac_clean_files_save=$ac_clean_files
68030 @@ -119667,6 +119985,8 @@
68031  s,@ABI_TWEAKS_SRCDIR@,$ABI_TWEAKS_SRCDIR,;t t
68032  s,@OS_INC_SRCDIR@,$OS_INC_SRCDIR,;t t
68033  s,@ERROR_CONSTANTS_SRCDIR@,$ERROR_CONSTANTS_SRCDIR,;t t
68034 +s,@LIBSUPCXX_PRONLY_TRUE@,$LIBSUPCXX_PRONLY_TRUE,;t t
68035 +s,@LIBSUPCXX_PRONLY_FALSE@,$LIBSUPCXX_PRONLY_FALSE,;t t
68036  s,@glibcxx_prefixdir@,$glibcxx_prefixdir,;t t
68037  s,@gxx_include_dir@,$gxx_include_dir,;t t
68038  s,@glibcxx_toolexecdir@,$glibcxx_toolexecdir,;t t
68039 diff -Nur a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
68040 --- a/libstdc++-v3/configure.ac 2009-05-07 12:23:06.000000000 +0200
68041 +++ b/libstdc++-v3/configure.ac 2010-01-25 09:50:29.675687743 +0100
68042 @@ -329,6 +329,15 @@
68043  AC_SUBST(ERROR_CONSTANTS_SRCDIR)
68044  
68045  
68046 +# For SymbianOS, we use a highly cut-down libsupc++. This lets us
68047 +# conditionalise libsupc++'s Makefile.am to include only the necessary sources.
68048 +case "$target" in
68049 +  *arm*-symbianelf)
68050 +  LIBSUPCXX_PRONLY=yes;;
68051 +  *);;
68052 +esac
68053 +AM_CONDITIONAL(LIBSUPCXX_PRONLY, test x$LIBSUPCXX_PRONLY = xyes)
68054 +
68055  # Determine cross-compile flags and AM_CONDITIONALs.
68056  #AC_SUBST(GLIBCXX_IS_NATIVE)
68057  #AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
68058 diff -Nur a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in
68059 --- a/libstdc++-v3/doc/Makefile.in      2009-01-15 21:02:11.000000000 +0100
68060 +++ b/libstdc++-v3/doc/Makefile.in      2010-01-25 09:50:29.675687743 +0100
68061 @@ -161,6 +161,8 @@
68062  LIBOBJS = @LIBOBJS@
68063  LIBS = @LIBS@
68064  LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
68065 +LIBSUPCXX_PRONLY_FALSE = @LIBSUPCXX_PRONLY_FALSE@
68066 +LIBSUPCXX_PRONLY_TRUE = @LIBSUPCXX_PRONLY_TRUE@
68067  LIBTOOL = @LIBTOOL@
68068  LIPO = @LIPO@
68069  LN_S = @LN_S@
68070 diff -Nur a/libstdc++-v3/include/c_global/cwchar b/libstdc++-v3/include/c_global/cwchar
68071 --- a/libstdc++-v3/include/c_global/cwchar      2009-04-10 01:23:07.000000000 +0200
68072 +++ b/libstdc++-v3/include/c_global/cwchar      2010-01-25 09:50:29.675687743 +0100
68073 @@ -156,14 +156,18 @@
68074    using ::mbsrtowcs;
68075    using ::putwc;
68076    using ::putwchar;
68077 +#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF
68078    using ::swprintf;
68079 +#endif
68080    using ::swscanf;
68081    using ::ungetwc;
68082    using ::vfwprintf;
68083  #if _GLIBCXX_HAVE_VFWSCANF
68084    using ::vfwscanf;
68085  #endif
68086 +#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF
68087    using ::vswprintf;
68088 +#endif
68089  #if _GLIBCXX_HAVE_VSWSCANF
68090    using ::vswscanf;
68091  #endif
68092 diff -Nur a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
68093 --- a/libstdc++-v3/include/Makefile.am  2009-05-13 02:24:16.000000000 +0200
68094 +++ b/libstdc++-v3/include/Makefile.am  2010-01-25 09:50:29.675687743 +0100
68095 @@ -1125,8 +1125,14 @@
68096  if GLIBCXX_HOSTED
68097  install-data-local: install-headers
68098  else
68099 +if LIBSUPCXX_PRONLY
68100 +# Don't install any headers if we're only putting eh_personality in
68101 +# libsupc++ (e.g. on SymbianOS)
68102 +install-data-local:
68103 +else
68104  install-data-local: install-freestanding-headers
68105  endif
68106 +endif
68107  
68108  # This is a subset of the full install-headers rule.  We only need <cstddef>,
68109  # <limits>, <cstdlib>, <cstdarg>, <new>, <typeinfo>, <exception>, and any
68110 diff -Nur a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
68111 --- a/libstdc++-v3/include/Makefile.in  2009-05-13 02:24:16.000000000 +0200
68112 +++ b/libstdc++-v3/include/Makefile.in  2010-01-25 09:50:29.675687743 +0100
68113 @@ -161,6 +161,8 @@
68114  LIBOBJS = @LIBOBJS@
68115  LIBS = @LIBS@
68116  LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
68117 +LIBSUPCXX_PRONLY_FALSE = @LIBSUPCXX_PRONLY_FALSE@
68118 +LIBSUPCXX_PRONLY_TRUE = @LIBSUPCXX_PRONLY_TRUE@
68119  LIBTOOL = @LIBTOOL@
68120  LIPO = @LIPO@
68121  LN_S = @LN_S@
68122 @@ -1527,7 +1529,10 @@
68123  # the rest are taken from the original source tree.
68124  
68125  @GLIBCXX_HOSTED_TRUE@install-data-local: install-headers
68126 -@GLIBCXX_HOSTED_FALSE@install-data-local: install-freestanding-headers
68127 +# Don't install any headers if we're only putting eh_personality in
68128 +# libsupc++ (e.g. on SymbianOS)
68129 +@GLIBCXX_HOSTED_FALSE@@LIBSUPCXX_PRONLY_TRUE@install-data-local:
68130 +@GLIBCXX_HOSTED_FALSE@@LIBSUPCXX_PRONLY_FALSE@install-data-local: install-freestanding-headers
68131  
68132  # This is a subset of the full install-headers rule.  We only need <cstddef>,
68133  # <limits>, <cstdlib>, <cstdarg>, <new>, <typeinfo>, <exception>, and any
68134 diff -Nur a/libstdc++-v3/libsupc++/eh_arm.cc b/libstdc++-v3/libsupc++/eh_arm.cc
68135 --- a/libstdc++-v3/libsupc++/eh_arm.cc  2009-04-10 01:23:07.000000000 +0200
68136 +++ b/libstdc++-v3/libsupc++/eh_arm.cc  2010-01-25 09:50:29.675687743 +0100
68137 @@ -38,7 +38,7 @@
68138  extern "C" __cxa_type_match_result
68139  __cxa_type_match(_Unwind_Exception* ue_header,
68140                  const std::type_info* catch_type,
68141 -                bool is_reference __attribute__((__unused__)),
68142 +                bool is_reference,
68143                  void** thrown_ptr_p)
68144  {
68145    bool forced_unwind = __is_gxx_forced_unwind_class(ue_header->exception_class);
68146 @@ -68,11 +68,11 @@
68147    if (throw_type->__is_pointer_p())
68148      thrown_ptr = *(void**) thrown_ptr;
68149  
68150 -  if (catch_type->__do_catch(throw_type, &thrown_ptr, 1))
68151 +  if (catch_type->__do_catch (throw_type, &thrown_ptr, 1 + is_reference * 2))
68152      {
68153        *thrown_ptr_p = thrown_ptr;
68154  
68155 -      if (typeid(*catch_type) == typeid (typeid(void*)))
68156 +      if (typeid (*catch_type) == typeid (typeid(void*)))
68157         {
68158           const __pointer_type_info *catch_pointer_type =
68159             static_cast<const __pointer_type_info *> (catch_type);
68160 diff -Nur a/libstdc++-v3/libsupc++/eh_personality.cc b/libstdc++-v3/libsupc++/eh_personality.cc
68161 --- a/libstdc++-v3/libsupc++/eh_personality.cc  2009-04-10 01:23:07.000000000 +0200
68162 +++ b/libstdc++-v3/libsupc++/eh_personality.cc  2010-01-25 09:50:29.675687743 +0100
68163 @@ -89,20 +89,22 @@
68164  // Return an element from a type table.
68165  
68166  static const std::type_info*
68167 -get_ttype_entry(lsda_header_info* info, _uleb128_t i)
68168 +get_ttype_entry(lsda_header_info* info, _uleb128_t i, bool &is_ref)
68169  {
68170    _Unwind_Ptr ptr;
68171  
68172    ptr = (_Unwind_Ptr) (info->TType - (i * 4));
68173    ptr = _Unwind_decode_target2(ptr);
68174    
68175 -  return reinterpret_cast<const std::type_info *>(ptr);
68176 +  is_ref = ptr & 1;
68177 +  
68178 +  return reinterpret_cast<const std::type_info *>(ptr & ~1);
68179  }
68180  
68181  // The ABI provides a routine for matching exception object types.
68182  typedef _Unwind_Control_Block _throw_typet;
68183 -#define get_adjusted_ptr(catch_type, throw_type, thrown_ptr_p) \
68184 -  (__cxa_type_match (throw_type, catch_type, false, thrown_ptr_p) \
68185 +#define get_adjusted_ptr(catch_type, throw_type, is_ref, thrown_ptr_p) \
68186 +  (__cxa_type_match (throw_type, catch_type, is_ref, thrown_ptr_p) \
68187     != ctm_failed)
68188  
68189  // Return true if THROW_TYPE matches one if the filter types.
68190 @@ -118,6 +120,7 @@
68191      {
68192        const std::type_info* catch_type;
68193        _uleb128_t tmp;
68194 +      bool is_ref;
68195  
68196        tmp = *e;
68197        
68198 @@ -129,13 +132,14 @@
68199        tmp = _Unwind_decode_target2((_Unwind_Word) e);
68200  
68201        // Match a ttype entry.
68202 -      catch_type = reinterpret_cast<const std::type_info*>(tmp);
68203 +      is_ref = tmp & 1;
68204 +      catch_type = reinterpret_cast<const std::type_info*>(tmp & ~1);
68205  
68206        // ??? There is currently no way to ask the RTTI code about the
68207        // relationship between two types without reference to a specific
68208        // object.  There should be; then we wouldn't need to mess with
68209        // thrown_ptr here.
68210 -      if (get_adjusted_ptr(catch_type, throw_type, &thrown_ptr))
68211 +      if (get_adjusted_ptr(catch_type, throw_type, is_ref, &thrown_ptr))
68212         return true;
68213  
68214        // Advance to the next entry.
68215 @@ -207,7 +211,7 @@
68216  // Return an element from a type table.
68217  
68218  static const std::type_info *
68219 -get_ttype_entry (lsda_header_info *info, _uleb128_t i)
68220 +get_ttype_entry (lsda_header_info *info, _uleb128_t i, bool &is_ref)
68221  {
68222    _Unwind_Ptr ptr;
68223  
68224 @@ -215,7 +219,9 @@
68225    read_encoded_value_with_base (info->ttype_encoding, info->ttype_base,
68226                                 info->TType - i, &ptr);
68227  
68228 -  return reinterpret_cast<const std::type_info *>(ptr);
68229 +  is_ref = ptr & 1;
68230 +  
68231 +  return reinterpret_cast<const std::type_info *>(ptr & ~1);
68232  }
68233  
68234  // Given the thrown type THROW_TYPE, pointer to a variable containing a
68235 @@ -226,6 +232,7 @@
68236  static bool
68237  get_adjusted_ptr (const std::type_info *catch_type,
68238                   const std::type_info *throw_type,
68239 +                 bool is_ref,
68240                   void **thrown_ptr_p)
68241  {
68242    void *thrown_ptr = *thrown_ptr_p;
68243 @@ -237,7 +244,7 @@
68244    if (throw_type->__is_pointer_p ())
68245      thrown_ptr = *(void **) thrown_ptr;
68246  
68247 -  if (catch_type->__do_catch (throw_type, &thrown_ptr, 1))
68248 +  if (catch_type->__do_catch (throw_type, &thrown_ptr, 1 + is_ref * 2))
68249      {
68250        *thrown_ptr_p = thrown_ptr;
68251        return true;
68252 @@ -267,13 +274,15 @@
68253          return false;
68254  
68255        // Match a ttype entry.
68256 -      catch_type = get_ttype_entry (info, tmp);
68257 +      bool is_ref;
68258 +      
68259 +      catch_type = get_ttype_entry (info, tmp, is_ref);
68260  
68261        // ??? There is currently no way to ask the RTTI code about the
68262        // relationship between two types without reference to a specific
68263        // object.  There should be; then we wouldn't need to mess with
68264        // thrown_ptr here.
68265 -      if (get_adjusted_ptr (catch_type, throw_type, &thrown_ptr))
68266 +      if (get_adjusted_ptr (catch_type, throw_type, is_ref, &thrown_ptr))
68267         return true;
68268      }
68269  }
68270 @@ -582,14 +591,16 @@
68271           else if (ar_filter > 0)
68272             {
68273               // Positive filter values are handlers.
68274 -             catch_type = get_ttype_entry (&info, ar_filter);
68275 +             bool is_ref;
68276 +             
68277 +             catch_type = get_ttype_entry (&info, ar_filter, is_ref);
68278  
68279               // Null catch type is a catch-all handler; we can catch foreign
68280               // exceptions with this.  Otherwise we must match types.
68281               if (! catch_type
68282                   || (throw_type
68283                       && get_adjusted_ptr (catch_type, throw_type,
68284 -                                          &thrown_ptr)))
68285 +                                          is_ref, &thrown_ptr)))
68286                 {
68287                   saw_handler = true;
68288                   break;
68289 diff -Nur a/libstdc++-v3/libsupc++/Makefile.am b/libstdc++-v3/libsupc++/Makefile.am
68290 --- a/libstdc++-v3/libsupc++/Makefile.am        2009-04-10 01:23:07.000000000 +0200
68291 +++ b/libstdc++-v3/libsupc++/Makefile.am        2010-01-25 09:50:29.675687743 +0100
68292 @@ -30,6 +30,11 @@
68293  # 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
68294  noinst_LTLIBRARIES = libsupc++convenience.la
68295  
68296 +if LIBSUPCXX_PRONLY
68297 +sources = \
68298 +       eh_personality.cc
68299 +
68300 +else
68301  
68302  headers = \
68303         exception new typeinfo cxxabi.h cxxabi-forced.h exception_defines.h \
68304 @@ -84,6 +89,7 @@
68305         vec.cc \
68306         vmi_class_type_info.cc \
68307         vterminate.cc
68308 +endif
68309  
68310  libsupc___la_SOURCES = $(sources) $(c_sources)
68311  libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
68312 diff -Nur a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in
68313 --- a/libstdc++-v3/libsupc++/Makefile.in        2009-01-15 21:02:11.000000000 +0100
68314 +++ b/libstdc++-v3/libsupc++/Makefile.in        2010-01-25 09:50:29.675687743 +0100
68315 @@ -38,7 +38,7 @@
68316  build_triplet = @build@
68317  host_triplet = @host@
68318  target_triplet = @target@
68319 -DIST_COMMON = $(glibcxxinstall_HEADERS) $(srcdir)/Makefile.am \
68320 +DIST_COMMON = $(am__glibcxxinstall_HEADERS_DIST) $(srcdir)/Makefile.am \
68321         $(srcdir)/Makefile.in $(top_srcdir)/fragment.am
68322  subdir = libsupc++
68323  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
68324 @@ -87,19 +87,29 @@
68325         pmem_type_info.cc pointer_type_info.cc pure.cc \
68326         si_class_type_info.cc tinfo.cc tinfo2.cc vec.cc \
68327         vmi_class_type_info.cc vterminate.cc cp-demangle.c
68328 -am__objects_1 = array_type_info.lo atexit_arm.lo bad_cast.lo \
68329 -       bad_typeid.lo class_type_info.lo del_op.lo del_opnt.lo \
68330 -       del_opv.lo del_opvnt.lo dyncast.lo eh_alloc.lo eh_arm.lo \
68331 -       eh_aux_runtime.lo eh_call.lo eh_catch.lo eh_exception.lo \
68332 -       eh_globals.lo eh_personality.lo eh_ptr.lo eh_term_handler.lo \
68333 -       eh_terminate.lo eh_throw.lo eh_type.lo eh_unex_handler.lo \
68334 -       enum_type_info.lo function_type_info.lo \
68335 -       fundamental_type_info.lo guard.lo new_handler.lo new_op.lo \
68336 -       new_opnt.lo new_opv.lo new_opvnt.lo pbase_type_info.lo \
68337 -       pmem_type_info.lo pointer_type_info.lo pure.lo \
68338 -       si_class_type_info.lo tinfo.lo tinfo2.lo vec.lo \
68339 -       vmi_class_type_info.lo vterminate.lo
68340 -@GLIBCXX_HOSTED_TRUE@am__objects_2 = cp-demangle.lo
68341 +@LIBSUPCXX_PRONLY_FALSE@am__objects_1 = array_type_info.lo \
68342 +@LIBSUPCXX_PRONLY_FALSE@       atexit_arm.lo bad_cast.lo \
68343 +@LIBSUPCXX_PRONLY_FALSE@       bad_typeid.lo class_type_info.lo \
68344 +@LIBSUPCXX_PRONLY_FALSE@       del_op.lo del_opnt.lo del_opv.lo \
68345 +@LIBSUPCXX_PRONLY_FALSE@       del_opvnt.lo dyncast.lo eh_alloc.lo \
68346 +@LIBSUPCXX_PRONLY_FALSE@       eh_arm.lo eh_aux_runtime.lo eh_call.lo \
68347 +@LIBSUPCXX_PRONLY_FALSE@       eh_catch.lo eh_exception.lo \
68348 +@LIBSUPCXX_PRONLY_FALSE@       eh_globals.lo eh_personality.lo \
68349 +@LIBSUPCXX_PRONLY_FALSE@       eh_ptr.lo eh_term_handler.lo \
68350 +@LIBSUPCXX_PRONLY_FALSE@       eh_terminate.lo eh_throw.lo eh_type.lo \
68351 +@LIBSUPCXX_PRONLY_FALSE@       eh_unex_handler.lo enum_type_info.lo \
68352 +@LIBSUPCXX_PRONLY_FALSE@       function_type_info.lo \
68353 +@LIBSUPCXX_PRONLY_FALSE@       fundamental_type_info.lo guard.lo \
68354 +@LIBSUPCXX_PRONLY_FALSE@       new_handler.lo new_op.lo new_opnt.lo \
68355 +@LIBSUPCXX_PRONLY_FALSE@       new_opv.lo new_opvnt.lo \
68356 +@LIBSUPCXX_PRONLY_FALSE@       pbase_type_info.lo pmem_type_info.lo \
68357 +@LIBSUPCXX_PRONLY_FALSE@       pointer_type_info.lo pure.lo \
68358 +@LIBSUPCXX_PRONLY_FALSE@       si_class_type_info.lo tinfo.lo \
68359 +@LIBSUPCXX_PRONLY_FALSE@       tinfo2.lo vec.lo \
68360 +@LIBSUPCXX_PRONLY_FALSE@       vmi_class_type_info.lo vterminate.lo
68361 +@LIBSUPCXX_PRONLY_TRUE@am__objects_1 = eh_personality.lo
68362 +@GLIBCXX_HOSTED_TRUE@@LIBSUPCXX_PRONLY_FALSE@am__objects_2 =  \
68363 +@GLIBCXX_HOSTED_TRUE@@LIBSUPCXX_PRONLY_FALSE@  cp-demangle.lo
68364  am_libsupc___la_OBJECTS = $(am__objects_1) $(am__objects_2)
68365  libsupc___la_OBJECTS = $(am_libsupc___la_OBJECTS)
68366  libsupc__convenience_la_LIBADD =
68367 @@ -132,6 +142,9 @@
68368  SOURCES = $(libsupc___la_SOURCES) $(libsupc__convenience_la_SOURCES)
68369  DIST_SOURCES = $(am__libsupc___la_SOURCES_DIST) \
68370         $(am__libsupc__convenience_la_SOURCES_DIST)
68371 +am__glibcxxinstall_HEADERS_DIST = exception new typeinfo cxxabi.h \
68372 +       cxxabi-forced.h exception_defines.h initializer_list \
68373 +       exception_ptr.h
68374  glibcxxinstallHEADERS_INSTALL = $(INSTALL_HEADER)
68375  HEADERS = $(glibcxxinstall_HEADERS)
68376  ETAGS = etags
68377 @@ -231,6 +244,8 @@
68378  LIBOBJS = @LIBOBJS@
68379  LIBS = @LIBS@
68380  LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
68381 +LIBSUPCXX_PRONLY_FALSE = @LIBSUPCXX_PRONLY_FALSE@
68382 +LIBSUPCXX_PRONLY_TRUE = @LIBSUPCXX_PRONLY_TRUE@
68383  LIBTOOL = @LIBTOOL@
68384  LIPO = @LIPO@
68385  LN_S = @LN_S@
68386 @@ -365,57 +380,60 @@
68387  toolexeclib_LTLIBRARIES = libsupc++.la
68388  # 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
68389  noinst_LTLIBRARIES = libsupc++convenience.la
68390 -headers = \
68391 -       exception new typeinfo cxxabi.h cxxabi-forced.h exception_defines.h \
68392 -       initializer_list exception_ptr.h
68393 -
68394 -@GLIBCXX_HOSTED_TRUE@c_sources = \
68395 -@GLIBCXX_HOSTED_TRUE@  cp-demangle.c 
68396 -
68397 -sources = \
68398 -       array_type_info.cc \
68399 -       atexit_arm.cc \
68400 -       bad_cast.cc \
68401 -       bad_typeid.cc \
68402 -       class_type_info.cc \
68403 -       del_op.cc \
68404 -       del_opnt.cc \
68405 -       del_opv.cc \
68406 -       del_opvnt.cc \
68407 -       dyncast.cc \
68408 -       eh_alloc.cc \
68409 -       eh_arm.cc \
68410 -       eh_aux_runtime.cc \
68411 -       eh_call.cc \
68412 -       eh_catch.cc \
68413 -       eh_exception.cc \
68414 -       eh_globals.cc \
68415 -       eh_personality.cc \
68416 -       eh_ptr.cc \
68417 -       eh_term_handler.cc \
68418 -       eh_terminate.cc \
68419 -       eh_throw.cc \
68420 -       eh_type.cc \
68421 -       eh_unex_handler.cc \
68422 -       enum_type_info.cc \
68423 -       function_type_info.cc \
68424 -       fundamental_type_info.cc \
68425 -       guard.cc \
68426 -       new_handler.cc \
68427 -       new_op.cc \
68428 -       new_opnt.cc \
68429 -       new_opv.cc \
68430 -       new_opvnt.cc \
68431 -       pbase_type_info.cc \
68432 -       pmem_type_info.cc \
68433 -       pointer_type_info.cc \
68434 -       pure.cc \
68435 -       si_class_type_info.cc \
68436 -       tinfo.cc \
68437 -       tinfo2.cc \
68438 -       vec.cc \
68439 -       vmi_class_type_info.cc \
68440 -       vterminate.cc
68441 +@LIBSUPCXX_PRONLY_FALSE@sources = \
68442 +@LIBSUPCXX_PRONLY_FALSE@       array_type_info.cc \
68443 +@LIBSUPCXX_PRONLY_FALSE@       atexit_arm.cc \
68444 +@LIBSUPCXX_PRONLY_FALSE@       bad_cast.cc \
68445 +@LIBSUPCXX_PRONLY_FALSE@       bad_typeid.cc \
68446 +@LIBSUPCXX_PRONLY_FALSE@       class_type_info.cc \
68447 +@LIBSUPCXX_PRONLY_FALSE@       del_op.cc \
68448 +@LIBSUPCXX_PRONLY_FALSE@       del_opnt.cc \
68449 +@LIBSUPCXX_PRONLY_FALSE@       del_opv.cc \
68450 +@LIBSUPCXX_PRONLY_FALSE@       del_opvnt.cc \
68451 +@LIBSUPCXX_PRONLY_FALSE@       dyncast.cc \
68452 +@LIBSUPCXX_PRONLY_FALSE@       eh_alloc.cc \
68453 +@LIBSUPCXX_PRONLY_FALSE@       eh_arm.cc \
68454 +@LIBSUPCXX_PRONLY_FALSE@       eh_aux_runtime.cc \
68455 +@LIBSUPCXX_PRONLY_FALSE@       eh_call.cc \
68456 +@LIBSUPCXX_PRONLY_FALSE@       eh_catch.cc \
68457 +@LIBSUPCXX_PRONLY_FALSE@       eh_exception.cc \
68458 +@LIBSUPCXX_PRONLY_FALSE@       eh_globals.cc \
68459 +@LIBSUPCXX_PRONLY_FALSE@       eh_personality.cc \
68460 +@LIBSUPCXX_PRONLY_FALSE@       eh_ptr.cc \
68461 +@LIBSUPCXX_PRONLY_FALSE@       eh_term_handler.cc \
68462 +@LIBSUPCXX_PRONLY_FALSE@       eh_terminate.cc \
68463 +@LIBSUPCXX_PRONLY_FALSE@       eh_throw.cc \
68464 +@LIBSUPCXX_PRONLY_FALSE@       eh_type.cc \
68465 +@LIBSUPCXX_PRONLY_FALSE@       eh_unex_handler.cc \
68466 +@LIBSUPCXX_PRONLY_FALSE@       enum_type_info.cc \
68467 +@LIBSUPCXX_PRONLY_FALSE@       function_type_info.cc \
68468 +@LIBSUPCXX_PRONLY_FALSE@       fundamental_type_info.cc \
68469 +@LIBSUPCXX_PRONLY_FALSE@       guard.cc \
68470 +@LIBSUPCXX_PRONLY_FALSE@       new_handler.cc \
68471 +@LIBSUPCXX_PRONLY_FALSE@       new_op.cc \
68472 +@LIBSUPCXX_PRONLY_FALSE@       new_opnt.cc \
68473 +@LIBSUPCXX_PRONLY_FALSE@       new_opv.cc \
68474 +@LIBSUPCXX_PRONLY_FALSE@       new_opvnt.cc \
68475 +@LIBSUPCXX_PRONLY_FALSE@       pbase_type_info.cc \
68476 +@LIBSUPCXX_PRONLY_FALSE@       pmem_type_info.cc \
68477 +@LIBSUPCXX_PRONLY_FALSE@       pointer_type_info.cc \
68478 +@LIBSUPCXX_PRONLY_FALSE@       pure.cc \
68479 +@LIBSUPCXX_PRONLY_FALSE@       si_class_type_info.cc \
68480 +@LIBSUPCXX_PRONLY_FALSE@       tinfo.cc \
68481 +@LIBSUPCXX_PRONLY_FALSE@       tinfo2.cc \
68482 +@LIBSUPCXX_PRONLY_FALSE@       vec.cc \
68483 +@LIBSUPCXX_PRONLY_FALSE@       vmi_class_type_info.cc \
68484 +@LIBSUPCXX_PRONLY_FALSE@       vterminate.cc
68485 +
68486 +@LIBSUPCXX_PRONLY_TRUE@sources = \
68487 +@LIBSUPCXX_PRONLY_TRUE@        eh_personality.cc
68488 +
68489 +@LIBSUPCXX_PRONLY_FALSE@headers = \
68490 +@LIBSUPCXX_PRONLY_FALSE@       exception new typeinfo cxxabi.h cxxabi-forced.h exception_defines.h \
68491 +@LIBSUPCXX_PRONLY_FALSE@       initializer_list exception_ptr.h
68492 +
68493 +@GLIBCXX_HOSTED_TRUE@@LIBSUPCXX_PRONLY_FALSE@c_sources = \
68494 +@GLIBCXX_HOSTED_TRUE@@LIBSUPCXX_PRONLY_FALSE@  cp-demangle.c 
68495  
68496  libsupc___la_SOURCES = $(sources) $(c_sources)
68497  libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
68498 diff -Nur a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in
68499 --- a/libstdc++-v3/Makefile.in  2009-01-15 21:02:11.000000000 +0100
68500 +++ b/libstdc++-v3/Makefile.in  2010-01-25 09:50:29.675687743 +0100
68501 @@ -193,6 +193,8 @@
68502  LIBOBJS = @LIBOBJS@
68503  LIBS = @LIBS@
68504  LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
68505 +LIBSUPCXX_PRONLY_FALSE = @LIBSUPCXX_PRONLY_FALSE@
68506 +LIBSUPCXX_PRONLY_TRUE = @LIBSUPCXX_PRONLY_TRUE@
68507  LIBTOOL = @LIBTOOL@
68508  LIPO = @LIPO@
68509  LN_S = @LN_S@
68510 diff -Nur a/libstdc++-v3/po/Makefile.in b/libstdc++-v3/po/Makefile.in
68511 --- a/libstdc++-v3/po/Makefile.in       2009-01-15 21:02:11.000000000 +0100
68512 +++ b/libstdc++-v3/po/Makefile.in       2010-01-25 09:50:29.675687743 +0100
68513 @@ -161,6 +161,8 @@
68514  LIBOBJS = @LIBOBJS@
68515  LIBS = @LIBS@
68516  LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
68517 +LIBSUPCXX_PRONLY_FALSE = @LIBSUPCXX_PRONLY_FALSE@
68518 +LIBSUPCXX_PRONLY_TRUE = @LIBSUPCXX_PRONLY_TRUE@
68519  LIBTOOL = @LIBTOOL@
68520  LIPO = @LIPO@
68521  LN_S = @LN_S@
68522 diff -Nur a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
68523 --- a/libstdc++-v3/src/Makefile.in      2009-01-17 03:03:25.000000000 +0100
68524 +++ b/libstdc++-v3/src/Makefile.in      2010-01-25 09:50:29.675687743 +0100
68525 @@ -221,6 +221,8 @@
68526  LIBOBJS = @LIBOBJS@
68527  LIBS = @LIBS@
68528  LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
68529 +LIBSUPCXX_PRONLY_FALSE = @LIBSUPCXX_PRONLY_FALSE@
68530 +LIBSUPCXX_PRONLY_TRUE = @LIBSUPCXX_PRONLY_TRUE@
68531  LIBTOOL = @LIBTOOL@
68532  LIPO = @LIPO@
68533  LN_S = @LN_S@
68534 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
68535 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc        2009-04-10 01:23:07.000000000 +0200
68536 +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc        2010-01-25 09:50:29.675687743 +0100
68537 @@ -1,4 +1,5 @@
68538  // { dg-options "-std=gnu++0x" }
68539 +// { dg-require-string-conversions "" }
68540  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
68541  
68542  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
68543 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
68544 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc        2009-04-10 01:23:07.000000000 +0200
68545 +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc        2010-01-25 09:50:29.675687743 +0100
68546 @@ -1,4 +1,5 @@
68547  // { dg-options "-std=gnu++0x" }
68548 +// { dg-require-string-conversions "" }
68549  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
68550  
68551  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
68552 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
68553 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc        2009-04-10 01:23:07.000000000 +0200
68554 +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc        2010-01-25 09:50:29.675687743 +0100
68555 @@ -1,4 +1,5 @@
68556  // { dg-options "-std=gnu++0x" }
68557 +// { dg-require-string-conversions "" }
68558  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
68559  
68560  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
68561 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
68562 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc        2009-04-10 01:23:07.000000000 +0200
68563 +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc        2010-01-25 09:50:29.675687743 +0100
68564 @@ -1,4 +1,5 @@
68565  // { dg-options "-std=gnu++0x" }
68566 +// { dg-require-string-conversions "" }
68567  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
68568  
68569  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
68570 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
68571 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc       2009-04-10 01:23:07.000000000 +0200
68572 +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc       2010-01-25 09:50:29.675687743 +0100
68573 @@ -1,4 +1,5 @@
68574  // { dg-options "-std=gnu++0x" }
68575 +// { dg-require-string-conversions "" }
68576  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
68577  
68578  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
68579 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
68580 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc       2009-04-10 01:23:07.000000000 +0200
68581 +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc       2010-01-25 09:50:29.675687743 +0100
68582 @@ -1,4 +1,5 @@
68583  // { dg-options "-std=gnu++0x" }
68584 +// { dg-require-string-conversions "" }
68585  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
68586  
68587  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
68588 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
68589 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc       2009-04-10 01:23:07.000000000 +0200
68590 +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc       2010-01-25 09:50:29.675687743 +0100
68591 @@ -1,4 +1,5 @@
68592  // { dg-options "-std=gnu++0x" }
68593 +// { dg-require-string-conversions "" }
68594  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
68595  
68596  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
68597 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
68598 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc      2009-04-10 01:23:07.000000000 +0200
68599 +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc      2010-01-25 09:50:29.675687743 +0100
68600 @@ -1,4 +1,5 @@
68601  // { dg-options "-std=gnu++0x" }
68602 +// { dg-require-string-conversions "" }
68603  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
68604  
68605  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
68606 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
68607 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc  2009-04-10 01:23:07.000000000 +0200
68608 +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc  2010-01-25 09:50:29.675687743 +0100
68609 @@ -1,4 +1,5 @@
68610  // { dg-options "-std=gnu++0x" }
68611 +// { dg-require-string-conversions "" }
68612  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
68613  
68614  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
68615 diff -Nur a/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc b/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
68616 --- a/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc 2009-04-10 01:23:07.000000000 +0200
68617 +++ b/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc 2010-01-25 09:50:29.675687743 +0100
68618 @@ -1,5 +1,6 @@
68619  // { dg-do compile }
68620  // { dg-require-c-std "" }
68621 +// { dg-require-swprintf "" }
68622  
68623  // Copyright (C) 2007, 2009 Free Software Foundation, Inc.
68624  //
68625 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
68626 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc   2009-04-10 01:23:07.000000000 +0200
68627 +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc   2010-01-25 09:50:29.675687743 +0100
68628 @@ -20,6 +20,7 @@
68629  // 27.8.1.4 Overridden virtual functions
68630  
68631  // { dg-require-fileio "" }
68632 +// { dg-require-binary-io "" }
68633  
68634  #include <fstream>
68635  #include <testsuite_hooks.h>
68636 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
68637 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc   2009-04-10 01:23:07.000000000 +0200
68638 +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc   2010-01-25 09:50:29.675687743 +0100
68639 @@ -20,6 +20,7 @@
68640  // 27.8.1.4 Overridden virtual functions
68641  
68642  // { dg-require-fileio "" }
68643 +// { dg-require-binary-io "" }
68644  
68645  #include <fstream>
68646  #include <testsuite_hooks.h>
68647 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
68648 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc     2009-04-10 01:23:07.000000000 +0200
68649 +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc     2010-01-25 09:50:29.675687743 +0100
68650 @@ -24,6 +24,7 @@
68651  // 27.8.1.4 Overridden virtual functions
68652  
68653  // { dg-require-fileio "" }
68654 +// { dg-require-binary-io "" }
68655  
68656  #include <fstream>
68657  #include <testsuite_hooks.h>
68658 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
68659 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc     2009-04-10 01:23:07.000000000 +0200
68660 +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc     2010-01-25 09:50:29.675687743 +0100
68661 @@ -24,6 +24,7 @@
68662  // 27.8.1.4 Overridden virtual functions
68663  
68664  // { dg-require-fileio "" }
68665 +// { dg-require-binary-io "" }
68666  
68667  #include <fstream>
68668  #include <testsuite_hooks.h>
68669 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
68670 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc     2009-04-10 01:23:07.000000000 +0200
68671 +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc     2010-01-25 09:50:29.675687743 +0100
68672 @@ -24,6 +24,7 @@
68673  // 27.8.1.4 Overridden virtual functions
68674  
68675  // { dg-require-fileio "" }
68676 +// { dg-require-binary-io "" }
68677  
68678  #include <fstream>
68679  #include <testsuite_hooks.h>
68680 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
68681 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc     2009-04-10 01:23:07.000000000 +0200
68682 +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc     2010-01-25 09:50:29.675687743 +0100
68683 @@ -24,6 +24,7 @@
68684  // 27.8.1.4 Overridden virtual functions
68685  
68686  // { dg-require-fileio "" }
68687 +// { dg-require-binary-io "" }
68688  
68689  #include <fstream>
68690  #include <testsuite_hooks.h>
68691 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
68692 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc     2009-04-10 01:23:07.000000000 +0200
68693 +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc     2010-01-25 09:50:29.675687743 +0100
68694 @@ -17,6 +17,8 @@
68695  
68696  // 27.8.1.4 Overridden virtual functions
68697  
68698 +// { dg-require-binary-io "" }
68699 +
68700  #include <fstream>
68701  #include <locale>
68702  #include <testsuite_hooks.h>
68703 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
68704 --- a/libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc        2009-04-10 01:23:07.000000000 +0200
68705 +++ b/libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc        2010-01-25 09:50:29.675687743 +0100
68706 @@ -26,6 +26,7 @@
68707  // @diff@ %-*.tst %-*.txt
68708  
68709  // { dg-require-fileio "" }
68710 +// { dg-require-binary-io "" }
68711  
68712  #include <istream>
68713  #include <fstream>
68714 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
68715 --- a/libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc     2009-04-10 01:23:07.000000000 +0200
68716 +++ b/libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc     2010-01-25 09:50:29.675687743 +0100
68717 @@ -19,6 +19,8 @@
68718  // causes "in_avail" to return an incorrect value.
68719  // { dg-do run { xfail arm*-*-elf arm*-*-eabi } }
68720  
68721 +// { dg-require-binary-io "" }
68722 +
68723  // 27.6.1.3 unformatted input functions
68724  // @require@ %-*.tst %-*.txt
68725  // @diff@ %-*.tst %-*.txt
68726 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
68727 --- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc   2009-04-10 01:23:07.000000000 +0200
68728 +++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc   2010-01-25 09:50:29.675687743 +0100
68729 @@ -1,3 +1,5 @@
68730 +// { dg-require-swprintf "" }
68731 +
68732  // Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
68733  //
68734  // This file is part of the GNU ISO C++ Library.  This library is free
68735 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
68736 --- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc  2009-04-28 12:32:22.000000000 +0200
68737 +++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc  2010-01-25 09:50:29.675687743 +0100
68738 @@ -1,4 +1,5 @@
68739  // { dg-options "-std=gnu++0x" }
68740 +// { dg-require-swprintf "" }
68741  
68742  // Copyright (C) 2007, 2008, 2009 Free Software Foundation
68743  //
68744 diff -Nur a/libstdc++-v3/testsuite/27_io/objects/char/10.cc b/libstdc++-v3/testsuite/27_io/objects/char/10.cc
68745 --- a/libstdc++-v3/testsuite/27_io/objects/char/10.cc   2009-04-10 01:23:07.000000000 +0200
68746 +++ b/libstdc++-v3/testsuite/27_io/objects/char/10.cc   2010-01-25 09:50:29.675687743 +0100
68747 @@ -18,6 +18,7 @@
68748  // <http://www.gnu.org/licenses/>.
68749   
68750  // { dg-require-fileio "" }
68751 +// { dg-require-binary-io "" }
68752  
68753  #include <iostream>
68754  #include <cstdio>
68755 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
68756 --- a/libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc      2009-04-10 01:23:07.000000000 +0200
68757 +++ b/libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc      2010-01-25 09:50:29.675687743 +0100
68758 @@ -1,4 +1,5 @@
68759  // { dg-options "-std=gnu++0x" }
68760 +// { dg-require-string-conversions "" }
68761  
68762  // 2007-10-16  Paolo Carlini  <pcarlini@suse.de>
68763  
68764 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
68765 --- a/libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc   2009-04-10 01:23:07.000000000 +0200
68766 +++ b/libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc   2010-01-25 09:50:29.675687743 +0100
68767 @@ -1,4 +1,5 @@
68768  // { dg-options "-std=gnu++0x" }
68769 +// { dg-require-string-conversions "" }
68770  
68771  // 2007-10-16  Paolo Carlini  <pcarlini@suse.de>
68772  
68773 diff -Nur a/libstdc++-v3/testsuite/ext/vstring/init-list.cc b/libstdc++-v3/testsuite/ext/vstring/init-list.cc
68774 --- a/libstdc++-v3/testsuite/ext/vstring/init-list.cc   2009-04-10 01:23:07.000000000 +0200
68775 +++ b/libstdc++-v3/testsuite/ext/vstring/init-list.cc   2010-01-25 09:50:29.675687743 +0100
68776 @@ -17,6 +17,7 @@
68777  //
68778  
68779  // { dg-options "-std=gnu++0x" }
68780 +// { dg-require-string-conversions "" }
68781  
68782  #include <ext/vstring.h>
68783  #include <testsuite_hooks.h>
68784 diff -Nur a/libstdc++-v3/testsuite/ext/vstring/moveable.cc b/libstdc++-v3/testsuite/ext/vstring/moveable.cc
68785 --- a/libstdc++-v3/testsuite/ext/vstring/moveable.cc    2009-04-10 01:23:07.000000000 +0200
68786 +++ b/libstdc++-v3/testsuite/ext/vstring/moveable.cc    2010-01-25 09:50:29.675687743 +0100
68787 @@ -1,4 +1,5 @@
68788  // { dg-options "-std=gnu++0x" }
68789 +// { dg-require-string-conversions "" }
68790  
68791  // Copyright (C) 2007, 2009 Free Software Foundation, Inc.
68792  //
68793 diff -Nur a/libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc b/libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc
68794 --- a/libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc     2009-04-10 01:23:07.000000000 +0200
68795 +++ b/libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc     2010-01-25 09:50:29.675687743 +0100
68796 @@ -1,4 +1,5 @@
68797  // { dg-options "-std=gnu++0x" }
68798 +// { dg-require-string-conversions "" }
68799  
68800  // 2007-10-15  Paolo Carlini  <pcarlini@suse.de>
68801  
68802 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
68803 --- a/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc      2009-04-10 01:23:07.000000000 +0200
68804 +++ b/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc      2010-01-25 09:50:29.675687743 +0100
68805 @@ -1,6 +1,7 @@
68806  // { dg-do compile }
68807  // { dg-options "-std=gnu++0x" }
68808  // { dg-require-cstdint "" }
68809 +// { dg-require-string-conversions "" }
68810  
68811  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
68812  //
68813 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
68814 --- a/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc      2009-04-10 01:23:07.000000000 +0200
68815 +++ b/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc      2010-01-25 09:50:29.675687743 +0100
68816 @@ -1,6 +1,7 @@
68817  // { dg-do compile }
68818  // { dg-options "-std=gnu++0x" }
68819  // { dg-require-cstdint "" }
68820 +// { dg-require-string-conversions "" }
68821  
68822  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
68823  //
68824 diff -Nur a/libstdc++-v3/testsuite/lib/dg-options.exp b/libstdc++-v3/testsuite/lib/dg-options.exp
68825 --- a/libstdc++-v3/testsuite/lib/dg-options.exp 2009-04-10 01:23:07.000000000 +0200
68826 +++ b/libstdc++-v3/testsuite/lib/dg-options.exp 2010-01-25 09:50:29.675687743 +0100
68827 @@ -142,3 +142,21 @@
68828      }
68829      return
68830  }
68831 +
68832 +proc dg-require-swprintf { args } {
68833 +    if { ![ check_v3_target_swprintf ] } {
68834 +        upvar dg-do-what dg-do-what
68835 +        set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
68836 +        return
68837 +    }
68838 +    return
68839 +}
68840 +
68841 +proc dg-require-binary-io { args } {
68842 +    if { ![ check_v3_target_binary_io ] } {
68843 +        upvar dg-do-what dg-do-what
68844 +        set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
68845 +        return
68846 +    }
68847 +    return
68848 +}
68849 diff -Nur a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
68850 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp  2009-05-21 13:30:55.000000000 +0200
68851 +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp  2010-01-25 09:50:29.675687743 +0100
68852 @@ -204,14 +204,23 @@
68853         # directory, and then add that to the search path.
68854         foreach src [glob "${srcdir}/util/*.h" \
68855                           "${srcdir}/util/*.cc" \
68856 -                         "${srcdir}/util/*/*.hpp" \
68857 +                         "${srcdir}/util/*.tcc" \
68858 +                         "${srcdir}/util/*.hpp" \
68859 +                         "${srcdir}/util/*/*.h" \
68860                           "${srcdir}/util/*/*.cc" \
68861 +                         "${srcdir}/util/*/*.tcc" \
68862                           "${srcdir}/util/*/*.hpp" \
68863 +                         "${srcdir}/util/*/*/*.h" \
68864                           "${srcdir}/util/*/*/*.cc" \
68865 +                         "${srcdir}/util/*/*/*.tcc" \
68866                           "${srcdir}/util/*/*/*.hpp" \
68867 +                         "${srcdir}/util/*/*/*/*.h" \
68868                           "${srcdir}/util/*/*/*/*.cc" \
68869 +                         "${srcdir}/util/*/*/*/*.tcc" \
68870                           "${srcdir}/util/*/*/*/*.hpp" \
68871 +                         "${srcdir}/util/*/*/*/*/*.h" \
68872                           "${srcdir}/util/*/*/*/*/*.cc" \
68873 +                         "${srcdir}/util/*/*/*/*/*.tcc" \
68874                           "${srcdir}/util/*/*/*/*/*.hpp" ] {
68875             # Remove everything up to "util/..."
68876             set dst [string range $src [string length "${srcdir}/"] end]
68877 @@ -1374,3 +1383,119 @@
68878      verbose "check_v3_target_string_conversions: $et_string_conversions" 2
68879      return $et_string_conversions
68880  }
68881 +
68882 +proc check_v3_target_swprintf { } {
68883 +    global cxxflags
68884 +    global DEFAULT_CXXFLAGS
68885 +    global et_swprintf
68886 +
68887 +    global tool
68888 +
68889 +    if { ![info exists et_swprintf_target_name] } {
68890 +        set et_swprintf_target_name ""
68891 +    }
68892 +
68893 +    # If the target has changed since we set the cached value, clear it.
68894 +    set current_target [current_target_name]
68895 +    if { $current_target != $et_swprintf_target_name } {
68896 +        verbose "check_v3_target_swprintf: `$et_swprintf_target_name'" 2
68897 +        set et_swprintf_target_name $current_target
68898 +        if [info exists et_swprintf] {
68899 +            verbose "check_v3_target_swprintf: removing cached result" 2
68900 +            unset et_swprintf
68901 +        }
68902 +    }
68903 +
68904 +    if [info exists et_swprintf] {
68905 +        verbose "check_v3_target_swprintf: using cached result" 2
68906 +    } else {
68907 +        set et_swprintf 0
68908 +       
68909 +       # Set up and compile a C++0x test program that depends
68910 +        # on a standard swprintf function to be available.
68911 +        set src swprintf[pid].cc
68912 +        set exe swprintf[pid].exe
68913 +
68914 +        set f [open $src "w"]
68915 +        puts $f "#include <bits/c++config.h>"
68916 +        puts $f "int main()"
68917 +        puts $f "#if !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)"
68918 +        puts $f "{ return 0; }"
68919 +        puts $f "#endif"
68920 +        close $f
68921 +
68922 +        set cxxflags_saved $cxxflags
68923 +        set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror"
68924 +
68925 +        set lines [v3_target_compile $src $exe executable ""]
68926 +        set cxxflags $cxxflags_saved
68927 +        file delete $src
68928 +
68929 +        if [string match "" $lines] {
68930 +            # No error message, compilation succeeded.
68931 +            set et_swprintf 1
68932 +        } else {
68933 +            verbose "check_v3_target_swprintf: compilation failed" 2
68934 +        }
68935 +    }
68936 +    verbose "check_v3_target_swprintf: $et_swprintf" 2
68937 +    return $et_swprintf
68938 +}
68939 +
68940 +proc check_v3_target_binary_io { } {
68941 +    global cxxflags
68942 +    global DEFAULT_CXXFLAGS
68943 +    global et_binary_io
68944 +
68945 +    global tool
68946 +
68947 +    if { ![info exists et_binary_io_target_name] } {
68948 +        set et_binary_io_target_name ""
68949 +    }
68950 +
68951 +    # If the target has changed since we set the cached value, clear it.
68952 +    set current_target [current_target_name]
68953 +    if { $current_target != $et_binary_io_target_name } {
68954 +        verbose "check_v3_target_binary_io: `$et_binary_io_target_name'" 2
68955 +        set et_binary_io_target_name $current_target
68956 +        if [info exists et_binary_io] {
68957 +            verbose "check_v3_target_binary_io: removing cached result" 2
68958 +            unset et_binary_io
68959 +        }
68960 +    }
68961 +
68962 +    if [info exists et_binary_io] {
68963 +        verbose "check_v3_target_binary_io: using cached result" 2
68964 +    } else {
68965 +        set et_binary_io 0
68966 +       
68967 +       # Set up and compile a C++0x test program that depends
68968 +        # on text and binary I/O being the same.
68969 +        set src binary_io[pid].cc
68970 +        set exe binary_io[pid].exe
68971 +
68972 +        set f [open $src "w"]
68973 +        puts $f "#include <bits/c++config.h>"
68974 +        puts $f "int main()"
68975 +        puts $f "#if !defined(_GLIBCXX_HAVE_DOS_BASED_FILESYSTEM)"
68976 +        puts $f "{ return 0; }"
68977 +        puts $f "#endif"
68978 +        close $f
68979 +
68980 +        set cxxflags_saved $cxxflags
68981 +        set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror"
68982 +
68983 +        set lines [v3_target_compile $src $exe executable ""]
68984 +        set cxxflags $cxxflags_saved
68985 +        file delete $src
68986 +
68987 +        if [string match "" $lines] {
68988 +            # No error message, compilation succeeded.
68989 +            set et_binary_io 1
68990 +        } else {
68991 +            verbose "check_v3_target_binary_io: compilation failed" 2
68992 +        }
68993 +    }
68994 +    verbose "check_v3_target_binary_io: $et_binary_io" 2
68995 +    return $et_binary_io
68996 +}
68997 diff -Nur a/libstdc++-v3/testsuite/lib/prune.exp b/libstdc++-v3/testsuite/lib/prune.exp
68998 --- a/libstdc++-v3/testsuite/lib/prune.exp      2009-04-10 01:23:07.000000000 +0200
68999 +++ b/libstdc++-v3/testsuite/lib/prune.exp      2010-01-25 09:50:29.675687743 +0100
69000 @@ -30,5 +30,23 @@
69001      regsub -all "(^|\n)\[^\n\]*: Additional NOP may be necessary to workaround Itanium processor A/B step errata" $text "" text
69002      regsub -all "(^|\n)\[^\n*\]*: Assembler messages:\[^\n\]*" $text "" text
69003  
69004 +    if { [ishost "sparc*-*-solaris2*"] } {
69005 +       # When testing a compiler built for SPARC Solaris 2.9 (or earlier)
69006 +       # on a host running Solaris 2.10 (or later), we get this warning 
69007 +       # from the static linker when building with g++:
69008 +       #
69009 +       #   libm.so.1, needed by .../libstdc++.so may conflict with
69010 +       #   libm.so
69011 +       #
69012 +       # The warning is issued because libstdc++ is linked against
69013 +       # libm.so.1 (from the Solaris 2.9 sysroot), whereas Solaris 2.10
69014 +       # provides both libm.so.2 and libm.so.1.  On Solaris 2.10, libc.so
69015 +       # depends on libm.so.2, so all programs pull in libm.so.2.
69016 +       #
69017 +       # Pulling both libraries must in fact be harmless, as, otherwise,
69018 +       # programs built for Solaris 2.9 would break on Solaris 2.10.
69019 +       regsub -all "(^|\n)\[^\n\]*: warning: libm.so.1, needed by \[^\n\]*, may conflict with libm.so.2" $text "" text
69020 +    }
69021 +
69022      return $text
69023  }
69024 diff -Nur a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in
69025 --- a/libstdc++-v3/testsuite/Makefile.in        2009-02-23 21:42:53.000000000 +0100
69026 +++ b/libstdc++-v3/testsuite/Makefile.in        2010-01-25 09:50:29.675687743 +0100
69027 @@ -161,6 +161,8 @@
69028  LIBOBJS = @LIBOBJS@
69029  LIBS = @LIBS@
69030  LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
69031 +LIBSUPCXX_PRONLY_FALSE = @LIBSUPCXX_PRONLY_FALSE@
69032 +LIBSUPCXX_PRONLY_TRUE = @LIBSUPCXX_PRONLY_TRUE@
69033  LIBTOOL = @LIBTOOL@
69034  LIPO = @LIPO@
69035  LN_S = @LN_S@