/* PR optimization/12198

   This was a miscompilation of a switch expressions because
   the "Case Ranges" extension wasn't handled in tree-cfg.c.  */

/* { dg-do compile } */
/* { dg-options "-O -fdump-tree-optimized" } */

extern void abort (void);
extern void exit (int);

int main() 
{ 
   int i; 
   i = 2; 
   switch (i) 
      { 
      case 1 ... 5: 
         goto L1; 
      default: 
         abort (); 
         goto L1; 
      } 
   L1: 
   exit(0); 
}

/* The abort() call clearly is unreachable.  */
/* { dg-final { scan-tree-dump-times "abort" 0 "optimized"} } */
