/* { dg-do compile } */
/* { dg-additional-options "-funswitch-loops" } */

enum {
  MOD_WVG_MASK_TEX_USE_INT,
  MOD_WVG_MASK_TEX_USE_RED,
  MOD_WVG_MASK_TEX_USE_BLUE,
  MOD_WVG_MASK_TEX_USE_SAT,
  MOD_WVG_MASK_TEX_USE_VAL,
  MOD_WVG_MASK_TEX_USE_ALPHA
} foo_num;
float *foo_org_w;
int *foo_new_w;
float foo_fact;
int foo_tex_use_channel, foo_i, foo_texres_0;
void foo()
{
  for (; foo_num;)
    switch (foo_tex_use_channel) {
    case MOD_WVG_MASK_TEX_USE_INT:
      foo_org_w[foo_i] = foo_new_w[foo_i] * foo_texres_0;
      break;
    case MOD_WVG_MASK_TEX_USE_RED:
      foo_org_w[foo_i] = 0;
    case MOD_WVG_MASK_TEX_USE_BLUE:
      foo_org_w[foo_i] = foo_fact + foo_org_w[foo_i];
      break;
    case MOD_WVG_MASK_TEX_USE_SAT:
      foo_org_w[foo_i] = foo_fact;
      break;
    case MOD_WVG_MASK_TEX_USE_VAL:
      foo_org_w[foo_i] = 0;
    case MOD_WVG_MASK_TEX_USE_ALPHA:
      foo_org_w[foo_i] = foo_fact + foo_org_w[foo_i];
      break;
    default:
      foo_org_w[foo_i] = foo_new_w[foo_i] * foo_texres_0;
    }
}