/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */
extern void abort (void);
struct rtx_def;
typedef struct rtx_def *rtx;
enum rtx_code
{
  CALL_INSN,
  EXPR_LIST,
  NOTE,
  LAST = 256
};

struct rtx_def
{

  enum rtx_code code:16;
};

/* APPLE LOCAL mainline 4840357 */
int
nonlocal_mentioned_p (x)
     rtx x;
{
  if (x->code == CALL_INSN)
    {
      rtx const _rtx = ((x));
      if (_rtx->code != CALL_INSN
	  && _rtx->code != NOTE
	  && _rtx->code != EXPR_LIST)
	abort ();
    }

  blah (&x);
}

/* There should be no casts to a short unsigned int since the entire
   set of conditionals should optimize away.  */
/* { dg-final { scan-tree-dump-times "\\(short unsigned int\\)" 0 "dom3"} } */
                                                                                
/* There should be no IF conditionals.  */
/* { dg-final { scan-tree-dump-times "if " 0 "dom3"} } */
                                                                                

