/* 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" } */
/* LLVM LOCAL test not applicable */
/* { dg-require-fdump "" } */

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"} } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
