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