File: instrprof-value-merge.c

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (70 lines) | stat: -rw-r--r-- 2,090 bytes parent folder | download | duplicates (15)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#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