35 lines · c
1// RUN: %clang_cc1 -x c -fsanitize=pointer-overflow -fsanitize-recover=pointer-overflow -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s -implicit-check-not="call void @__ubsan_handle_pointer_overflow"2// RUN: %clang_cc1 -x c -fno-delete-null-pointer-checks -fsanitize=pointer-overflow -fsanitize-recover=pointer-overflow -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s -implicit-check-not="call void @__ubsan_handle_pointer_overflow"3 4// RUN: %clang_cc1 -x c++ -fsanitize=pointer-overflow -fsanitize-recover=pointer-overflow -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s -implicit-check-not="call void @__ubsan_handle_pointer_overflow"5// RUN: %clang_cc1 -x c++ -fno-delete-null-pointer-checks -fsanitize=pointer-overflow -fsanitize-recover=pointer-overflow -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s -implicit-check-not="call void @__ubsan_handle_pointer_overflow"6 7#ifdef __cplusplus8extern "C" {9#endif10 11// CHECK-LABEL: @baseline12char *baseline(char *base, unsigned long offset) {13 // CHECK: call void @__ubsan_handle_pointer_overflow(14 return base + offset;15}16 17// CHECK-LABEL: @ignorelist_018__attribute__((no_sanitize("undefined"))) char *ignorelist_0(char *base, unsigned long offset) {19 return base + offset;20}21 22// CHECK-LABEL: @ignorelist_123__attribute__((no_sanitize("pointer-overflow"))) char *ignorelist_1(char *base, unsigned long offset) {24 return base + offset;25}26 27// CHECK-LABEL: @ignore_non_default_address_space28__attribute__((address_space(1))) char *ignore_non_default_address_space(__attribute__((address_space(1))) char *base, unsigned long offset) {29 return base + offset;30}31 32#ifdef __cplusplus33}34#endif35