| ; RUN: opt < %s -passes=function-attrs -S | FileCheck %s | |
| ; CHECK: define ptr @a(ptr nocapture readonly %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 %r) | |
| @g = global i32 0 | |
| define ptr @c(ptr %r) { | |
| %a = icmp eq ptr %r, null | |
| store i32 1, ptr @g | |
| ret ptr %r | |
| } |