; RUN: opt -S -loop-unswitch %s

define i32 @test(i32* %var) {
  %mem = alloca i32
  store i32 2, i32* %mem
  %c = load i32* %mem

  br label %loop_begin

loop_begin:

  %var_val = load i32* %var

  switch i32 %c, label %second_switch [
      i32 1, label %inc
      i32 2, label %dec
  ]
second_switch:
  switch i32 %c, label %default [
      i32 1, label %inc ; will never unswitched for c != 1
  ]

inc:
  %inc_res = add i32 %var_val, 1
  %need_exit = icmp uge i32 %inc_res, 20
  store i32 %inc_res, i32* %var
  br i1 %need_exit, label %loop_exit, label %loop_begin
dec:
  %dec_res = sub i32 %var_val, 1
  store i32 %dec_res, i32* %var
  br label %loop_begin
default:  
  br label %loop_begin
loop_exit:
  ret i32 0
}
