/*
 * See whether the ldr r2, [r3]; cfstrd mvd0,[r2] bug also affects ldm
 */

double d = 1.0;
double *dp = &d;

main()
{
	double * dp2 = &d;
	foo();
	printf("%g\n", *dp2);
}

foo()
{
	register double **pp asm("r3") = &dp;
	register double *p asm("r2");

	asm volatile ("cfsubd  mvd0, mvd0,mvd0");	/* mvd0 == 0.0 */
	asm volatile ("nop;nop;nop;nop;nop;nop");
	asm volatile ("nop;nop;nop;nop;nop;nop");
	/* asm("ldmia  r3, {r2}");		/* p = &d, dpp++ */
	asm volatile ("ldr r2, [r3]");		/* p = &d, dpp++ */
	asm volatile ("cfstrd  mvd0, [r2]");	/* d = 0.0 */
}
