/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */
/* LLVM LOCAL test not applicable */
/* { dg-require-fdump "" } */
  
extern void abort (void);

union tree_node;
typedef union tree_node *tree;
enum tree_code
{
  BIND_EXPR,
};
struct tree_common
{
  enum tree_code code:8;
};
union tree_node
{
  struct tree_common common;
};
tree
voidify_wrapper_expr (tree wrapper)
{
  switch (wrapper->common.code)
    {
    case BIND_EXPR:
      if (wrapper->common.code != BIND_EXPR)
        abort ();
    }
}


/* There should be no IF conditionals.  */
/* { dg-final { scan-tree-dump-times "if " 0 "dom3"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */
