| ; RUN: opt < %s -passes=function-attrs -S | FileCheck %s |
| |
| ; CHECK: define ptr @a(ptr readonly captures(none) %p) |
| define ptr @a(ptr %p) { |
| %tmp = load ptr, ptr %p |
| ret ptr %tmp |
| } |
| |
| ; CHECK: define ptr @b(ptr %q) |
| define ptr @b(ptr %q) { |
| %mem = alloca ptr |
| store ptr %q, ptr %mem |
| %tmp = call ptr @a(ptr %mem) |
| ret ptr %tmp |
| } |
| |
| ; CHECK: define ptr @c(ptr readnone returned captures(address_is_null, ret: address, provenance) %r) |
| @g = global i32 0 |
| define ptr @c(ptr %r) { |
| %a = icmp eq ptr %r, null |
| store i32 1, ptr @g |
| ret ptr %r |
| } |