1 // RUN: rm -rf %t 2 // RUN: mkdir -p %t 3 // RUN: split-file %s %t 4 5 // RUN: %clang_cc1 -Wno-unused-value -std=c++20 -emit-pch -o %t/header.pch %t/header.h -x c++ 6 // RUN: %clang_cc1 -Wno-unused-value -Wunsafe-buffer-usage -std=c++20 -include-pch %t/header.pch -verify %t/main.cpp 7 8 //--- header.h foo(int * p)9int foo(int *p) { 10 return p[5]; // This will be warned 11 } 12 13 #pragma clang unsafe_buffer_usage begin // The opt-out region spans over two files of one TU 14 #include "header-2.h" 15 16 17 //--- header-2.h bar(int * p)18int bar(int *p) { 19 return p[5]; // suppressed by the cross-file opt-out region 20 } 21 #pragma clang unsafe_buffer_usage end 22 23 //--- main.cpp 24 // expected-warning@header.h:2 {{unsafe buffer access}} 25 // expected-note@header.h:2 {{pass -fsafe-buffer-usage-suggestions to receive code hardening suggestions}} 26