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; }