This PR doesn't exactly trigger currently on trunk; a REG_DEAD note that
occurs in trunk, but not in the 4.5-based compilers which this bug was
reported for, currently blocks auto-inc-dec from doing its job, and just
happens to avoid this ICE.

The problem is vldmia/db, which do exist, are currently not enabled for
NEON struct modes (OI, XI, etc.)  This only needs a small patch to
neon_struct_mem_operand() to work. Okay for trunk?

Thanks,
Chung-Lin

2011-03-31  Chung-Lin Tang  <clt...@codesourcery.com>

        * config/arm/arm.c (neon_struct_mem_operand):
        Support POST_INC/PRE_DEC memory operands.
Index: config/arm/arm.c
===================================================================
--- config/arm/arm.c    (revision 171769)
+++ config/arm/arm.c    (working copy)
@@ -9124,6 +9124,11 @@
   if (GET_CODE (ind) == REG)
     return arm_address_register_rtx_p (ind, 0);
 
+  /* vldm/vstm allows POST_INC (ia) and PRE_DEC (db).  */
+  if (GET_CODE (ind) == POST_INC
+      || GET_CODE (ind) == PRE_DEC)
+    return arm_address_register_rtx_p (XEXP (ind, 0), 0);
+
   return FALSE;
 }
 

Reply via email to