ret void
}
+define i32 @switch_range(i32 %cond) {
+; CHECK-LABEL: @switch_range(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[S:%.*]] = urem i32 [[COND:%.*]], 3
+; CHECK-NEXT: [[S1:%.*]] = add nuw nsw i32 [[S]], 1
+; CHECK-NEXT: switch i32 [[S1]], label [[UNREACHABLE:%.*]] [
+; CHECK-NEXT: i32 1, label [[EXIT1:%.*]]
+; CHECK-NEXT: i32 2, label [[EXIT2:%.*]]
+; CHECK-NEXT: i32 3, label [[EXIT1]]
+; CHECK-NEXT: ]
+; CHECK: exit1:
+; CHECK-NEXT: ret i32 1
+; CHECK: exit2:
+; CHECK-NEXT: ret i32 2
+; CHECK: unreachable:
+; CHECK-NEXT: ret i32 0
+;
+entry:
+ %s = urem i32 %cond, 3
+ %s1 = add i32 %s, 1
+ switch i32 %s1, label %unreachable [
+ i32 1, label %exit1
+ i32 2, label %exit2
+ i32 3, label %exit1
+ ]
+
+exit1:
+ ret i32 1
+exit2:
+ ret i32 2
+unreachable:
+ ret i32 0
+}
+
define i1 @arg_attribute(i8* nonnull %a) {
; CHECK-LABEL: @arg_attribute(
; CHECK-NEXT: ret i1 false