diff --git a/compiler-rt/test/profile/ContinuousSyncMode/basic.c b/compiler-rt/test/profile/ContinuousSyncMode/basic.c index 142a47a71ad8a..e8bd087a0f59d 100644 --- a/compiler-rt/test/profile/ContinuousSyncMode/basic.c +++ b/compiler-rt/test/profile/ContinuousSyncMode/basic.c @@ -1,11 +1,15 @@ -// REQUIRES: darwin +// REQUIRES: target={{.*(darwin|aix).*}} -// RUN: %clang -fprofile-instr-generate -fcoverage-mapping -o %t.exe %s +// RUN: %clang_profgen_cont -fcoverage-mapping -o %t.exe %s // RUN: echo "garbage" > %t.profraw // RUN: env LLVM_PROFILE_FILE="%c%t.profraw" %run %t.exe // RUN: llvm-profdata show --counts --all-functions %t.profraw | FileCheck %s -check-prefix=CHECK-COUNTS // RUN: llvm-profdata merge -o %t.profdata %t.profraw -// RUN: llvm-cov report %t.exe -instr-profile %t.profdata | FileCheck %s -check-prefix=CHECK-COVERAGE +// +// COM: The "report" and "show" commands of llvm-cov are not supported on AIX. +// RUN: %if !target={{.*aix.*}} %{ \ +// RUN: llvm-cov report %t.exe -instr-profile %t.profdata | FileCheck %s -check-prefix=CHECK-COVERAGE \ +// RUN: %} // CHECK-COUNTS: Counters: // CHECK-COUNTS-NEXT: main: diff --git a/compiler-rt/test/profile/ContinuousSyncMode/get-filename.c b/compiler-rt/test/profile/ContinuousSyncMode/get-filename.c index d70e11991e180..40a0cc5ffd688 100644 --- a/compiler-rt/test/profile/ContinuousSyncMode/get-filename.c +++ b/compiler-rt/test/profile/ContinuousSyncMode/get-filename.c @@ -1,6 +1,6 @@ -// REQUIRES: darwin +// REQUIRES: target={{.*(darwin|aix).*}} -// RUN: %clang_pgogen -o %t.exe %s +// RUN: %clang_pgogen_cont -o %t.exe %s // RUN: env LLVM_PROFILE_FILE="%c%t.profraw" %run %t.exe %t.profraw // RUN: env LLVM_PROFILE_FILE="%t%c.profraw" %run %t.exe %t.profraw // RUN: env LLVM_PROFILE_FILE="%t.profraw%c" %run %t.exe %t.profraw diff --git a/compiler-rt/test/profile/ContinuousSyncMode/image-with-mcdc.c b/compiler-rt/test/profile/ContinuousSyncMode/image-with-mcdc.c index d2afe7048f37f..d171badbf4d33 100644 --- a/compiler-rt/test/profile/ContinuousSyncMode/image-with-mcdc.c +++ b/compiler-rt/test/profile/ContinuousSyncMode/image-with-mcdc.c @@ -1,6 +1,6 @@ -// REQUIRES: darwin +// REQUIRES: target={{.*(darwin|aix).*}} -// RUN: %clang_profgen -fcoverage-mapping -fcoverage-mcdc -O3 -o %t.exe %s +// RUN: %clang_profgen_cont -fcoverage-mapping -fcoverage-mcdc -O3 -o %t.exe %s // RUN: env LLVM_PROFILE_FILE="%c%t.profraw" %run %t.exe 3 3 // RUN: llvm-profdata show --text --all-functions %t.profraw | FileCheck %s diff --git a/compiler-rt/test/profile/ContinuousSyncMode/image-with-no-counters.c b/compiler-rt/test/profile/ContinuousSyncMode/image-with-no-counters.c index f30e2255b2289..4313ad30b7273 100644 --- a/compiler-rt/test/profile/ContinuousSyncMode/image-with-no-counters.c +++ b/compiler-rt/test/profile/ContinuousSyncMode/image-with-no-counters.c @@ -1,8 +1,8 @@ -// REQUIRES: darwin +// REQUIRES: target={{.*(darwin|aix).*}} // RUN: echo "static void dead_code(void) {}" > %t.dso.c -// RUN: %clang_profgen -fcoverage-mapping -O3 -dynamiclib -o %t.dso.dylib %t.dso.c -// RUN: %clang_profgen -fcoverage-mapping -O3 -o %t.exe %s %t.dso.dylib +// RUN: %clang_profgen_cont -fcoverage-mapping -O3 %shared_lib_flag -o %t.dso.dylib %t.dso.c +// RUN: %clang_profgen_cont -fcoverage-mapping -O3 -o %t.exe %s %t.dso.dylib // RUN: env LLVM_PROFILE_FILE="%c%t.profraw" %run %t.exe 2>&1 | count 0 // RUN: llvm-profdata show --counts --all-functions %t.profraw | FileCheck %s diff --git a/compiler-rt/test/profile/ContinuousSyncMode/online-merging.c b/compiler-rt/test/profile/ContinuousSyncMode/online-merging.c index b3c33f339713c..35b0cd0b05d1f 100644 --- a/compiler-rt/test/profile/ContinuousSyncMode/online-merging.c +++ b/compiler-rt/test/profile/ContinuousSyncMode/online-merging.c @@ -1,4 +1,4 @@ -// REQUIRES: darwin +// REQUIRES: target={{.*(darwin|aix).*}} // Test the online merging mode (%m) along with continuous mode (%c). // @@ -8,9 +8,9 @@ // Create two DSOs and a driver program that uses them. // RUN: echo "void dso1(void) {}" > dso1.c // RUN: echo "void dso2(void) {}" > dso2.c -// RUN: %clang_pgogen -dynamiclib -o %t.dir/dso1.dylib dso1.c -mllvm -instrprof-atomic-counter-update-all=1 -// RUN: %clang_pgogen -dynamiclib -o %t.dir/dso2.dylib dso2.c -mllvm -instrprof-atomic-counter-update-all=1 -// RUN: %clang_pgogen -o main.exe %s %t.dir/dso1.dylib %t.dir/dso2.dylib -mllvm -instrprof-atomic-counter-update-all=1 +// RUN: %clang_pgogen_cont %shared_lib_flag -o %t.dir/dso1.dylib dso1.c -mllvm -instrprof-atomic-counter-update-all=1 +// RUN: %clang_pgogen_cont %shared_lib_flag -o %t.dir/dso2.dylib dso2.c -mllvm -instrprof-atomic-counter-update-all=1 +// RUN: %clang_pgogen_cont -o main.exe %s %t.dir/dso1.dylib %t.dir/dso2.dylib -mllvm -instrprof-atomic-counter-update-all=1 // // === Round 1 === // Test merging+continuous mode without any file contention. diff --git a/compiler-rt/test/profile/ContinuousSyncMode/pid-substitution.c b/compiler-rt/test/profile/ContinuousSyncMode/pid-substitution.c index b2b95f41f2bdf..309b685a95c5b 100644 --- a/compiler-rt/test/profile/ContinuousSyncMode/pid-substitution.c +++ b/compiler-rt/test/profile/ContinuousSyncMode/pid-substitution.c @@ -1,7 +1,7 @@ -// REQUIRES: darwin +// REQUIRES: target={{.*(darwin|aix).*}} // RUN: rm -rf %t.dir && mkdir -p %t.dir -// RUN: %clang_pgogen -o %t.exe %s +// RUN: %clang_pgogen_cont -o %t.exe %s // // Note: %%p is needed here, not %p, because of lit's path substitution. // RUN: env LLVM_PROFILE_FILE="%t.dir/%c-%%p" %run %t.exe diff --git a/compiler-rt/test/profile/ContinuousSyncMode/reset-default-profile.c b/compiler-rt/test/profile/ContinuousSyncMode/reset-default-profile.c index 75af7684161c9..fb35d77c43428 100644 --- a/compiler-rt/test/profile/ContinuousSyncMode/reset-default-profile.c +++ b/compiler-rt/test/profile/ContinuousSyncMode/reset-default-profile.c @@ -1,4 +1,4 @@ -// REQUIRES: darwin || linux +// REQUIRES: target={{.*(darwin|linux|aix).*}} // Test when LLVM_PROFILE_FILE is set incorrectly, it should fall backs to use default.profraw without runtime error. diff --git a/compiler-rt/test/profile/ContinuousSyncMode/set-filename.c b/compiler-rt/test/profile/ContinuousSyncMode/set-filename.c index e6d5fd31ab1b6..106e12e4e3b6e 100644 --- a/compiler-rt/test/profile/ContinuousSyncMode/set-filename.c +++ b/compiler-rt/test/profile/ContinuousSyncMode/set-filename.c @@ -1,6 +1,6 @@ -// REQUIRES: darwin +// REQUIRES: target={{.*(darwin|aix).*}} -// RUN: %clang_pgogen -o %t.exe %s +// RUN: %clang_pgogen_cont -o %t.exe %s // RUN: env LLVM_PROFILE_FILE="%c%t.profraw" %run %t.exe %t.profraw %t.bad #include diff --git a/compiler-rt/test/profile/lit.cfg.py b/compiler-rt/test/profile/lit.cfg.py index bb5e28d87bb0f..7a8877b9f4e50 100644 --- a/compiler-rt/test/profile/lit.cfg.py +++ b/compiler-rt/test/profile/lit.cfg.py @@ -30,6 +30,9 @@ def get_required_attr(config, attr_name): target_is_msvc = bool(re.match(r".*-windows-msvc$", config.target_triple)) +# Whether continous profile collection (%c) requires runtime counter relocation on this platform +runtime_reloc = bool(config.host_os in ["AIX"]) + if config.host_os in ["Linux"]: extra_link_flags = ["-ldl"] elif target_is_msvc: @@ -94,6 +97,14 @@ def exclude_unsupported_files_for_aix(dirname): config.substitutions.append( ("%clang_profgen=", build_invocation(clang_cflags) + " -fprofile-instr-generate=") ) +config.substitutions.append( + ( + "%clang_profgen_cont ", + build_invocation(clang_cflags) + + " -fprofile-instr-generate " + + ("-mllvm -runtime-counter-relocation " if runtime_reloc else ""), + ) +) config.substitutions.append( ( "%clangxx_profgen ", @@ -113,6 +124,14 @@ def exclude_unsupported_files_for_aix(dirname): config.substitutions.append( ("%clang_pgogen=", build_invocation(clang_cflags) + " -fprofile-generate=") ) +config.substitutions.append( + ( + "%clang_pgogen_cont ", + build_invocation(clang_cflags) + + " -fprofile-generate " + + ("-mllvm -runtime-counter-relocation " if runtime_reloc else ""), + ) +) config.substitutions.append( ("%clangxx_pgogen ", build_invocation(clang_cxxflags) + " -fprofile-generate ") ) @@ -166,6 +185,10 @@ def exclude_unsupported_files_for_aix(dirname): ]: config.unsupported = True +config.substitutions.append( + ("%shared_lib_flag", "-dynamiclib" if (config.host_os == "Darwin") else "-shared") +) + if config.host_os in ["AIX"]: config.available_features.add("system-aix") exclude_unsupported_files_for_aix(config.test_source_root)