for.cond.cleanup: ; preds = %for.body
ret void
}
+
+; Make sure interleave groups with a key being the special 'empty' value for
+; the map do not cause a crash.
+define void @test_gap_empty_key() {
+; CHECK-LABEL: @test_gap_empty_key()
+; CHECK-NEXT: entry:
+; CHECK-NEXT: br label %for.body
+
+; CHECK-LABEL: for.body:
+; CHECK: store i32
+; CHECK: store i32
+; CHECK-NOT: store
+;
+entry:
+ br label %for.body
+
+for.body:
+ %iv = phi i64 [ 1, %entry ], [ %iv.next, %for.body ]
+ %iv.next = add nsw i64 %iv, 1
+ %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* undef, i64 0, i64 %iv.next
+ %G2 = getelementptr i32, i32* %arrayidx, i64 %iv.next
+ %G9 = getelementptr i32, i32* %G2, i32 -2147483647
+ store i32 0, i32* %G2
+ store i32 1, i32* %G9
+ %cmp = icmp ule i64 %iv, 1000
+ br i1 false, label %for.body, label %exit
+
+exit:
+ ret void
+}
+
+; Make sure interleave groups with a key being the special 'tombstone' value for
+; the map do not cause a crash.
+define void @test_tombstone_key() {
+; CHECK-LABEL: @test_tombstone_key()
+; CHECK-NEXT: entry:
+; CHECK-NEXT: br label %for.body
+
+; CHECK-LABEL: for.body:
+; CHECK: store i32
+; CHECK: store i32
+; CHECK-NOT: store
+;
+entry:
+ br label %for.body
+
+for.body:
+ %iv = phi i64 [ 1, %entry ], [ %iv.next, %for.body ]
+ %iv.next = add nsw i64 %iv, 1
+ %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* undef, i64 0, i64 %iv.next
+ %G2 = getelementptr i32, i32* %arrayidx, i64 %iv.next
+ %G9 = getelementptr i32, i32* %G2, i32 -2147483648
+ store i32 0, i32* %G2
+ store i32 1, i32* %G9
+ %cmp = icmp ule i64 %iv, 1000
+ br i1 false, label %for.body, label %exit
+
+exit:
+ ret void
+}