[clang] Add option to avoid generating coverage mappings for unused functions (PR #92582)

2024-05-23 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > The problem that this solves is related to binary size. In situations where a > large C API is in generated code but a small part of the API is used, the > size of __llvm_prf_names and __llvm_cov_fun sections can be prohibitively > large. This flag offers a way to reduce

[clang] Add option to avoid generating coverage mappings for unused functions (PR #92582)

2024-05-22 Thread Zequan Wu via cfe-commits
ZequanWu wrote: I think the main purpose for emitting coverage mapping for un-emitted functions is to tell llvm-cov that those functions are not executed at all, so it shows execution count 0 for them instead of not-covered. https://github.com/llvm/llvm-project/pull/92582

[clang] Reapply "[Clang][CWG1815] Support lifetime extension of temporary created by aggregate initialization using a default member initializer" (PR #92527)

2024-05-21 Thread Zequan Wu via cfe-commits
@@ -27,6 +27,80 @@ class MemInit { C m = s; }; +namespace std { +typedef decltype(sizeof(int)) size_t; + +// libc++'s implementation +template class initializer_list { + const _E *__begin_; + size_t __size_; + + initializer_list(const _E *__b, size_t __s) :

[clang] [Clang][CWG1815] Support lifetime extension of temporary created by aggregate initialization using a default member initializer (PR #87933)

2024-05-16 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Here's a smaller repro of the `-Wuninitialized` warning: ``` int TestBody_got; namespace std { template struct integral_constant { static const int value = __v; }; template using enable_if_t = _Tp; template class initializer_list {}; template constexpr bool IsTypeOrDerived

[clang] [Clang][CWG1815] Support lifetime extension of temporary created by aggregate initialization using a default member initializer (PR #87933)

2024-05-15 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Can we revert this change while you are investigating if this fix is not trivial? https://github.com/llvm/llvm-project/pull/87933 ___ cfe-commits mailing list cfe-commits@lists.llvm.org

[clang] [Clang][CWG1815] Support lifetime extension of temporary created by aggregate initialization using a default member initializer (PR #87933)

2024-05-15 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Great, I just finished a creduce run with renaming pass disabled, but yours is short. https://github.com/llvm/llvm-project/pull/87933 ___ cfe-commits mailing list cfe-commits@lists.llvm.org

[clang] Allow passing creduce options through creduce-clang-crash.py (PR #92141)

2024-05-14 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu closed https://github.com/llvm/llvm-project/pull/92141 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] Allow passing creduce options through creduce-clang-crash.py (PR #92141)

2024-05-14 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu updated https://github.com/llvm/llvm-project/pull/92141 >From 39d996deffc9d77c28f9f43c2f2ba4b114dd864f Mon Sep 17 00:00:00 2001 From: Zequan Wu Date: Tue, 14 May 2024 12:08:15 -0400 Subject: [PATCH 1/2] Allow passing creduce options through creduce-clang-crash.py

[clang] Allow passing creduce options through creduce-clang-crash.py (PR #92141)

2024-05-14 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu created https://github.com/llvm/llvm-project/pull/92141 This change allows us to pass creduce options to creduce-clang-crash.py script. With this, `--n` is no longer needed to specify the number of cores, so removed the flag. The motivation is

[clang] [Clang][CWG1815] Support lifetime extension of temporary created by aggregate initialization using a default member initializer (PR #87933)

2024-05-13 Thread Zequan Wu via cfe-commits
ZequanWu wrote: ``` $ cat a.cpp namespace std { template struct b { static const int c = a; }; template using e = d; template struct p { using g = f; }; template using i = p::g; template class initializer_list {}; template using j = __remove_pointer(d); template using k = j; template

[clang] [Clang][CWG1815] Support lifetime extension of temporary created by aggregate initialization using a default member initializer (PR #87933)

2024-05-13 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Heads up. This causes clang to crash on some code. I'm running creduce to reduce the cpp source file. https://github.com/llvm/llvm-project/pull/87933 ___ cfe-commits mailing list cfe-commits@lists.llvm.org

[clang] [clang][CoverageMapping] do not emit gap when either end is an `ImplicitValueInitExpr` (PR #89564)

2024-04-22 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu approved this pull request. https://github.com/llvm/llvm-project/pull/89564 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang][CoverageMapping] do not emit gap when either end is an `ImplicitValueInitExpr` (PR #89564)

2024-04-22 Thread Zequan Wu via cfe-commits
ZequanWu wrote: There could be some other statements with invalid source locations (we have seen that before). I suggest validating both source locations inside `findGapAreaBetween` and returning `std::nullopt` if either of them is invalid. https://github.com/llvm/llvm-project/pull/89564

[clang] Use timeTraceAsyncProfilerBegin for Source span (PR #83961)

2024-03-25 Thread Zequan Wu via cfe-commits
@@ -102,23 +104,24 @@ struct llvm::TimeTraceProfiler { llvm::get_thread_name(ThreadName); } - void begin(std::string Name, llvm::function_ref Detail) { -Stack.emplace_back(ClockType::now(), TimePointType(), std::move(Name), - Detail()); +

[clang] Use timeTraceAsyncProfilerBegin for Source span (PR #83961)

2024-03-25 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu edited https://github.com/llvm/llvm-project/pull/83961 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] Use timeTraceAsyncProfilerBegin for Source span (PR #83961)

2024-03-25 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu approved this pull request. https://github.com/llvm/llvm-project/pull/83961 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] Use timeTraceAsyncProfilerBegin for Source span (PR #83961)

2024-03-13 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > > > > IIUC, the approach you choose here is to let `SemaPPCallbacks` control > > > > the "entered file stack" and allow it to remove element (which is file) > > > > from middle of the internal stack in `TimeTraceProfiler`, but this > > > > creates async event which is not

[clang] [llvm] Use timeTraceAsyncProfilerBegin for Source span (PR #83961)

2024-03-12 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > > IIUC, the approach you choose here is to let `SemaPPCallbacks` control the > > "entered file stack" and allow it to remove element (which is file) from > > middle of the internal stack in `TimeTraceProfiler`, but this creates async > > event which is not designed for this

[clang] [llvm] Use timeTraceAsyncProfilerBegin for Source span (PR #83961)

2024-03-12 Thread Zequan Wu via cfe-commits
@@ -102,23 +104,24 @@ struct llvm::TimeTraceProfiler { llvm::get_thread_name(ThreadName); } - void begin(std::string Name, llvm::function_ref Detail) { -Stack.emplace_back(ClockType::now(), TimePointType(), std::move(Name), - Detail()); +

[clang] [llvm] Use timeTraceAsyncProfilerBegin for Source span (PR #83961)

2024-03-11 Thread Zequan Wu via cfe-commits
@@ -132,15 +135,18 @@ struct llvm::TimeTraceProfiler { // happens to be the ones that don't have any currently open entries above // itself. if (llvm::none_of(llvm::drop_begin(llvm::reverse(Stack)), - [&](const TimeTraceProfilerEntry ) { -

[clang] [llvm] Use timeTraceAsyncProfilerBegin for Source span (PR #83961)

2024-03-11 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu commented: IIUC, the approach you choose here is to let `SemaPPCallbacks` control the "entered file stack" and allow it to remove element (which is file) from middle of the internal stack in `TimeTraceProfiler`, but this creates async event which is not designed

[clang] [llvm] Use timeTraceAsyncProfilerBegin for Source span (PR #83961)

2024-03-11 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu edited https://github.com/llvm/llvm-project/pull/83961 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] Use timeTraceAsyncProfilerBegin for Source span (PR #83961)

2024-03-11 Thread Zequan Wu via cfe-commits
@@ -102,23 +104,24 @@ struct llvm::TimeTraceProfiler { llvm::get_thread_name(ThreadName); } - void begin(std::string Name, llvm::function_ref Detail) { -Stack.emplace_back(ClockType::now(), TimePointType(), std::move(Name), - Detail()); +

[llvm] [clang] [clang-tools-extra] [compiler-rt] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2024-01-18 Thread Zequan Wu via cfe-commits
@@ -35,20 +36,32 @@ class InstrProfCorrelator { /// correlate. enum ProfCorrelatorKind { NONE, DEBUG_INFO, BINARY }; + struct WarningCounter { ZequanWu wrote: Since there is

[llvm] [clang-tools-extra] [compiler-rt] [clang] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2024-01-18 Thread Zequan Wu via cfe-commits
@@ -42,6 +43,21 @@ template BuildIDRef getBuildID(const ELFFile ) { return {}; } +BuildIDRef getBuildID(const COFFObjectFile *Obj) { ZequanWu wrote: By that, we don't have any test for it. The test

[llvm] [compiler-rt] [clang] [clang-tools-extra] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2024-01-18 Thread Zequan Wu via cfe-commits
@@ -0,0 +1,33 @@ +// Test llvm-profdata merging with multiple correlation files mixing different correlation modes. + +// RUN: %clang_pgogen -o %t.normal -mllvm --disable-vp=true %S/../Inputs/instrprof-debug-info-correlate-main.cpp

[clang] [compiler-rt] [llvm] [clang-tools-extra] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2024-01-18 Thread Zequan Wu via cfe-commits
@@ -0,0 +1,41 @@ +// REQUIRES: target={{.*windows-msvc.*}} ZequanWu wrote: Yes, for mingw, `-dll` doesn't work. It uses `-shared` https://github.com/llvm/llvm-project/pull/75957 ___ cfe-commits mailing list

[compiler-rt] [clang] [llvm] [clang-tools-extra] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2024-01-18 Thread Zequan Wu via cfe-commits
@@ -118,18 +118,18 @@ cl::opt ProfiledBinary( "profiled-binary", cl::init(""), cl::desc("Path to binary from which the profile was collected."), cl::sub(ShowSubcommand), cl::sub(MergeSubcommand)); -cl::opt DebugInfoFilename( -"debug-info", cl::init(""),

[clang] [llvm] [compiler-rt] [clang-tools-extra] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2024-01-18 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu updated https://github.com/llvm/llvm-project/pull/75957 >From d72f0e1ad7759bad81767418604d27f11d74d6de Mon Sep 17 00:00:00 2001 From: Zequan Wu Date: Tue, 19 Dec 2023 12:32:15 -0500 Subject: [PATCH 1/5] [Profile] Allow profile merging with multiple correlate files.

[llvm] [libcxx] [compiler-rt] [clang] [mlir] [asan] Enable StackSafetyAnalysis by default (PR #77210)

2024-01-11 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Reverted at e7f794875169811f3801fad6d40bb9fe833e1a69. Will file an issue to track it once reducing is done. https://github.com/llvm/llvm-project/pull/77210 ___ cfe-commits mailing list cfe-commits@lists.llvm.org

[libcxx] [clang] [llvm] [compiler-rt] [mlir] [asan] Enable StackSafetyAnalysis by default (PR #77210)

2024-01-11 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Heads up! This causes clang crash: cmd: ``` clang++ "-cc1" "-triple" "x86_64-apple-macosx10.15.0" "-Wundef-prefix=TARGET_OS_" "-Werror=undef-prefix" "-Wdeprecated-objc-isa-usage" "-Werror=deprecated-objc-isa-usage" "-emit-obj" "-femit-dwarf-unwind=no-compact-unwind"

[clang] [Clang] Wide delimiters ('{{{') for expect strings (PR #77326)

2024-01-10 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > @ZequanWu would either of these work for you? > > ```c++ > DCHECK_OK(foo); // > expected-error@components/reporting/util/status_macros.h:* > {{{CHECK,DCHECK,ASSERT,EXPECT}_OK do not accept a type other than Status or > StatusOr.}}} > ``` > > or > > ```c++ >

[clang] [Clang] Wide delimiters ('{{{') for expect strings (PR #77326)

2024-01-10 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Hi, this breaks our build. I don't know how to update the expectation to match Current expectation: DCHECK_OK(foo); // expected-error@components/reporting/util/status_macros.h:* {{{CHECK,DCHECK,ASSERT,EXPECT}_OK do not accept a type other than Status or StatusOr.}}

[clang-tools-extra] [llvm] [compiler-rt] [clang] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2024-01-10 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Ping. https://github.com/llvm/llvm-project/pull/75957 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[compiler-rt] [clang] [llvm] [clang-tools-extra] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2024-01-02 Thread Zequan Wu via cfe-commits
@@ -118,18 +118,18 @@ cl::opt ProfiledBinary( "profiled-binary", cl::init(""), cl::desc("Path to binary from which the profile was collected."), cl::sub(ShowSubcommand), cl::sub(MergeSubcommand)); -cl::opt DebugInfoFilename( -"debug-info", cl::init(""),

[compiler-rt] [clang] [llvm] [clang-tools-extra] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2024-01-02 Thread Zequan Wu via cfe-commits
@@ -481,3 +509,49 @@ Error BinaryInstrProfCorrelator::correlateProfileNameImpl() { this->Names.append(this->Ctx->NameStart, this->Ctx->NameSize); return Error::success(); } + +llvm::Expected> InstrProfCorrelators::get( +ArrayRef> +CorrelateInputs, +

[llvm] [compiler-rt] [clang] [clang-tools-extra] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2023-12-20 Thread Zequan Wu via cfe-commits
@@ -481,3 +509,49 @@ Error BinaryInstrProfCorrelator::correlateProfileNameImpl() { this->Names.append(this->Ctx->NameStart, this->Ctx->NameSize); return Error::success(); } + +llvm::Expected> InstrProfCorrelators::get( +ArrayRef> +CorrelateInputs, +

[clang] [llvm] [compiler-rt] [clang-tools-extra] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2023-12-20 Thread Zequan Wu via cfe-commits
@@ -118,18 +118,18 @@ cl::opt ProfiledBinary( "profiled-binary", cl::init(""), cl::desc("Path to binary from which the profile was collected."), cl::sub(ShowSubcommand), cl::sub(MergeSubcommand)); -cl::opt DebugInfoFilename( -"debug-info", cl::init(""),

[compiler-rt] [llvm] [clang] [clang-tools-extra] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2023-12-20 Thread Zequan Wu via cfe-commits
@@ -25,6 +25,25 @@ // RUN: diff <(llvm-profdata show --all-functions --counts %t.cov.normal.profdata) <(llvm-profdata show --all-functions --counts %t.cov.profdata) +// Test debug info correlate with build id. ZequanWu wrote: The added test in

[compiler-rt] [clang] [clang-tools-extra] [llvm] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2023-12-20 Thread Zequan Wu via cfe-commits
@@ -0,0 +1,33 @@ +// REQUIRES: lld-available ZequanWu wrote: The added test in `Linux/instrprof-debug-info-correlate.c` requires build id. Does darwin linker ld64 or ld64.lld have the option to emit build id into binary? I don't find such flag.

[compiler-rt] [llvm] [clang] [clang-tools-extra] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2023-12-20 Thread Zequan Wu via cfe-commits
@@ -0,0 +1,33 @@ +// REQUIRES: lld-available ZequanWu wrote: Added by mistake. Removed. https://github.com/llvm/llvm-project/pull/75957 ___ cfe-commits mailing list cfe-commits@lists.llvm.org

[llvm] [compiler-rt] [clang] [clang-tools-extra] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2023-12-20 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu updated https://github.com/llvm/llvm-project/pull/75957 >From d72f0e1ad7759bad81767418604d27f11d74d6de Mon Sep 17 00:00:00 2001 From: Zequan Wu Date: Tue, 19 Dec 2023 12:32:15 -0500 Subject: [PATCH 1/4] [Profile] Allow profile merging with multiple correlate files.

[clang] [llvm] [compiler-rt] [clang-tools-extra] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

2023-12-20 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu updated https://github.com/llvm/llvm-project/pull/75957 >From d72f0e1ad7759bad81767418604d27f11d74d6de Mon Sep 17 00:00:00 2001 From: Zequan Wu Date: Tue, 19 Dec 2023 12:32:15 -0500 Subject: [PATCH 1/3] [Profile] Allow profile merging with multiple correlate files.

[compiler-rt] [clang] [llvm] [InstrProf] Single byte counters in coverage (PR #75425)

2023-12-15 Thread Zequan Wu via cfe-commits
@@ -234,8 +246,20 @@ struct MapRegionCounters : public RecursiveASTVisitor { if (Hash.getHashVersion() == PGO_HASH_V1) return Base::TraverseIfStmt(If); +// When single byte coverage mode is enabled, add a counter to then and +// else. +for (Stmt *CS :

[clang] [compiler-rt] [llvm] [InstrProf] Single byte counters in coverage (PR #75425)

2023-12-15 Thread Zequan Wu via cfe-commits
@@ -569,16 +577,26 @@ struct CounterCoverageMappingBuilder /// Return a counter for the subtraction of \c RHS from \c LHS Counter subtractCounters(Counter LHS, Counter RHS, bool Simplify = true) { +if (llvm::EnableSingleByteCoverage) + assert( + 0 && +

[clang-tools-extra] [compiler-rt] [clang] [llvm] [flang] [lldb] [mlir] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-12-14 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > Well, seems like someone broke ToT w/ a compiler error. I'll let you know if > the forward fix fails to address the issue. The latest build passed: https://luci-milo.appspot.com/ui/p/fuchsia/builders/toolchain.ci/clang-linux-x64/b8761696377585255057/overview.

[llvm] [mlir] [lldb] [clang-tools-extra] [compiler-rt] [clang] [flang] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-12-14 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > Seems like a mismatch on the diff, so maybe the check is too stringent. > > If this will take a while to fix, would you mind reverting until it can be > addressed? It passed for me locally on x64. Maybe I should use `diff <(llvm-profdata show --all-functions --counts

[clang] [llvm] [mlir] [lldb] [clang-tools-extra] [compiler-rt] [flang] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-12-14 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu closed https://github.com/llvm/llvm-project/pull/69493 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [compiler-rt] [flang] [llvm] [lldb] [mlir] [clang-tools-extra] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-12-12 Thread Zequan Wu via cfe-commits
@@ -0,0 +1,9 @@ +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -mllvm -profile-correlate=binary -fprofile-instrument=clang -fcoverage-mapping -emit-llvm -o - %s | FileCheck %s

[llvm] [compiler-rt] [lldb] [clang] [mlir] [flang] [clang-tools-extra] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-12-12 Thread Zequan Wu via cfe-commits
@@ -1829,6 +1833,22 @@ void CoverageMappingModuleGen::emit() { llvm::GlobalValue::InternalLinkage, NamesArrVal, llvm::getCoverageUnusedNamesVarName()); } + const StringRef

[clang] [llvm] [lldb] [mlir] [compiler-rt] [clang-tools-extra] [flang] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-12-12 Thread Zequan Wu via cfe-commits
@@ -1829,6 +1833,22 @@ void CoverageMappingModuleGen::emit() { llvm::GlobalValue::InternalLinkage, NamesArrVal, llvm::getCoverageUnusedNamesVarName()); } + const StringRef

[clang] [flang] [llvm] [clang-tools-extra] [mlir] [lldb] [compiler-rt] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-12-05 Thread Zequan Wu via cfe-commits
@@ -702,6 +708,8 @@ serializeValueProfDataFrom(ValueProfRecordClosure *Closure, #define INSTR_PROF_COVMAP_COMMON __llvm_covmap #define INSTR_PROF_COVFUN_COMMON __llvm_covfun #define INSTR_PROF_ORDERFILE_COMMON __llvm_orderfile ZequanWu wrote: Done.

[mlir] [llvm] [lldb] [flang] [clang] [compiler-rt] [clang-tools-extra] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-12-05 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > Can you break up all the changes to tests that replace > `-debug-info-correlate` with `--profile-correlate=debug-info` into a separate > PR to reduce the size of this PR? Done. https://github.com/llvm/llvm-project/pull/69493 ___

[llvm] [mlir] [clang-tools-extra] [clang] [lldb] [compiler-rt] [flang] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-11-28 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Ping. https://github.com/llvm/llvm-project/pull/69493 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[llvm] [clang-tools-extra] [lldb] [compiler-rt] [flang] [clang] [mlir] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-11-16 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > Some further discussion/pre-work needed before proceeding with this PR. These two discussions are addressed and this is ready to be reviewed. 1. Support for merging with multiple correlation files will be done in a separate change. 2. Removed the `VARIANT_MASK_BIN_CORRELATE`

[clang] Supports viewing class member variables in lambda when using the vs debugger (PR #71564)

2023-11-16 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu approved this pull request. https://github.com/llvm/llvm-project/pull/71564 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] Supports viewing class member variables in lambda when using the vs debugger (PR #71564)

2023-11-16 Thread Zequan Wu via cfe-commits
@@ -0,0 +1,48 @@ +// RUN: %clang_cl --target=x86_64-windows-msvc /c /Z7 -o %t.obj -- %s ZequanWu wrote: I think you are missing `-gcodeview` in the command line to emit the debug info. The change should reflect on a metadata. `llvm/test/DebugInfo/COFF` is the

[llvm] [compiler-rt] [clang-tools-extra] [lldb] [clang] [flang] [mlir] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu edited https://github.com/llvm/llvm-project/pull/69493 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[flang] [compiler-rt] [mlir] [llvm] [clang] [clang-tools-extra] [lldb] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu edited https://github.com/llvm/llvm-project/pull/69493 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang-tools-extra] [mlir] [clang] [lldb] [compiler-rt] [llvm] [flang] [Profile] Add binary profile correlation for code coverage. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu edited https://github.com/llvm/llvm-project/pull/69493 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang-tools-extra] [mlir] [clang] [lldb] [compiler-rt] [llvm] [flang] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
@@ -0,0 +1,46 @@ +// REQUIRES: linux || windows +// Default +// RUN: %clang -o %t.normal -fprofile-instr-generate -fcoverage-mapping -fuse-ld=lld %S/Inputs/instrprof-debug-info-correlate-main.cpp %S/Inputs/instrprof-debug-info-correlate-foo.cpp +// RUN: env

[compiler-rt] [flang] [llvm] [lldb] [clang-tools-extra] [clang] [mlir] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
@@ -195,8 +195,14 @@ OPTIONS .. option:: --debug-info= Specify the executable or ``.dSYM`` that contains debug info for the raw profile. - When ``-debug-info-correlate`` was used for instrumentation, use this option - to correlate the raw profile. + When

[lldb] [clang-tools-extra] [clang] [mlir] [flang] [llvm] [compiler-rt] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
@@ -1341,20 +1344,26 @@ void InstrProfiling::createDataVariable(InstrProfCntrInstBase *Inc, } auto *Data = new GlobalVariable(*M, DataTy, false, Linkage, nullptr, DataVarName); - // Reference the counter variable with a label difference (link-time - // constant).

[compiler-rt] [flang] [mlir] [llvm] [clang] [clang-tools-extra] [lldb] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
@@ -1331,6 +1336,18 @@ static int merge_main(int argc, const char *argv[]) { "(default: 1)")); cl::ParseCommandLineOptions(argc, argv, "LLVM profile data merger\n"); + if (!DebugInfoFilename.empty() && !BinaryFilename.empty()) { +

[flang] [compiler-rt] [lldb] [llvm] [mlir] [clang] [clang-tools-extra] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
@@ -1331,6 +1336,18 @@ static int merge_main(int argc, const char *argv[]) { "(default: 1)")); cl::ParseCommandLineOptions(argc, argv, "LLVM profile data merger\n"); + if (!DebugInfoFilename.empty() && !BinaryFilename.empty()) { +

[clang] [flang] [llvm] [clang-tools-extra] [lldb] [compiler-rt] [mlir] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu commented: > "binary" is ambiguous. I wonder whether object file correlation is better. > llvm-symbolizer has an option --obj=xxx. llvm-symbolizer's `--obj` could take an pre-linking object file. But here we need to take post-linked binary for merging.

[lldb] [mlir] [llvm] [clang] [compiler-rt] [flang] [clang-tools-extra] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
@@ -46,14 +73,38 @@ const char *InstrProfCorrelator::NumCountersAttributeName = "Num Counters"; llvm::Expected> InstrProfCorrelator::Context::get(std::unique_ptr Buffer, - const object::ObjectFile ) { + const

[flang] [lldb] [compiler-rt] [llvm] [clang-tools-extra] [clang] [mlir] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
@@ -1829,6 +1833,22 @@ void CoverageMappingModuleGen::emit() { llvm::GlobalValue::InternalLinkage, NamesArrVal, llvm::getCoverageUnusedNamesVarName()); } + const StringRef

[llvm] [clang] [flang] [clang-tools-extra] [lldb] [compiler-rt] [mlir] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
@@ -0,0 +1,46 @@ +// REQUIRES: linux || windows ZequanWu wrote: I think lld is not require, removed `-fuse-ld=lld`. https://github.com/llvm/llvm-project/pull/69493 ___ cfe-commits mailing list

[clang-tools-extra] [compiler-rt] [lldb] [llvm] [clang] [flang] [mlir] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
@@ -0,0 +1,9 @@ +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -mllvm -profile-correlate=binary -fprofile-instrument=clang -fcoverage-mapping -emit-llvm -o - %s | FileCheck %s

[compiler-rt] [clang] [llvm] [clang-tools-extra] [lldb] [mlir] [flang] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
@@ -0,0 +1,11 @@ +; RUN: opt < %s -passes=instrprof -profile-correlate=binary -S | FileCheck %s ZequanWu wrote: Moved the test to `coverage.ll` https://github.com/llvm/llvm-project/pull/69493 ___ cfe-commits mailing

[flang] [clang-tools-extra] [compiler-rt] [lldb] [llvm] [mlir] [clang] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-15 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu edited https://github.com/llvm/llvm-project/pull/69493 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] Supports viewing class member variables in lambda when using the vs debugger (PR #71564)

2023-11-14 Thread Zequan Wu via cfe-commits
@@ -0,0 +1,48 @@ +// RUN: %clang_cl --target=x86_64-windows-msvc /c /Z7 -o %t.obj -- %s +// RUN: llvm-pdbutil dump -all %t.obj | FileCheck %s + +class Foo { + public: + void foo() { +int aa = 4; +int bb = 5; +int cc = 6; +auto f = [=] { + int aaa = a + aa; +

[llvm] [compiler-rt] [clang] [Profile] Refactor profile correlation. (PR #70856)

2023-11-10 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Chatted with @MaskRay offline, we come to an agreement that it's not good to use relying on the bit in __llvm_profile_raw_version to decide whether or not to dump data/name sections at runtime for the reasons mentioned above. Sent a PR: #71996 > Even if we have a way to fix

[compiler-rt] [clang-tools-extra] [llvm] [flang] [mlir] [clang] [lldb] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-10 Thread Zequan Wu via cfe-commits
ZequanWu wrote: There are some discussions about this outside the PR: https://github.com/llvm/llvm-project/pull/70856#issuecomment-1791465183 https://discourse.llvm.org/t/rfc-add-binary-profile-correlation-to-not-load-profile-metadata-sections-into-memory-at-runtime/74565/8 Some further

[clang] [compiler-rt] [llvm] [Profile] Refactor profile correlation. (PR #70856)

2023-11-08 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > If you omit the data and names sections from the object files, then > __llvm_profile_end_data() - __llvm_profile_begin_data() and > __llvm_profile_end_names() - __llvm_profile_begin_names() are both 0 and > there's no need for [special casing this in the >

[clang] [lldb] [mlir] [compiler-rt] [llvm] [clang-tools-extra] [flang] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-06 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Ping. https://github.com/llvm/llvm-project/pull/69493 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[compiler-rt] [llvm] [clang] [Profile] Refactor profile correlation. (PR #70856)

2023-11-02 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > I'm a bit concerned about the use of hasCorrelation. We require the runtime > to check the flag and omit the data and names section if set which introduces > a potential issue: since we emit the version in every TU and u se COMDAT to > deduplicate them, but that means that

[llvm] [lldb] [mlir] [flang] [clang-tools-extra] [clang] [compiler-rt] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-02 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu updated https://github.com/llvm/llvm-project/pull/69493 >From 3a394ce5d4d7d91251337bd0a2c1c1a074eb37e6 Mon Sep 17 00:00:00 2001 From: Zequan Wu Date: Tue, 17 Oct 2023 19:24:12 -0400 Subject: [PATCH 1/6] [Profile] Add binary profile correlation. ---

[clang] [llvm] [mlir] [flang] [compiler-rt] [clang-tools-extra] [lldb] [Profile] Add binary profile correlation to offload profile metadata at runtime. (PR #69493)

2023-11-02 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu updated https://github.com/llvm/llvm-project/pull/69493 >From 3a394ce5d4d7d91251337bd0a2c1c1a074eb37e6 Mon Sep 17 00:00:00 2001 From: Zequan Wu Date: Tue, 17 Oct 2023 19:24:12 -0400 Subject: [PATCH 1/5] [Profile] Add binary profile correlation. ---

[compiler-rt] [llvm] [clang] [Profile] Refactor profile correlation. (PR #70856)

2023-11-02 Thread Zequan Wu via cfe-commits
@@ -89,3 +89,7 @@ COMPILER_RT_VISIBILITY void __llvm_profile_reset_counters(void) { } lprofSetProfileDumped(0); } + +inline int hasCorrelation() { ZequanWu wrote: COMPILER_RT_VISIBILITY is added at

[clang] [llvm] [compiler-rt] [Profile] Refactor profile correlation. (PR #70856)

2023-11-02 Thread Zequan Wu via cfe-commits
@@ -261,6 +261,9 @@ uint64_t __llvm_profile_get_magic(void); /*! \brief Get the version of the file format. */ uint64_t __llvm_profile_get_version(void); +/*! \brief If the binary is compiled with profile correlation. */ +int hasCorrelation(); ZequanWu wrote:

[clang] [llvm] [compiler-rt] [Profile] Refactor profile correlation. (PR #70856)

2023-11-02 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > > Sounds fine to me, but I guess I don't understand why `-profile-correlate=` > > doesn't work. Do you still plan to add the flag later? > > I haven't found a way to share information (whether of not binary correlation > is enabled) between

[compiler-rt] [llvm] [clang] [Profile] Refactor profile correlation. (PR #70856)

2023-11-02 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > @ZequanWu this seems to cause issues on macOS: > https://green.lab.llvm.org/green/job/clang-stage1-RA/36184/console > > ``` > Profile-x86_64 :: Darwin/instrprof-debug-info-correlate.c > Profile-x86_64 :: instrprof-darwin- > Profile-x86_64h ::

[compiler-rt] [llvm] [clang] [Profile] Refactor profile correlation. (PR #70856)

2023-11-01 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu closed https://github.com/llvm/llvm-project/pull/70856 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [compiler-rt] [llvm] [Profile] Refactor profile correlation. (PR #70856)

2023-11-01 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > Sounds fine to me, but I guess I don't understand why `-profile-correlate=` > doesn't work. Do you still plan to add the flag later? I haven't found a way to share information (whether of not binary correlation is enabled) between CodeGen(TargetLoweringObjectFileImpl.cpp)

[llvm] [clang] [clang-tools-extra] [llvm-profdata] Emit warning when counter value is greater than 2^56. (PR #69513)

2023-11-01 Thread Zequan Wu via cfe-commits
ZequanWu wrote: > Just to double check: the commit message says "emit warning", but it should > error by default, right? Yes, -failure-mode=any is default, which throws an error if there is any. https://github.com/llvm/llvm-project/pull/69513 ___

[clang] [llvm] [compiler-rt] [Profile] Refactor profile correlation. (PR #70856)

2023-10-31 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Sorry for so many noise regarding this change. https://github.com/llvm/llvm-project/pull/70856 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [clang-tools-extra] [llvm-profdata] Emit warning when counter value is greater than 2^56. (PR #69513)

2023-10-31 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu closed https://github.com/llvm/llvm-project/pull/69513 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [clang-tools-extra] [llvm-profdata] Emit warning when counter value is greater than 2^56. (PR #69513)

2023-10-31 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu updated https://github.com/llvm/llvm-project/pull/69513 >From 9a1af6e1d47ab622979796f2319edec8a9c77928 Mon Sep 17 00:00:00 2001 From: Zequan Wu Date: Wed, 18 Oct 2023 16:28:30 -0400 Subject: [PATCH 1/7] [llvm-profdata] Emit error when counter value is greater than

[clang] [llvm] [compiler-rt] [Profile] Refactor profile correlation. (PR #70856)

2023-10-31 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu created https://github.com/llvm/llvm-project/pull/70856 Refactor some code from https://github.com/llvm/llvm-project/pull/69493. #70712 was reverted due to linking failures. So, I removed `-profile-correlate=` flag and kept `-debug-info-correlate` in this change.

[clang] [clang-tools-extra] [llvm] [llvm-profdata] Emit warning when counter value is greater than 2^56. (PR #69513)

2023-10-31 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Ping. https://github.com/llvm/llvm-project/pull/69513 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang-tools-extra] [llvm] [llvm-profdata] Emit warning when counter value is greater than 2^56. (PR #69513)

2023-10-31 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu updated https://github.com/llvm/llvm-project/pull/69513 >From 9a1af6e1d47ab622979796f2319edec8a9c77928 Mon Sep 17 00:00:00 2001 From: Zequan Wu Date: Wed, 18 Oct 2023 16:28:30 -0400 Subject: [PATCH 1/6] [llvm-profdata] Emit error when counter value is greater than

[compiler-rt] [clang] [llvm] [Profile] Refactor profile correlation. (PR #70712)

2023-10-31 Thread Zequan Wu via cfe-commits
ZequanWu wrote: I can repro the linking failures when using the same cmake invocation. Here is the full command: ``` $ /usr/bin/c++ -std=c++11 -Wno-documentation-deprecated-sync -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra

[compiler-rt] [clang] [llvm] [Profile] Refactor profile correlation. (PR #70712)

2023-10-31 Thread Zequan Wu via cfe-commits
ZequanWu wrote: Reverted at db7a1ed9a22fadacfa651e88d0f75f365d44af9a. The [build](https://lab.llvm.org/buildbot/#/builders/139/builds/52535/steps/6/logs/stdio) shows bunch linking failures, but I can build those failed targets locally. https://github.com/llvm/llvm-project/pull/70712

[llvm] [compiler-rt] [clang] [Profile] Refactor profile correlation. (PR #70712)

2023-10-31 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu closed https://github.com/llvm/llvm-project/pull/70712 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[llvm] [compiler-rt] [clang] [Profile] Refactor profile correlation. (PR #70712)

2023-10-31 Thread Zequan Wu via cfe-commits
ZequanWu wrote: I think it's fine to land as this is already reviewed & approved at https://github.com/llvm/llvm-project/pull/69656 https://github.com/llvm/llvm-project/pull/70712 ___ cfe-commits mailing list cfe-commits@lists.llvm.org

[clang] [Profile] Refactor profile correlation. (PR #70712)

2023-10-30 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu created https://github.com/llvm/llvm-project/pull/70712 Refactor some code from https://github.com/llvm/llvm-project/pull/69493. Rebase of https://github.com/llvm/llvm-project/pull/69656 on top of main as it was messed up. >From

[clang] [Profile] Refactor profile correlation. (PR #69656)

2023-10-25 Thread Zequan Wu via cfe-commits
https://github.com/ZequanWu edited https://github.com/llvm/llvm-project/pull/69656 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Profile] Refactor profile correlation. (PR #69656)

2023-10-25 Thread Zequan Wu via cfe-commits
@@ -24,15 +24,38 @@ using namespace llvm; -/// Get the __llvm_prf_cnts section. -Expected getCountersSection(const object::ObjectFile ) { +namespace llvm { +// Deprecated. Use -profile-correlate=debug-info. +cl::opt DebugInfoCorrelate( +"debug-info-correlate", +

  1   2   >