You've already forked object-testfiles
mirror of
https://github.com/encounter/object-testfiles.git
synced 2026-03-30 11:32:26 -07:00
41 lines
701 B
C++
41 lines
701 B
C++
|
|
/* Based on gcc/gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c */
|
||
|
|
/* foo is split into foo and foo.cold. bar is inlined in both cases. */
|
||
|
|
|
||
|
|
#define MAXITER 10000
|
||
|
|
#define SIZE 10000
|
||
|
|
|
||
|
|
const char *sarr[SIZE];
|
||
|
|
const char *buf_hot;
|
||
|
|
const char *buf_cold;
|
||
|
|
|
||
|
|
struct Foo
|
||
|
|
{
|
||
|
|
int a;
|
||
|
|
void foo(int path);
|
||
|
|
void bar(const char *s);
|
||
|
|
};
|
||
|
|
|
||
|
|
void Foo::bar(const char *s) {
|
||
|
|
int i;
|
||
|
|
for (i = 0; i < SIZE; i++)
|
||
|
|
sarr[i] = s;
|
||
|
|
}
|
||
|
|
|
||
|
|
__attribute__((noinline))
|
||
|
|
void Foo::foo(int path) {
|
||
|
|
if (path)
|
||
|
|
bar(buf_hot);
|
||
|
|
else
|
||
|
|
bar(buf_cold);
|
||
|
|
}
|
||
|
|
|
||
|
|
int main(int argc, char *argv[]) {
|
||
|
|
Foo foo = {};
|
||
|
|
int i;
|
||
|
|
buf_hot = "hello";
|
||
|
|
buf_cold = "world";
|
||
|
|
for (i = 0; i < MAXITER; i++)
|
||
|
|
foo.foo(argc);
|
||
|
|
return 0;
|
||
|
|
}
|