[PGO] add a test for available_externally functions
llvm-svn: 262161
This commit is contained in:
parent
f09a6b3adb
commit
adbb7b7b57
|
@ -0,0 +1,14 @@
|
|||
#define DEF
|
||||
#include "extern_template.h"
|
||||
#undef DEF
|
||||
extern int bar();
|
||||
extern int foo();
|
||||
extern Test<int> TO;
|
||||
int main() {
|
||||
foo();
|
||||
int R = bar();
|
||||
|
||||
if (R != 10)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
template <typename T> struct Test {
|
||||
Test() : M(10) {}
|
||||
void doIt(int N) { // CHECK: 2| [[@LINE]]| void doIt
|
||||
if (N > 10) { // CHECK: 2| [[@LINE]]| if (N > 10) {
|
||||
M += 2; // CHECK: 1| [[@LINE]]| M += 2;
|
||||
} else // CHECK: 1| [[@LINE]]| } else
|
||||
M -= 2; // CHECK: 1| [[@LINE]]| M -= 2;
|
||||
}
|
||||
T M;
|
||||
};
|
||||
|
||||
#ifdef USE
|
||||
extern template struct Test<int>;
|
||||
#endif
|
||||
#ifdef DEF
|
||||
template struct Test<int>;
|
||||
#endif
|
|
@ -0,0 +1,9 @@
|
|||
#define USE
|
||||
#include "extern_template.h"
|
||||
#undef USE
|
||||
|
||||
Test<int> TO;
|
||||
int foo() {
|
||||
TO.doIt(20);
|
||||
return TO.M;
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
#define USE
|
||||
#include "extern_template.h"
|
||||
#undef USE
|
||||
|
||||
extern Test<int> TO;
|
||||
int bar() {
|
||||
TO.doIt(5);
|
||||
return TO.M;
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
// RUN: %clang -O2 -c -o %t.0.o %S/../Inputs/extern_template.cpp
|
||||
// RUN: %clang_profgen -O2 -c -o %t.o %S/../Inputs/extern_template.cpp
|
||||
// RUN: %clang_profgen -O2 -fcoverage-mapping %S/../Inputs/extern_template1.cpp %S/../Inputs/extern_template2.cpp %t.o -o %t
|
||||
// RUN: env LLVM_PROFILE_FILE=%t.profraw %t
|
||||
// RUN: llvm-profdata show --all-functions %t.profraw | FileCheck %s
|
||||
// RUN: llvm-profdata merge -o %t.profdata %t.profraw
|
||||
// RUN: llvm-cov show -instr-profile=%t.profdata %t | FileCheck %S/../Inputs/extern_template.h
|
||||
// RUN: %clang_profgen -O2 -fcoverage-mapping %S/../Inputs/extern_template1.cpp %S/../Inputs/extern_template2.cpp %t.0.o -o %t.0
|
||||
// RUN: env LLVM_PROFILE_FILE=%t.0.profraw %t.0
|
||||
// RUN: llvm-profdata show --all-functions %t.0.profraw | FileCheck %s
|
||||
// RUN: llvm-profdata merge -o %t.0.profdata %t.0.profraw
|
||||
// RUN: llvm-cov show -instr-profile=%t.0.profdata %t.0 | FileCheck %S/../Inputs/extern_template.h
|
||||
#define DEF
|
||||
#include "extern_template.h"
|
||||
#undef DEF
|
||||
extern int bar();
|
||||
extern int foo();
|
||||
extern Test<int> TO;
|
||||
int main() {
|
||||
foo();
|
||||
int R = bar();
|
||||
|
||||
if (R != 10)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
// No duplicate entries
|
||||
// CHECK: _ZN4TestIiE4doItEi:
|
||||
// CHECK-NOT: _ZN4TestIiE4doItEi:
|
Loading…
Reference in New Issue