This patch adjusts the tests to accept LDRD or LDM, depending on effective target arm_prefer_ldrd_strd. To handle the cases in which this test is not valid, use effective target arm_notthumb instead of __thumb_ predefine.
With this patch, the test interrup-2.c will fail when arm_prefer_ldrd_strd holds: FAIL: gcc.dg/fixed-point/cast-bad.c (test for excess errors) FAIL: gcc.dg/fixed-point/muldiv-warning.c (test for warnings, line 68) FAIL: gcc.dg/fixed-point/muldiv-warning.c (test for excess errors) It fails because epilogue still uses LDM instead of LDRD, but the generated assembly is correct. These failures are caused by an issue with __attribute__((__interrupt__)) and epilogue generation in RTL, which is unrelated to LDRD epilogue patched and therefore will be addressed by a separate patch. ChangeLog gcc/testsuite/ 2012-10-10 Greta Yorsh <greta.yo...@arm.com> * gcc.target/arm/interrupt-1.c: Likewise. * gcc.target/arm/interrupt-2.c: Likewise.