16db8c59fSFangrui Song // Make sure we're aligning the stack properly when lowering the custom event
26db8c59fSFangrui Song // calls.
36db8c59fSFangrui Song //
46db8c59fSFangrui Song // RUN: %clangxx_xray -std=c++11 %s -o %t
5*02cdbc34SFangrui Song // RUN: XRAY_OPTIONS="patch_premain=false verbosity=1" \
66db8c59fSFangrui Song // RUN:     %run %t 2>&1
76db8c59fSFangrui Song // REQUIRES: x86_64-target-arch
86db8c59fSFangrui Song // REQUIRES: built-in-llvm-tree
96db8c59fSFangrui Song #include <xmmintrin.h>
106db8c59fSFangrui Song #include <stdio.h>
116db8c59fSFangrui Song #include "xray/xray_interface.h"
126db8c59fSFangrui Song 
f(__m128 * i)136db8c59fSFangrui Song [[clang::xray_never_instrument]] __attribute__((weak)) __m128 f(__m128 *i) {
146db8c59fSFangrui Song   return *i;
156db8c59fSFangrui Song }
166db8c59fSFangrui Song 
foo()176db8c59fSFangrui Song [[clang::xray_always_instrument]] void foo() {
186db8c59fSFangrui Song   __xray_customevent(0, 0);
196db8c59fSFangrui Song   __m128 v = {};
206db8c59fSFangrui Song   f(&v);
216db8c59fSFangrui Song }
226db8c59fSFangrui Song 
bar()236db8c59fSFangrui Song [[clang::xray_always_instrument]] void bar() {
246db8c59fSFangrui Song   __xray_customevent(0, 0);
256db8c59fSFangrui Song }
266db8c59fSFangrui Song 
printer(void * ptr,size_t size)276db8c59fSFangrui Song void printer(void* ptr, size_t size) {
286db8c59fSFangrui Song   printf("handler called\n");
296db8c59fSFangrui Song   __m128 v = {};
306db8c59fSFangrui Song   f(&v);
316db8c59fSFangrui Song }
326db8c59fSFangrui Song 
main(int argc,char * argv[])336db8c59fSFangrui Song int main(int argc, char* argv[]) {
346db8c59fSFangrui Song   __xray_set_customevent_handler(printer);
356db8c59fSFangrui Song   __xray_patch();
366db8c59fSFangrui Song   foo();  // CHECK: handler called
376db8c59fSFangrui Song   bar();  // CHECK: handler called
386db8c59fSFangrui Song   __xray_unpatch();
396db8c59fSFangrui Song   __xray_remove_customevent_handler();
406db8c59fSFangrui Song   foo();
416db8c59fSFangrui Song   bar();
426db8c59fSFangrui Song }
43