Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / compiler-rt / test / sanitizer_common / TestCases / symbolize_pc_inline.cpp
blobe95ef324db652881092091071328aef1a715418a
1 // RUN: %clangxx -O3 %s -o %t
2 // RUN: %env_tool_opts=strip_path_prefix=/TestCases/ %run %t 2>&1 | FileCheck %s
3 // RUN: %env_tool_opts=strip_path_prefix=/TestCases/:symbolize_inline_frames=0 %run %t 2>&1 | FileCheck %s --check-prefixes=NOINLINE
4 // RUN: %env_tool_opts=strip_path_prefix=/TestCases/:symbolize_inline_frames=1 %run %t 2>&1 | FileCheck %s
6 // XFAIL: darwin
8 #include <sanitizer/common_interface_defs.h>
9 #include <stdio.h>
10 #include <string.h>
12 char buffer[10000];
14 __attribute__((noinline)) static void Symbolize() {
15 __sanitizer_symbolize_pc(__sanitizer_return_address(), "%p %F %L", buffer,
16 sizeof(buffer));
17 for (char *p = buffer; strlen(p); p += strlen(p) + 1)
18 printf("%s\n", p);
21 // NOINLINE: {{0x[0-9a-f]+}} in main symbolize_pc_inline.cpp:[[@LINE+2]]
22 // CHECK: [[ADDR:0x[0-9a-f]+]] in C2 symbolize_pc_inline.cpp:[[@LINE+1]]
23 static inline void C2() { Symbolize(); }
25 // CHECK: [[ADDR]] in C3 symbolize_pc_inline.cpp:[[@LINE+1]]
26 static inline void C3() { C2(); }
28 // CHECK: [[ADDR]] in C4 symbolize_pc_inline.cpp:[[@LINE+1]]
29 static inline void C4() { C3(); }
31 // CHECK: [[ADDR]] in main symbolize_pc_inline.cpp:[[@LINE+1]]
32 int main() { C4(); }