/* Check that compare-branch is inverted properly.
   Example:
	mov.w	.L566,r2	->	mov.w	.L566,r2
	add	r11,r2			add	r11,r2
	mov.l	@(12,r2),r7		mov.l	@(8,r2),r5
	mov.l	@(8,r2),r5		mov.l	@(12,r2),r2
	mov	#0,r2			tst	r2,r2
	cmp/hi	r2,r7			bt	.L534
	bf	.L534
*/
/* { dg-do compile }  */
/* { dg-options "-O2" } */
/* { dg-final { scan-assembler-not "mov\t#0" } } */
static inline unsigned int
test_03_00 (unsigned int x)
{
  /* Return unassigned value on purpose.  */
  unsigned int res;
  return res;
}

struct S
{
  unsigned int a;
  unsigned int b;
};

int test_03 (struct S* i)
{
 if ((i->a != 2 && i->a != 3) || i->a > test_03_00 (i->b))
   return -5;

 return -55;
}
