1*f9e0df07SNico Weber // RUN: %clangxx_hwasan -mllvm -hwasan-instrument-with-calls=1 -O0 %s -o %t 2*f9e0df07SNico Weber // RUN: %clangxx_hwasan -mllvm -hwasan-instrument-with-calls=1 -O0 %s -o %t -fsanitize-recover=hwaddress 3*f9e0df07SNico Weber 4*f9e0df07SNico Weber // Utilizes all flavors of __hwasan_load/store interface functions to verify 5*f9e0df07SNico Weber // that the instrumentation and the interface provided by HWASan do match. 6*f9e0df07SNico Weber // In case of a discrepancy, this test fails to link. 7*f9e0df07SNico Weber 8*f9e0df07SNico Weber #include <sanitizer/hwasan_interface.h> 9*f9e0df07SNico Weber 10*f9e0df07SNico Weber #define F(T) void f_##T(T *a, T *b) { *a = *b; } 11*f9e0df07SNico Weber 12*f9e0df07SNico Weber F(uint8_t) 13*f9e0df07SNico Weber F(uint16_t) 14*f9e0df07SNico Weber F(uint32_t) 15*f9e0df07SNico Weber F(uint64_t) 16*f9e0df07SNico Weber 17*f9e0df07SNico Weber typedef unsigned V32 __attribute__((__vector_size__(32))); F(V32)18*f9e0df07SNico WeberF(V32) 19*f9e0df07SNico Weber 20*f9e0df07SNico Weber int main() {} 21