Home | History | Annotate | Download | only in profile
      1 // 1. Test that __llvm_profile_set_filename has higher precedence than
      2 //    the default path.
      3 // RUN: %clang_profgen -o %t -O3 %s
      4 // RUN: %run %t %t.profraw
      5 // RUN: llvm-profdata merge -o %t.profdata %t.profraw
      6 // RUN: %clang_profuse=%t.profdata -o - -S -emit-llvm %s | FileCheck %s
      7 // RUN: rm %t.profraw
      8 // RUN: rm %t.profdata
      9 // 2. Test that __llvm_profile_set_filename has higher precedence than
     10 //    environment variable
     11 // RUN: env LLVM_PROFILE_FILE=%t.env.profraw %run %t %t.profraw
     12 // RUN: llvm-profdata merge -o %t.profdata %t.profraw
     13 // RUN: %clang_profuse=%t.profdata -o - -S -emit-llvm %s | FileCheck %s
     14 // RUN: rm %t.profraw
     15 // RUN: rm %t.profdata
     16 // 3. Test that __llvm_profile_set_filename has higher precedence than
     17 //    the command line.
     18 // RUN: %clang_profgen=%t.cmd.profraw -o %t.cmd -O3 %s
     19 // RUN: %run %t.cmd %t.profraw
     20 // RUN: llvm-profdata merge -o %t.profdata %t.profraw
     21 // RUN: %clang_profuse=%t.profdata -o - -S -emit-llvm %s | FileCheck %s
     22 // RUN: rm %t.profraw
     23 // RUN: rm %t.profdata
     24 // 4. Test that command line has high precedence than the default path
     25 // RUN: %clang_profgen=%t.cmd.profraw -DNO_API -o %t.cmd -O3 %s
     26 // RUN: %run %t.cmd %t.profraw
     27 // RUN: llvm-profdata merge -o %t.cmd.profdata %t.cmd.profraw
     28 // RUN: %clang_profuse=%t.cmd.profdata -o - -S -emit-llvm %s | FileCheck %s
     29 // RUN: rm %t.cmd.profraw
     30 // RUN: rm %t.cmd.profdata
     31 // 5. Test that the environment variable has higher precedence than
     32 //    the command line.
     33 // RUN: env LLVM_PROFILE_FILE=%t.env.profraw %run %t.cmd %t.profraw
     34 // RUN: llvm-profdata merge -o %t.env.profdata %t.env.profraw
     35 // RUN: %clang_profuse=%t.env.profdata -o - -S -emit-llvm %s | FileCheck %s
     36 // RUN: rm %t.env.profraw
     37 // RUN: rm %t.env.profdata
     38 
     39 #ifdef CALL_SHARED
     40 extern void func(int);
     41 #endif
     42 void __llvm_profile_set_filename(const char *);
     43 int main(int argc, const char *argv[]) {
     44   // CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !prof ![[PD1:[0-9]+]]
     45   if (argc < 2)
     46     return 1;
     47 #ifndef NO_API
     48   __llvm_profile_set_filename(argv[1]);
     49 #endif
     50 
     51 #ifdef CALL_SHARED
     52   func(1);
     53 #endif
     54   return 0;
     55 }
     56 // CHECK: ![[PD1]] = !{!"branch_weights", i32 1, i32 2}
     57 // SHARED: Total functions: 2
     58