brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 86859d7 Raw
49 lines · plain
1// RUN: %clang_cc1 -x objective-c -emit-llvm -triple x86_64-apple-macosx10.10.0 -fsanitize=nonnull-attribute %s -o - -w | FileCheck %s2 3@interface A4 5-(void) one_arg: (__attribute__((nonnull)) int *) arg1;6 7-(void) varargs: (__attribute__((nonnull)) int *) arg1, ...;8 9+(void) clsmethod: (__attribute__((nonnull)) int *) arg1;10 11@end12 13@implementation A14 15// CHECK-LABEL: define internal void @"\01-[A one_arg:]"16// CHECK-SAME: ptr noundef nonnull17-(void) one_arg: (__attribute__((nonnull)) int *) arg1 {}18 19// CHECK-LABEL: define internal void @"\01-[A varargs:]"20// CHECK-SAME: ptr noundef nonnull21-(void) varargs: (__attribute__((nonnull)) int *) arg1, ... {}22 23// CHECK-LABEL: define internal void @"\01+[A clsmethod:]"24// CHECK-SAME: ptr noundef nonnull25+(void) clsmethod: (__attribute__((nonnull)) int *) arg1 {}26 27@end28 29// CHECK-LABEL: define{{.*}} void @call_A30void call_A(A *a, int *p) {31  // CHECK: [[ICMP:%.*]] = icmp ne ptr [[P1:%.*]], null, !nosanitize32  // CHECK: br i1 [[ICMP]], {{.*}}, !nosanitize33  // CHECK: call void @__ubsan_handle_nonnull_arg{{.*}} !nosanitize34  // CHECK: call void @objc_msgSend({{.*}}, ptr noundef [[P1]])35  [a one_arg: p];36 37  // CHECK: [[ICMP:%.*]] = icmp ne ptr [[P2:%.*]], null, !nosanitize38  // CHECK: br i1 [[ICMP]], {{.*}}, !nosanitize39  // CHECK: call void @__ubsan_handle_nonnull_arg{{.*}} !nosanitize40  // CHECK: call void (ptr, ptr, ptr, ...) @objc_msgSend({{.*}}, ptr noundef [[P2]], {{.*}})41  [a varargs: p, p];42 43  // CHECK: [[ICMP:%.*]] = icmp ne ptr [[P3:%.*]], null, !nosanitize44  // CHECK: br i1 [[ICMP]], {{.*}}, !nosanitize45  // CHECK: call void @__ubsan_handle_nonnull_arg{{.*}} !nosanitize46  // CHECK: call void @objc_msgSend({{.*}}, ptr noundef [[P3]])47  [A clsmethod: p];48}49