xref: /llvm-project/compiler-rt/test/hwasan/TestCases/musttail.cpp (revision de4e8bc3ace3eb64ac92166617056424f5bd5996)
1*de4e8bc3SMatt Morehouse // RUN: %clangxx_hwasan -mllvm -hwasan-use-stack-safety=0 %s -o %t
2*de4e8bc3SMatt Morehouse // RUN: %run %t
3*de4e8bc3SMatt Morehouse //
4*de4e8bc3SMatt Morehouse // REQUIRES: pointer-tagging
5*de4e8bc3SMatt Morehouse 
bar(int X)6*de4e8bc3SMatt Morehouse __attribute__((noinline)) int bar(int X) { return X; }
7*de4e8bc3SMatt Morehouse 
foo(int X)8*de4e8bc3SMatt Morehouse __attribute__((noinline)) int foo(int X) {
9*de4e8bc3SMatt Morehouse   volatile int A = 5;
10*de4e8bc3SMatt Morehouse   [[clang::musttail]] return bar(X + A);
11*de4e8bc3SMatt Morehouse }
12*de4e8bc3SMatt Morehouse 
main(int Argc,char * Argv[])13*de4e8bc3SMatt Morehouse int main(int Argc, char *Argv[]) { return foo(Argc) != 6; }
14