--- gcc-4.6-20100828/gcc/config/arm/arm.c.~1~	2010-08-25 17:35:24.000000000 +0200
+++ gcc-4.6-20100828/gcc/config/arm/arm.c	2010-09-01 15:41:33.000000000 +0200
@@ -18894,9 +18894,8 @@ arm_expand_unop_builtin (enum insn_code 
 static int
 neon_builtin_compare (const void *a, const void *b)
 {
-  const neon_builtin_datum *const key = (const neon_builtin_datum *) a;
+  unsigned int soughtcode = *(const int *) a;
   const neon_builtin_datum *const memb = (const neon_builtin_datum *) b;
-  unsigned int soughtcode = key->base_fcode;
 
   if (soughtcode >= memb->base_fcode
       && soughtcode < memb->base_fcode + memb->num_vars)
@@ -18910,12 +18909,11 @@ neon_builtin_compare (const void *a, con
 static enum insn_code
 locate_neon_builtin_icode (int fcode, neon_itype *itype)
 {
-  neon_builtin_datum key, *found;
+  neon_builtin_datum *found;
   int idx;
 
-  key.base_fcode = fcode;
   found = (neon_builtin_datum *)
-    bsearch (&key, &neon_builtin_data[0], ARRAY_SIZE (neon_builtin_data),
+    bsearch (&fcode, &neon_builtin_data[0], ARRAY_SIZE (neon_builtin_data),
 		   sizeof (neon_builtin_data[0]), neon_builtin_compare);
   gcc_assert (found);
   idx = fcode - (int) found->base_fcode;
@@ -22638,7 +22636,7 @@ arm_count (int label,
    it to output_asm_insn.  Provides a mechanism to construct the
    output pattern on the fly.  Note the hard limit on the pattern
    buffer size.  */
-static void
+static void ATTRIBUTE_PRINTF_4
 arm_output_asm_insn (emit_f emit, int label, rtx *operands,
 		     const char *pattern, ...)
 {
