xref: /llvm-project/compiler-rt/test/profile/Linux/instrprof-basic.c (revision 5c31b8b94fddc7c109672964c72670430fe30887)
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