// RUN: %target-sil-opt -enable-sil-verify-all %s -jumpthread-simplify-cfg -cse | %FileCheck %s

// Test if jump-threading is done to combine two enum instructions
// into a single block.

sil_stage canonical

import Builtin

enum E {
  case A
  case B
}

enum E2 {
  case X
  case Y(E)
}

// CHECK-LABEL: sil @testfunc

sil @testfunc : $@convention(thin) (Builtin.Int1, Builtin.Int1) -> E2 {
bb0(%0 : $Builtin.Int1, %1 : $Builtin.Int1):
  cond_br %0, bb1, bb4

bb1:
  %2 = enum $E, #E.A!enumelt
  cond_br %1, bb2, bb3(%2 : $E)

// CHECK: [[ENUM1:%[0-9]+]] = enum $E, #E.B
// CHECK-NEXT: [[ENUM2:%[0-9]+]] = enum $E2, #E2.Y!enumelt.1, [[ENUM1]]
// CHECK-NEXT: br [[RETBB:bb[0-9]+]]([[ENUM2]] : $E2)
bb2:
  // This block should be jump-threaded
  %3 = enum $E, #E.B!enumelt
  br bb3(%3 : $E)

bb3(%4 : $E):
  %5 = enum $E2, #E2.Y!enumelt.1, %4 : $E
  br bb5(%5 : $E2)

bb4:
  %6 = enum $E2, #E2.X!enumelt
  br bb5(%6 : $E2)

// CHECK: [[RETBB]]({{.*}}):
// CHECK-NEXT: return
bb5(%7 : $E2):
  return %7 : $E2
}

