brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 0b14aa4 Raw
93 lines · plain
1; RUN: opt -S -passes=rewrite-statepoints-for-gc  < %s | FileCheck %s2 3 4; Ensure we're stipping attributes from the function signatures which are invalid5; after inserting safepoints with explicit memory semantics6 7declare void @f()8 9define ptr addrspace(1) @deref_arg(ptr addrspace(1) dereferenceable(16) %arg) gc "statepoint-example" {10; CHECK: define ptr addrspace(1) @deref_arg(ptr addrspace(1) %arg)11  call void @f()12  ret ptr addrspace(1) %arg13}14 15define dereferenceable(16) ptr addrspace(1) @deref_ret(ptr addrspace(1) %arg) gc "statepoint-example" {16; CHECK: define ptr addrspace(1) @deref_ret(ptr addrspace(1) %arg)17  call void @f()18  ret ptr addrspace(1) %arg19}20 21define ptr addrspace(1) @deref_or_null_arg(ptr addrspace(1) dereferenceable_or_null(16) %arg) gc "statepoint-example" {22; CHECK: define ptr addrspace(1) @deref_or_null_arg(ptr addrspace(1) %arg)23  call void @f()24  ret ptr addrspace(1) %arg25}26 27define dereferenceable_or_null(16) ptr addrspace(1) @deref_or_null_ret(ptr addrspace(1) %arg) gc "statepoint-example" {28; CHECK: define ptr addrspace(1) @deref_or_null_ret(ptr addrspace(1) %arg)29  call void @f()30  ret ptr addrspace(1) %arg31}32 33define ptr addrspace(1) @noalias_arg(ptr addrspace(1) noalias %arg) gc "statepoint-example" {34; CHECK: define ptr addrspace(1) @noalias_arg(ptr addrspace(1) %arg)35  call void @f()36  ret ptr addrspace(1) %arg37}38 39define noalias ptr addrspace(1) @noalias_ret(ptr addrspace(1) %arg) gc "statepoint-example" {40; CHECK: define ptr addrspace(1) @noalias_ret(ptr addrspace(1) %arg)41  call void @f()42  ret ptr addrspace(1) %arg43}44 45define ptr addrspace(1) @nofree(ptr addrspace(1) nofree %arg) nofree gc "statepoint-example" {46; CHECK: define ptr addrspace(1) @nofree(ptr addrspace(1) %arg) gc "statepoint-example" {47  call void @f()48  ret ptr addrspace(1) %arg49}50 51define ptr addrspace(1) @nosync(ptr addrspace(1) %arg) nosync gc "statepoint-example" {52; CHECK: define ptr addrspace(1) @nosync(ptr addrspace(1) %arg) gc "statepoint-example" {53  call void @f()54  ret ptr addrspace(1) %arg55}56 57define ptr addrspace(1) @readnone(ptr addrspace(1) readnone %arg) readnone gc "statepoint-example" {58; CHECK: define ptr addrspace(1) @readnone(ptr addrspace(1) %arg) gc "statepoint-example" {59  call void @f()60  ret ptr addrspace(1) %arg61}62 63define ptr addrspace(1) @readonly(ptr addrspace(1) readonly %arg) readonly gc "statepoint-example" {64; CHECK: define ptr addrspace(1) @readonly(ptr addrspace(1) %arg) gc "statepoint-example" {65  call void @f()66  ret ptr addrspace(1) %arg67}68 69define ptr addrspace(1) @writeonly(ptr addrspace(1) writeonly %arg) writeonly gc "statepoint-example" {70; CHECK: define ptr addrspace(1) @writeonly(ptr addrspace(1) %arg) gc "statepoint-example" {71  call void @f()72  ret ptr addrspace(1) %arg73}74 75define ptr addrspace(1) @argmemonly(ptr addrspace(1) %arg) argmemonly gc "statepoint-example" {76; CHECK: define ptr addrspace(1) @argmemonly(ptr addrspace(1) %arg) gc "statepoint-example" {77  call void @f()78  ret ptr addrspace(1) %arg79}80 81define ptr addrspace(1) @inaccessiblememonly(ptr addrspace(1) %arg) inaccessiblememonly gc "statepoint-example" {82; CHECK: define ptr addrspace(1) @inaccessiblememonly(ptr addrspace(1) %arg) gc "statepoint-example" {83  call void @f()84  ret ptr addrspace(1) %arg85}86 87define ptr addrspace(1) @inaccessiblemem_or_argmemonly(ptr addrspace(1) %arg) inaccessiblemem_or_argmemonly gc "statepoint-example" {88; CHECK: define ptr addrspace(1) @inaccessiblemem_or_argmemonly(ptr addrspace(1) %arg) gc "statepoint-example" {89  call void @f()90  ret ptr addrspace(1) %arg91}92 93