blob: f7676d272f58f4731f3f841a4ac200044cd2930e [file] [log] [blame]
Sanjoy Das04071082016-01-29 00:28:57 +00001; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s
Philip Reamesa5aeaf42015-02-28 00:20:48 +00002
3; CHECK: derived %merged_value base %base_obj
4
Philip Reamesa5aeaf42015-02-28 00:20:48 +00005define i64 addrspace(1)* @test(i64 addrspace(1)* %base_obj, i1 %runtime_condition) gc "statepoint-example" {
6entry:
7 br i1 %runtime_condition, label %merge, label %there
8
Sanjoy Das04071082016-01-29 00:28:57 +00009there: ; preds = %entry
Philip Reamesa5aeaf42015-02-28 00:20:48 +000010 %derived_obj = getelementptr i64, i64 addrspace(1)* %base_obj, i32 1
11 br label %merge
12
Sanjoy Das04071082016-01-29 00:28:57 +000013merge: ; preds = %there, %entry
Philip Reamesa5aeaf42015-02-28 00:20:48 +000014 %merged_value = phi i64 addrspace(1)* [ %base_obj, %entry ], [ %derived_obj, %there ]
Sanjoy Das04071082016-01-29 00:28:57 +000015 call void @foo() [ "deopt"(i32 0, i32 -1, i32 0, i32 0, i32 0) ]
Philip Reamesa5aeaf42015-02-28 00:20:48 +000016 ret i64 addrspace(1)* %merged_value
17}
18
19declare void @foo()