| #include <string.h> |
| |
| void (*f0)(); |
| void (*f1)(); |
| void (*f2)(); |
| |
| char dst[200]; |
| char src[200]; |
| volatile int n; |
| |
| __attribute__((noinline)) void foo() {} |
| |
| __attribute__((noinline)) void bar() { |
| f0 = foo; |
| f1 = foo; |
| f2 = foo; |
| n = 4; |
| } |
| int main(int argc, char *argv[]) { |
| int i; |
| bar(); |
| if (argc == 1) { |
| f0(); |
| for (i = 0; i < 9; i++) |
| f1(); |
| for (i = 0; i < 99; i++) |
| f2(); |
| } else { |
| memcpy((void *)dst, (void *)src, n); |
| for (i = 0; i < 6; i++) |
| memcpy((void *)(dst + 2), (void *)src, n + 1); |
| for (i = 0; i < 66; i++) |
| memcpy((void *)(dst + 9), (void *)src, n + 2); |
| } |
| } |
| |
| // CHECK: Counters: |
| // CHECK-NEXT: main: |
| // CHECK-NEXT: Hash: 0x0a9bd81e87ab6e87 |
| // CHECK-NEXT: Counters: 6 |
| // CHECK-NEXT: Indirect Call Site Count: 3 |
| // CHECK-NEXT: Number of Memory Intrinsics Calls: 3 |
| // CHECK-NEXT: Block counts: [27, 297, 12, 132, 3, 2] |
| // CHECK-NEXT: Indirect Target Results: |
| // CHECK-NEXT: [ 0, foo, 3 ] |
| // CHECK-NEXT: [ 1, foo, 27 ] |
| // CHECK-NEXT: [ 2, foo, 297 ] |
| // CHECK-NEXT: Memory Intrinsic Size Results: |
| // CHECK-NEXT: [ 0, 4, 2 ] |
| // CHECK-NEXT: [ 1, 5, 12 ] |
| // CHECK-NEXT: [ 2, 6, 132 ] |
| // CHECK-NEXT: Instrumentation level: IR entry_first = 0 |
| // CHECK-NEXT: Functions shown: 1 |
| // CHECK-NEXT: Total functions: 3 |
| // CHECK-NEXT: Maximum function count: 327 |
| // CHECK-NEXT: Maximum internal block count: 297 |
| // CHECK-NEXT: Statistics for indirect call sites profile: |
| // CHECK-NEXT: Total number of sites: 3 |
| // CHECK-NEXT: Total number of sites with values: 3 |
| // CHECK-NEXT: Total number of profiled values: 3 |
| // CHECK-NEXT: Value sites histogram: |
| // CHECK-NEXT: NumTargets, SiteCount |
| // CHECK-NEXT: 1, 3 |
| // CHECK-NEXT: Statistics for memory intrinsic calls sizes profile: |
| // CHECK-NEXT: Total number of sites: 3 |
| // CHECK-NEXT: Total number of sites with values: 3 |
| // CHECK-NEXT: Total number of profiled values: 3 |
| // CHECK-NEXT: Value sites histogram: |
| // CHECK-NEXT: NumTargets, SiteCount |
| // CHECK-NEXT: 1, 3 |