[compiler-rt] r264480 - [profile] Add integration test to validate PGO function names

Vedant Kumar via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 25 16:56:24 PDT 2016


Author: vedantk
Date: Fri Mar 25 18:56:23 2016
New Revision: 264480

URL: http://llvm.org/viewvc/llvm-project?rev=264480&view=rev
Log:
[profile] Add integration test to validate PGO function names

Differential Revision: http://reviews.llvm.org/D18485

Added:
    compiler-rt/trunk/test/profile/Inputs/instrprof-visibility-helper.cpp
    compiler-rt/trunk/test/profile/instrprof-visibility-kinds.inc
    compiler-rt/trunk/test/profile/instrprof-visibility.cpp
Modified:
    compiler-rt/trunk/test/profile/CMakeLists.txt

Modified: compiler-rt/trunk/test/profile/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/CMakeLists.txt?rev=264480&r1=264479&r2=264480&view=diff
==============================================================================
--- compiler-rt/trunk/test/profile/CMakeLists.txt (original)
+++ compiler-rt/trunk/test/profile/CMakeLists.txt Fri Mar 25 18:56:23 2016
@@ -4,7 +4,7 @@ set(PROFILE_LIT_BINARY_DIR ${CMAKE_CURRE
 set(PROFILE_TESTSUITES)
 set(PROFILE_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
 if(NOT COMPILER_RT_STANDALONE_BUILD)
-  list(APPEND PROFILE_TEST_DEPS profile llvm-profdata)
+  list(APPEND PROFILE_TEST_DEPS profile llvm-profdata llvm-cov)
 endif()
 
 set(PROFILE_TEST_ARCH ${PROFILE_SUPPORTED_ARCH})

Added: compiler-rt/trunk/test/profile/Inputs/instrprof-visibility-helper.cpp
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-visibility-helper.cpp?rev=264480&view=auto
==============================================================================
--- compiler-rt/trunk/test/profile/Inputs/instrprof-visibility-helper.cpp (added)
+++ compiler-rt/trunk/test/profile/Inputs/instrprof-visibility-helper.cpp Fri Mar 25 18:56:23 2016
@@ -0,0 +1,3 @@
+namespace N1 {
+void f4() {}
+}

Added: compiler-rt/trunk/test/profile/instrprof-visibility-kinds.inc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/instrprof-visibility-kinds.inc?rev=264480&view=auto
==============================================================================
--- compiler-rt/trunk/test/profile/instrprof-visibility-kinds.inc (added)
+++ compiler-rt/trunk/test/profile/instrprof-visibility-kinds.inc Fri Mar 25 18:56:23 2016
@@ -0,0 +1,36 @@
+void f1() {}
+
+#ifndef NO_WEAK
+void f2() __attribute__((weak));
+void f2() {}
+#endif
+
+void f3() __attribute__((always_inline));
+void f3() {}
+
+#ifndef NO_EXTERN
+extern void f4();
+#endif
+
+void f5() __attribute__((visibility("default")));
+void f5() {}
+
+void f6() __attribute__((visibility("hidden")));
+void f6() {}
+
+void f7() __attribute__((visibility("internal")));
+void f7() {}
+
+void call() {
+  f1();
+#ifndef NO_WEAK
+  f2();
+#endif
+  f3();
+#ifndef NO_EXTERN
+  f4();
+#endif
+  f5();
+  f6();
+  f7();
+}

Added: compiler-rt/trunk/test/profile/instrprof-visibility.cpp
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/instrprof-visibility.cpp?rev=264480&view=auto
==============================================================================
--- compiler-rt/trunk/test/profile/instrprof-visibility.cpp (added)
+++ compiler-rt/trunk/test/profile/instrprof-visibility.cpp Fri Mar 25 18:56:23 2016
@@ -0,0 +1,89 @@
+// RUN: %clangxx_profgen -fcoverage-mapping %S/Inputs/instrprof-visibility-helper.cpp -o %t %s
+// RUN: LLVM_PROFILE_FILE=%t.profraw %run %t
+// RUN: llvm-profdata merge %t.profraw -o %t.profdata
+// RUN: llvm-profdata show --all-functions %t.profraw | FileCheck %s --check-prefix=PROFILE
+// RUN: llvm-cov show %t -instr-profile=%t.profdata | FileCheck %s --check-prefix=COV
+
+namespace {
+#define NO_WEAK
+#define NO_EXTERN
+#include "instrprof-visibility-kinds.inc"
+#undef NO_EXTERN
+#undef NO_WEAK
+}
+
+namespace N1 {
+#include "instrprof-visibility-kinds.inc"
+}
+
+int main() {
+  call();
+  N1::call();
+  return 0;
+}
+
+// PROFILE-DAG: _ZN2N12f1Ev
+// PROFILE-DAG: _ZN2N12f2Ev
+// PROFILE-DAG: _ZN2N12f3Ev
+// PROFILE-DAG: _ZN2N12f4Ev
+// PROFILE-DAG: _ZN2N12f5Ev
+// PROFILE-DAG: _ZN2N12f6Ev
+// PROFILE-DAG: _ZN2N12f7Ev
+// PROFILE-DAG: _ZN2N14callEv
+// PROFILE-DAG: main
+// PROFILE-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_14callEv
+// PROFILE-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f1Ev
+// PROFILE-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f3Ev
+// PROFILE-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f5Ev
+// PROFILE-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f6Ev
+// PROFILE-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f7Ev
+// PROFILE-DAG: Total functions: 15
+
+// COV-DAG: instrprof-visibility-helper.cpp
+
+// COV-DAG: instrprof-visibility-kinds.inc
+
+// COV-DAG: _ZN2N12f1Ev
+// COV-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f1Ev
+// COV-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f3Ev
+// COV-DAG: _ZN2N12f3Ev
+// COV-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f5Ev
+// COV-DAG: _ZN2N12f5Ev
+// COV-DAG: _ZN2N12f6Ev
+// COV-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f6Ev
+// COV-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f7Ev
+// COV-DAG: _ZN2N12f7Ev
+
+// --- Check coverage for functions in the anonymous namespace.
+// COV-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_14callEv
+// COV-DAG: 1|{{.*}}|void call() {
+// COV-DAG: 1|{{.*}}|  f1();
+// COV-DAG: 1|{{.*}}|#ifndef NO_WEAK
+// COV-DAG:  |{{.*}}|  f2();
+// COV-DAG:  |{{.*}}|#endif
+// COV-DAG: 1|{{.*}}|  f3();
+// COV-DAG: 1|{{.*}}|#ifndef NO_EXTERN
+// COV-DAG:  |{{.*}}|  f4();
+// COV-DAG:  |{{.*}}|#endif
+// COV-DAG: 1|{{.*}}|  f5();
+// COV-DAG: 1|{{.*}}|  f6();
+// COV-DAG: 1|{{.*}}|  f7();
+// COV-DAG: 1|{{.*}}|}
+
+// --- Check coverage for functions in namespace N1.
+// COV-DAG: _ZN2N14callEv
+// COV-DAG: 1|{{.*}}|void call() {
+// COV-DAG: 1|{{.*}}|  f1();
+// COV-DAG: 1|{{.*}}|#ifndef NO_WEAK
+// COV-DAG: 1|{{.*}}|  f2();
+// COV-DAG: 1|{{.*}}|#endif
+// COV-DAG: 1|{{.*}}|  f3();
+// COV-DAG: 1|{{.*}}|#ifndef NO_EXTERN
+// COV-DAG: 1|{{.*}}|  f4();
+// COV-DAG: 1|{{.*}}|#endif
+// COV-DAG: 1|{{.*}}|  f5();
+// COV-DAG: 1|{{.*}}|  f6();
+// COV-DAG: 1|{{.*}}|  f7();
+// COV-DAG: 1|{{.*}}|}
+
+// COV-DAG: instrprof-visibility.cpp




More information about the llvm-commits mailing list