1*cee313d2SEric Christopher; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s
2*cee313d2SEric Christopher; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s
3*cee313d2SEric Christopher
4*cee313d2SEric Christopher; CHECK: derived %derived base null
5*cee313d2SEric Christopher
6*cee313d2SEric Christopher@global = external addrspace(1) global i8
7*cee313d2SEric Christopher
8*cee313d2SEric Christopherdefine i8 @test(i64 %offset) gc "statepoint-example" {
9*cee313d2SEric Christopher  %derived = getelementptr i8, i8 addrspace(1)* @global, i64 %offset
10*cee313d2SEric Christopher  call void @extern()
11*cee313d2SEric Christopher; CHECK-NOT: relocate
12*cee313d2SEric Christopher; CHECK-NOT: remat
13*cee313d2SEric Christopher; CHECK: %load = load i8, i8 addrspace(1)* %derived
14*cee313d2SEric Christopher  %load = load i8, i8 addrspace(1)* %derived
15*cee313d2SEric Christopher  ret i8 %load
16*cee313d2SEric Christopher}
17*cee313d2SEric Christopher
18*cee313d2SEric Christopherdeclare void @extern() gc "statepoint-example"
19*cee313d2SEric Christopher
20*cee313d2SEric Christopherdeclare token @llvm.experimental.gc.statepoint.p0f_isVoidf(i64, i32, void ()*, i32, i32, ...)
21