131ad5429SXinliang David Li // RUN: %clang_profgen -fdata-sections -ffunction-sections -fuse-ld=gold -Wl,--gc-sections -o %t -O3 %s
231ad5429SXinliang David Li // RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t
331ad5429SXinliang David Li // RUN: llvm-profdata merge -o %t.profdata %t.profraw
431ad5429SXinliang David Li // RUN: %clang_profuse=%t.profdata -o - -S -emit-llvm %s | FileCheck %s
531ad5429SXinliang David Li
begin(int i)631ad5429SXinliang David Li int begin(int i) {
731ad5429SXinliang David Li // CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !prof ![[PD1:[0-9]+]]
831ad5429SXinliang David Li if (i)
931ad5429SXinliang David Li return 0;
1031ad5429SXinliang David Li return 1;
1131ad5429SXinliang David Li }
1231ad5429SXinliang David Li
end(int i)1331ad5429SXinliang David Li int end(int i) {
1431ad5429SXinliang David Li // CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !prof ![[PD2:[0-9]+]]
1531ad5429SXinliang David Li if (i)
1631ad5429SXinliang David Li return 0;
1731ad5429SXinliang David Li return 1;
1831ad5429SXinliang David Li }
1931ad5429SXinliang David Li
main(int argc,const char * argv[])2031ad5429SXinliang David Li int main(int argc, const char *argv[]) {
2131ad5429SXinliang David Li begin(0);
2231ad5429SXinliang David Li end(1);
2331ad5429SXinliang David Li
2431ad5429SXinliang David Li // CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !prof ![[PD2:[0-9]+]]
2531ad5429SXinliang David Li if (argc)
2631ad5429SXinliang David Li return 0;
2731ad5429SXinliang David Li return 1;
2831ad5429SXinliang David Li }
2931ad5429SXinliang David Li
30*5c31b8b9SArthur Eubanks // CHECK: ![[PD1]] = !{!"branch_weights", i32 1, i32 2}
31*5c31b8b9SArthur Eubanks // CHECK: ![[PD2]] = !{!"branch_weights", i32 2, i32 1}
32