/* Test cse'ing of unsigned compares.  */
/* { dg-do compile } */
/* { dg-options "-O2 -fno-jump-tables" } */

/* The following tests fail due to an issue in expand not
   attaching an type expression information on *index's reg rtx.  */

/* { dg-final { scan-assembler-not "cmpwi" } } */
/* { dg-final { scan-assembler-times "cmplwi" 5 } } */

extern int case0 (void);
extern int case1 (void);
extern int case2 (void);
extern int case3 (void);
extern int case4 (void);

enum CASE_VALUES
{
  CASE0 = 1,
  CASE1,
  CASE2,
  CASE3,
  CASE4
};

int
foo (enum CASE_VALUES *index)
{
  switch (*index)
    {
    case CASE0:
      return case0 ();
    case CASE1:
      return case1 ();
    case CASE2:
      return case2 ();
    case CASE3:
      return case3 ();
    case CASE4:
      return case4 ();
    }

  return 0;
}
