28 lines · plain
1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -w -emit-llvm -o - %s -fsanitize=pointer-overflow | FileCheck %s2 3// CHECK-LABEL: define{{.*}} void @variable_len_array_arith4void variable_len_array_arith(int n, int k) {5 int vla[n];6 int (*p)[n] = &vla;7 8 // CHECK: getelementptr inbounds nuw i32, ptr {{.*}}, i64 [[INC:%.*]]9 // CHECK: @llvm.smul.with.overflow.i64(i64 4, i64 [[INC]]), !nosanitize10 // CHECK-NOT: select11 // CHECK: call void @__ubsan_handle_pointer_overflow{{.*}}12 ++p;13 14 // CHECK: getelementptr inbounds i32, ptr {{.*}}, i64 [[IDXPROM:%.*]]15 // CHECK: @llvm.smul.with.overflow.i64(i64 4, i64 [[IDXPROM]]), !nosanitize16 // CHECK: select17 // CHECK: call void @__ubsan_handle_pointer_overflow{{.*}}18 p + k;19}20 21// CHECK-LABEL: define{{.*}} void @objc_id22void objc_id(id *p) {23 // CHECK: add i64 {{.*}}, 8, !nosanitize24 // CHECK-NOT: select25 // CHECK: @__ubsan_handle_pointer_overflow{{.*}}26 p++;27}28