summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/CodeGen/X86/StackColoring.ll22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/CodeGen/X86/StackColoring.ll b/test/CodeGen/X86/StackColoring.ll
index f8ae74f292..6c0f00d17d 100644
--- a/test/CodeGen/X86/StackColoring.ll
+++ b/test/CodeGen/X86/StackColoring.ll
@@ -350,6 +350,28 @@ bb3:
ret i32 0
}
+
+; Regression test for PR15707. %buf1 and %buf2 should not be merged
+; in this test case.
+;YESCOLOR: myCall_pr15707
+;YESCOLOR: subq $200008, %rsp
+;NOCOLOR: myCall_pr15707
+;NOCOLOR: subq $200008, %rsp
+define void @myCall_pr15707() {
+ %buf1 = alloca i8, i32 100000, align 16
+ %buf2 = alloca i8, i32 100000, align 16
+
+ call void @llvm.lifetime.start(i64 -1, i8* %buf1)
+ call void @llvm.lifetime.end(i64 -1, i8* %buf1)
+
+ call void @llvm.lifetime.start(i64 -1, i8* %buf1)
+ call void @llvm.lifetime.start(i64 -1, i8* %buf2)
+ %result1 = call i32 @foo(i32 0, i8* %buf1)
+ %result2 = call i32 @foo(i32 0, i8* %buf2)
+ ret void
+}
+
+
; Check that we don't assert and crash even when there are allocas
; outside the declared lifetime regions.
;YESCOLOR: bad_range