blob: 2f2cc1fc6554c3c9eb8419bffc07162740ac9a85 [file] [log] [blame]
// RUN: %clang_cc1 -fsanitize=nullability-return -emit-llvm %s -o - -triple x86_64-apple-macosx10.10.0 | FileCheck %s
// CHECK: [[ATTR_LOC:@[0-9]+]] = {{.*}} global { {{.*}} i32 15, i32 38
// CHECK-LABEL: define{{.*}} i8* @_Z3foov()
// CHECK: [[CALL:%.*]] = call i8* @_Z6helperv()
// CHECK: icmp ne i8* [[CALL]]
// CHECK: call void @__ubsan_handle_nullability_return_v1_abort({{.*}}[[ATTR_LOC]]
struct S {
using PtrTy = id;
};
#pragma clang assume_nonnull begin
__attribute__((ns_returns_retained)) S::PtrTy foo(void) {
extern S::PtrTy helper(void);
return helper();
}
#pragma clang assume_nonnull end