6 changes: 3 additions & 3 deletions clang/test/Profile/Inputs/c-unprofiled-blocks.proftext
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
never_called
44257542701577
5644096560937528444
9
0
0
Expand All @@ -12,12 +12,12 @@ never_called
0

main
1
24
1
1

dead_code
2859007309808137
9636018207904213947
10
1
0
Expand Down
18 changes: 9 additions & 9 deletions clang/test/Profile/Inputs/cxx-class.proftext
Original file line number Diff line number Diff line change
@@ -1,52 +1,52 @@
_Z14simple_wrapperv
4
18129
2
1
100

main
0
24
1
1

_ZN6SimpleD1Ev
10
42129
2
0
0

_ZN6SimpleD2Ev
10
42129
2
100
99

_ZN6Simple6methodEv
10
42129
2
100
99

_ZN6SimpleC1Ei
10
42129
2
0
0

_ZN6SimpleC2Ei
10
42129
2
100
99

_ZN7DerivedC1Ev
10
42129
2
100
99

_ZN7DerivedD2Ev
10
42129
2
100
99
Binary file not shown.
239 changes: 239 additions & 0 deletions clang/test/Profile/Inputs/cxx-hash-v2.proftext
Original file line number Diff line number Diff line change
@@ -0,0 +1,239 @@
_Z11loop_returnv
# Func Hash:
1160721
# Num Counters:
2
# Counter Values:
0
0

_Z10loop_breakv
# Func Hash:
1160593
# Num Counters:
2
# Counter Values:
0
0

_Z8no_gotosv
# Func Hash:
1
# Num Counters:
2
# Counter Values:
0
0

_Z13loop_continuev
# Func Hash:
1160657
# Num Counters:
2
# Counter Values:
0
0

_Z18loop_after_if_elsev
# Func Hash:
11044458641
# Num Counters:
3
# Counter Values:
0
0
0

_Z21consecutive_try_catchv
# Func Hash:
49221687100497
# Num Counters:
5
# Counter Values:
0
0
0
0
0

_Z16nested_try_catchv
# Func Hash:
49147600487505
# Num Counters:
5
# Counter Values:
0
0
0
0
0

_Z13indirect_gotov
# Func Hash:
1345
# Num Counters:
2
# Counter Values:
0
0

_Z17nested_for_rangesv
# Func Hash:
1332305
# Num Counters:
3
# Counter Values:
0
0
0

_Z18loop_in_then_blockv
# Func Hash:
11040003281
# Num Counters:
3
# Counter Values:
0
0
0

_Z22consecutive_for_rangesv
# Func Hash:
1380689
# Num Counters:
3
# Counter Values:
0
0
0

_Z15consecutive_dosv
# Func Hash:
856273
# Num Counters:
3
# Counter Values:
0
0
0

_Z11direct_gotov
# Func Hash:
1281
# Num Counters:
2
# Counter Values:
0
0

main
# Func Hash:
24
# Num Counters:
1
# Counter Values:
1

_Z11double_lnotv
# Func Hash:
174695569
# Num Counters:
2
# Counter Values:
0
0

_Z18if_inside_of_whilev
# Func Hash:
36250705
# Num Counters:
3
# Counter Values:
0
0
0

_Z11single_lnotv
# Func Hash:
2729105
# Num Counters:
2
# Counter Values:
0
0

_Z19if_outside_of_whilev
# Func Hash:
38053009
# Num Counters:
3
# Counter Values:
0
0
0

_Z8no_throwv
# Func Hash:
0
# Num Counters:
1
# Counter Values:
0

_Z9has_throwv
# Func Hash:
25
# Num Counters:
1
# Counter Values:
0

_Z10nested_dosv
# Func Hash:
799825
# Num Counters:
3
# Counter Values:
0
0
0

_Z16if_inside_of_forv
# Func Hash:
4750648401
# Num Counters:
3
# Counter Values:
0
0
0

_Z18loop_in_else_blockv
# Func Hash:
11044398161
# Num Counters:
3
# Counter Values:
0
0
0

_Z17if_outside_of_forv
# Func Hash:
4752450705
# Num Counters:
3
# Counter Values:
0
0
0

_Z10loop_emptyv
# Func Hash:
18129
# Num Counters:
2
# Counter Values:
0
0

6 changes: 3 additions & 3 deletions clang/test/Profile/Inputs/cxx-lambda.proftext
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
cxx-lambda.cpp:_ZZ7lambdasvENK3$_0clEi
654
11211970062
3
10
9
9

main
0
24
1
1

_Z7lambdasv
41226
2895087587861649
4
1
1
Expand Down
4 changes: 2 additions & 2 deletions clang/test/Profile/Inputs/cxx-rangefor.proftext
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
_Z9range_forv
0x000000000014a28a
6169071350249721981
5
1
4
Expand All @@ -8,6 +8,6 @@ _Z9range_forv
1

main
0
24
1
1
6 changes: 3 additions & 3 deletions clang/test/Profile/Inputs/cxx-templates.proftext
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
main
0
24
1
1

_Z4loopILj0EEvv
4
18129
2
1
0

_Z4loopILj100EEvv
4
18129
2
1
100
Expand Down
6 changes: 3 additions & 3 deletions clang/test/Profile/Inputs/cxx-throws.proftext
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
_Z6throwsv
18359008150154
340120998528097520
9
1
100
Expand All @@ -12,14 +12,14 @@ _Z6throwsv
100

_Z11unreachablei
0x28a
706946049169
3
1
1
0

main
0x2cc
187765848
3
1
1
Expand Down
4 changes: 2 additions & 2 deletions clang/test/Profile/Inputs/func-entry.proftext
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
foo
0
24
1
1000

main
4
1160280
2
1
10000
2 changes: 1 addition & 1 deletion clang/test/Profile/Inputs/gcc-flag-compatibility.proftext
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
main
4
1160280
2
1
100
19 changes: 16 additions & 3 deletions clang/test/Profile/Inputs/objc-general.proftext
Original file line number Diff line number Diff line change
@@ -1,17 +1,30 @@
objc-general.m:__13+[A foreach:]_block_invoke
10
42129
2
2
1

objc-general.m:+[A foreach:]
6
401
2
1
2

main
0
24
1
1

consecutive_objc_for_ranges
1642897
3
0
0
0

nested_objc_for_ranges
1598545
3
0
0
0
4 changes: 2 additions & 2 deletions clang/test/Profile/c-outdated-data.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name c-outdated-data.c %s -o /dev/null -emit-llvm -fprofile-instrument-use-path=%t.profdata 2>&1 | FileCheck %s -check-prefix=NO_MISSING
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name c-outdated-data.c %s -o /dev/null -emit-llvm -Wprofile-instr-missing -fprofile-instrument-use-path=%t.profdata 2>&1 | FileCheck %s -check-prefix=WITH_MISSING

// NO_MISSING: warning: profile data may be out of date: of 3 functions, 1 has mismatched data that will be ignored
// NO_MISSING: warning: profile data may be out of date: of 3 functions, 2 have mismatched data that will be ignored
// NO_MISSING-NOT: 1 has no data

// WITH_MISSING: warning: profile data may be out of date: of 3 functions, 1 has mismatched data that will be ignored
// WITH_MISSING: warning: profile data may be out of date: of 3 functions, 2 have mismatched data that will be ignored
// WITH_MISSING: warning: profile data may be incomplete: of 3 functions, 1 has no data

void no_usable_data() {
Expand Down
177 changes: 177 additions & 0 deletions clang/test/Profile/cxx-hash-v2.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
// REQUIRES: shell

// Check that all of the hashes in this file are unique (i.e, that none of the
// profiles for these functions are mutually interchangeable).
//
// RUN: llvm-profdata show -all-functions %S/Inputs/cxx-hash-v2.profdata.v5 | grep "Hash: 0x" | sort > %t.hashes
// RUN: uniq %t.hashes > %t.hashes.unique
// RUN: diff %t.hashes %t.hashes.unique

// RUN: llvm-profdata merge %S/Inputs/cxx-hash-v2.proftext -o %t.profdata
// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -triple x86_64-apple-macosx10.9 -main-file-name cxx-hash-v2.mm %s -o /dev/null -emit-llvm -fprofile-instrument-use-path=%t.profdata 2>&1 | FileCheck %s -allow-empty
// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -triple x86_64-apple-macosx10.9 -main-file-name cxx-hash-v2.mm %s -o /dev/null -emit-llvm -fprofile-instrument-use-path=%S/Inputs/cxx-hash-v2.profdata.v5 2>&1 | FileCheck %s -allow-empty

// CHECK-NOT: warning: profile data may be out of date

int x;
int arr[1] = {0};

void loop_after_if_else() {
if (1)
x = 1;
else
x = 2;
while (0)
++x;
}

void loop_in_then_block() {
if (1) {
while (0)
++x;
} else {
x = 2;
}
}

void loop_in_else_block() {
if (1) {
x = 1;
} else {
while (0)
++x;
}
}

void if_inside_of_for() {
for (x = 0; x < 0; ++x) {
x = 1;
if (1)
x = 2;
}
}

void if_outside_of_for() {
for (x = 0; x < 0; ++x)
x = 1;
if (1)
x = 2;
}

void if_inside_of_while() {
while (0) {
x = 1;
if (1)
x = 2;
}
}

void if_outside_of_while() {
while (0)
x = 1;
if (1)
x = 2;
}

void nested_dos() {
do {
do {
++x;
} while (0);
} while (0);
}

void consecutive_dos() {
do {
} while (0);
do {
++x;
} while (0);
}

void loop_empty() {
for (x = 0; x < 5; ++x) {}
}

void loop_return() {
for (x = 0; x < 5; ++x)
return;
}

void loop_continue() {
for (x = 0; x < 5; ++x)
continue;
}

void loop_break() {
for (x = 0; x < 5; ++x)
break;
}

void no_gotos() {
static void *dispatch[] = {&&done};
x = 0;
done:
++x;
}

void direct_goto() {
static void *dispatch[] = {&&done};
x = 0;
goto done;
done:
++x;
}

void indirect_goto() {
static void *dispatch[] = {&&done};
x = 0;
goto *dispatch[x];
done:
++x;
}

void nested_for_ranges() {
for (int a : arr)
for (int b : arr)
++x;
}

void consecutive_for_ranges() {
for (int a : arr) {}
for (int b : arr)
++x;
}

void nested_try_catch() {
try {
try {
++x;
} catch (...) {}
} catch (...) {}
}

void consecutive_try_catch() {
try {} catch (...) {}
try {
++x;
} catch (...) {}
}

void no_throw() {}

void has_throw() {
throw 0;
}

void single_lnot() {
if (!x) {}
}

void double_lnot() {
if (!!x) {}
}

int main() {
return 0;
}
18 changes: 17 additions & 1 deletion clang/test/Profile/objc-general.m
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name objc-general.m %s -o - -emit-llvm -fblocks -fprofile-instrument=clang | FileCheck -check-prefix=PGOGEN %s

// RUN: llvm-profdata merge %S/Inputs/objc-general.proftext -o %t.profdata
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name objc-general.m %s -o - -emit-llvm -fblocks -fprofile-instrument-use-path=%t.profdata | FileCheck -check-prefix=PGOUSE %s
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name objc-general.m %s -o - -emit-llvm -fblocks -fprofile-instrument-use-path=%t.profdata 2>&1 | FileCheck -check-prefix=PGOUSE %s

// PGOUSE-NOT: warning: profile data may be out of date

#ifdef HAVE_FOUNDATION

Expand Down Expand Up @@ -63,6 +65,20 @@ + (void)foreach: (NSArray *)array
}
@end

void nested_objc_for_ranges(NSArray *arr) {
int x = 0;
for (id a in arr)
for (id b in arr)
++x;
}

void consecutive_objc_for_ranges(NSArray *arr) {
int x = 0;
for (id a in arr) {}
for (id b in arr)
++x;
}

// PGOUSE-DAG: ![[FR1]] = !{!"branch_weights", i32 2, i32 3}
// PGOUSE-DAG: ![[FR2]] = !{!"branch_weights", i32 3, i32 2}
// PGOUSE-DAG: ![[BL1]] = !{!"branch_weights", i32 2, i32 2}
Expand Down