The memprof profiles and binaries need to be updated in case of version updates. This change adds three scripts for llvm-profdata, clang and llvm tests where memprof profiles are used as inputs. Also update the tests, profiles and binaries in this change. Change based on the review suggestions in D145023. Reviewed By: tejohnson Differential Revision: https://reviews.llvm.org/D145644
30 lines
1.1 KiB
C++
30 lines
1.1 KiB
C++
// Test if memprof instrumentation and use pass are invoked.
|
|
//
|
|
// Instrumentation:
|
|
// Ensure Pass MemProfilerPass and ModuleMemProfilerPass are invoked.
|
|
// RUN: %clang_cc1 -O2 -fmemory-profile %s -fdebug-pass-manager -emit-llvm -o - 2>&1 | FileCheck %s -check-prefix=INSTRUMENT
|
|
// INSTRUMENT: Running pass: MemProfilerPass on main
|
|
// INSTRUMENT: Running pass: ModuleMemProfilerPass on [module]
|
|
|
|
// Avoid failures on big-endian systems that can't read the raw profile properly
|
|
// REQUIRES: x86_64-linux
|
|
|
|
// TODO: Use text profile inputs once that is available for memprof.
|
|
//
|
|
// To update the inputs below, run Inputs/update_memprof_inputs.sh
|
|
// RUN: llvm-profdata merge %S/Inputs/memprof.memprofraw --profiled-binary %S/Inputs/memprof.exe -o %t.memprofdata
|
|
|
|
// Profile use:
|
|
// Ensure Pass PGOInstrumentationUse is invoked with the memprof-only profile.
|
|
// RUN: %clang_cc1 -O2 -fprofile-instrument-use-path=%t.memprofdata %s -fdebug-pass-manager -emit-llvm -o - 2>&1 | FileCheck %s -check-prefix=USE
|
|
// USE: Running pass: PGOInstrumentationUse on [module]
|
|
|
|
char *foo() {
|
|
return new char[10];
|
|
}
|
|
int main() {
|
|
char *a = foo();
|
|
delete[] a;
|
|
return 0;
|
|
}
|