1; RUN: opt -passes=print-memderefs -S < %s -disable-output -use-dereferenceable-at-point-semantics 2>&1 | FileCheck %s --check-prefixes=CHECK 2 3target datalayout = "e-i32:32:64" 4 5; For the abstract machine model (before RS4GC), gc managed objects 6; conceptually live forever. But there may be non-managed objects which are 7; freed. 8; CHECK-LABEL: 'abstract_model' 9; CHECK: %gc_ptr 10; CHECK-NOT: %other_ptr 11; FIXME: Can infer the gc pointer case 12define void @abstract_model(ptr addrspace(1) dereferenceable(8) %gc_ptr, 13 ptr dereferenceable(8) %other_ptr) 14 gc "statepoint-example" { 15entry: 16 call void @mayfree() 17 load i32, ptr addrspace(1) %gc_ptr 18 load i32, ptr %other_ptr 19 ret void 20} 21 22; Can free any object accessible in memory 23declare void @mayfree() 24