brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · d9838cd Raw
50 lines · cpp
1// RUN: %clang_cc1 -std=c++20 -Wunsafe-buffer-usage \2// RUN:            -fsafe-buffer-usage-suggestions \3// RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s4 5void unsafe_array_func_ptr_call(void (*fn_ptr)(int *param)) {6  int p[32];7  // CHECK-DAG: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:12}:"std::array<int, 32> p"8 9  int idx;10  p[idx] = 10;11  fn_ptr(p);12  // CHECK-DAG: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:11}:".data()"13}14 15void unsafe_ptr_func_ptr_call(void (*fn_ptr)(int *param)) {16  int *p;17  // CHECK-DAG: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "18 19  p[5] = 10;20  fn_ptr(p);21  // CHECK-DAG: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:11}:".data()"22}23 24void addr_of_unsafe_ptr_func_ptr_call(void (*fn_ptr)(int *param)) {25  int *p;26  // CHECK-DAG: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "27 28  p[5] = 10;29  fn_ptr(&p[0]);30  // CHECK-DAG: fix-it:"{{.*}}":{[[@LINE-1]]:10-[[@LINE-1]]:15}:"p.data()"31}32 33void addr_of_unsafe_ptr_w_offset_func_ptr_call(void (*fn_ptr)(int *param)) {34  int *p;35  // CHECK-DAG: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "36 37  p[5] = 10;38  fn_ptr(&p[3]);39  // CHECK-DAG: fix-it:"{{.*}}":{[[@LINE-1]]:10-[[@LINE-1]]:15}:"&p.data()[3]"40}41 42void preincrement_unsafe_ptr_func_ptr_call(void (*fn_ptr)(int *param)) {43  int *p;44  // CHECK-DAG: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "45 46  p[5] = 10;47  fn_ptr(++p);48  // CHECK-DAG: fix-it:"{{.*}}":{[[@LINE-1]]:10-[[@LINE-1]]:13}:"(p = p.subspan(1)).data()"49}50