summaryrefslogtreecommitdiffstats
path: root/compiler-rt/test/xray/TestCases/Linux/pic_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt/test/xray/TestCases/Linux/pic_test.cc')
-rw-r--r--compiler-rt/test/xray/TestCases/Linux/pic_test.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/compiler-rt/test/xray/TestCases/Linux/pic_test.cc b/compiler-rt/test/xray/TestCases/Linux/pic_test.cc
new file mode 100644
index 00000000000..004f6da2f43
--- /dev/null
+++ b/compiler-rt/test/xray/TestCases/Linux/pic_test.cc
@@ -0,0 +1,33 @@
+// Test to check if we handle pic code properly.
+
+// RUN: %clangxx_xray -fxray-instrument -std=c++11 -fpic %s -o %t
+// RUN: XRAY_OPTIONS="verbosity=1 xray_logfile_base=pic-test-logging-" %run %t 2>&1 | FileCheck %s
+// After all that, clean up the output xray log.
+//
+// RUN: rm pic-test-logging-*
+
+#include <cstdio>
+
+[[clang::xray_always_instrument]]
+unsigned short foo (unsigned b);
+
+[[clang::xray_always_instrument]]
+unsigned short bar (unsigned short a)
+{
+ printf("bar() is always instrumented!\n");
+ return foo(a);
+}
+
+unsigned short foo (unsigned b)
+{
+ printf("foo() is always instrumented!\n");
+ return b + b + 5;
+}
+
+int main ()
+{
+ // CHECK: XRay: Log file in 'pic-test-logging-{{.*}}'
+ bar(10);
+ // CHECK: bar() is always instrumented!
+ // CHECK-NEXT: foo() is always instrumented!
+}
OpenPOWER on IntegriCloud