; RUN: opt < %s -passes='cgscc(inline)' -S | FileCheck %s declare ptr @malloc(i64) declare ptr @helper() define internal ptr @wrapper(i64 %size) alwaysinline { ; Not returned: must not inherit the token. %h = call ptr @helper() %p = call ptr @malloc(i64 %size) ret ptr %p } ; CHECK-LABEL: define ptr @inherits( ; CHECK: call ptr @helper(){{$}} ; CHECK: call ptr @malloc(i64 4){{.*}}, !alloc_token [[MD:![0-9]+]] define ptr @inherits() { %c = call ptr @wrapper(i64 4), !alloc_token !0 ret ptr %c } define internal ptr @wrapper_own(i64 %size) alwaysinline { %p = call ptr @malloc(i64 %size), !alloc_token !1 ret ptr %p } ; Metadata the wrapper set itself is never overwritten. ; CHECK-LABEL: define ptr @no_overwrite( ; CHECK: call ptr @malloc(i64 4){{.*}}, !alloc_token [[OWN:![0-9]+]] define ptr @no_overwrite() { %c = call ptr @wrapper_own(i64 4), !alloc_token !0 ret ptr %c } ; CHECK-DAG: [[MD]] = !{!"Outer", i1 true} ; CHECK-DAG: [[OWN]] = !{!"Inner", i1 false} !0 = !{!"Outer", i1 true} !1 = !{!"Inner", i1 false}