/* APPLE LOCAL file CW asm blocks */
/* { dg-do run { target powerpc*-*-* } } */
/* { dg-options "-fasm-blocks" } */
/* Radar 4235138 */

extern "C" void abort();

static void FUNC(register unsigned int x) {
	union {
		double d;
		struct {
			int x;
			int y;
			struct {
			  	 int w;
				 int z;
			} q;
		} s;
	} u;
	asm {
		stw		x, u.s.x
		stw		x, u.s.y
		stw		x, u.s.q.w
		stw		x, u.s.q.z
		lfd		fp0, u.d
		mtfsf	1, fp0
	}

	if (u.s.y != x)
	  abort();

	if (u.s.x != x)
	  abort();

	if (u.s.q.w != x)
	  abort();

	if (u.s.q.z != x)
	  abort();
}

int main()
{
	FUNC (123);
	return 0;
}
