[clang] [lld] [llvm] [Windows] Add support for emitting PGO/LTO magic strings in the Windows PE debug directory (PR #114260)

2024-11-30 Thread Alexandre Ganea via cfe-commits
@@ -1206,6 +1245,19 @@ void Writer::createMiscChunks() { IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT)); } + if (writeLTO) { +debugRecords.emplace_back(COFF::IMAGE_DEBUG_TYPE_POGO, + make(ltcg));

[clang] [lld] [llvm] [Windows] Add support for emitting PGO/LTO magic strings in the Windows PE debug directory (PR #114260)

2024-11-30 Thread Alexandre Ganea via cfe-commits
aganea wrote: I had a more in-depth look at this. Overall I don't agree with the whole direction of this patch. I don't think it's wise for LLD to emit debug records/`coffgrp` that do not match what MSVC is generating. We can't just blindly emit a record with the string of the debug type (ie.

[clang] [lld] [llvm] [Windows] Add support for emitting PGO/LTO magic strings in the Windows PE debug directory (PR #114260)

2024-11-05 Thread Alexandre Ganea via cfe-commits
aganea wrote: > I would like to benchmark `lld` after this change, since I have added a loop > that goes through every section of every object file. Could someone point in > the direction of a good benchmark for that? I was thinking I can benchmark on > the linking of `clang` or any other big

[clang] [lld] [llvm] [Windows] Add support for emitting PGO/LTO magic strings in the Windows PE debug directory (PR #114260)

2024-10-31 Thread Alexandre Ganea via cfe-commits
aganea wrote: I am just curious what is the purpose of this? Is it just for feature parity? Can you also investigate if MSVC emits other special things/sections in the binary in LTCG/PGO builds? https://github.com/llvm/llvm-project/pull/114260 ___ cf

[clang] [lld] [llvm] [Windows] Add support for emitting PGO/LTO magic strings in the Windows PE debug directory (PR #114260)

2024-10-31 Thread Alexandre Ganea via cfe-commits
@@ -0,0 +1,13 @@ +// This test checks if Window PE file compiled with -flto option contains a magic +// string "LTCG" to indicate LTO compilation. + +// REQUIRES: system-windows + +// RUN: %clang --target=x86_64-pc-windows-msvc -flto -fuse-ld=lld %s -o %t.exe +// RUN: dumpbin /H

[clang] [lld] [llvm] [Windows] Add support for emitting PGO/LTO magic strings in the Windows PE debug directory (PR #114260)

2024-10-31 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/114260 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [lld] [llvm] [Windows] Add support for emitting PGO/LTO magic strings in the Windows PE debug directory (PR #114260)

2024-10-31 Thread Alexandre Ganea via cfe-commits
@@ -0,0 +1,13 @@ +// This test checks if Window PE file compiled with -flto option contains a magic +// string "LTCG" to indicate LTO compilation. + +// REQUIRES: system-windows + +// RUN: %clang --target=x86_64-pc-windows-msvc -flto -fuse-ld=lld %s -o %t.exe +// RUN: dumpbin /H

[clang] [llvm] [clang] Add/enhance documentation for some important classes. (PR #109795)

2024-09-24 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/109795 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [clang] Add/enhance documentation for some important classes. (PR #109795)

2024-09-24 Thread Alexandre Ganea via cfe-commits
@@ -7,7 +7,10 @@ //===--===// // /// \file -/// Defines the virtual file system interface vfs::FileSystem. +/// Provides abstract filesystem APIs to decouple from OS-level file access. +/// +/// This allows re

[clang] [llvm] [clang] Add/enhance documentation for some important classes. (PR #109795)

2024-09-24 Thread Alexandre Ganea via cfe-commits
@@ -648,18 +648,54 @@ class InBeforeInTUCacheEntry { /// instances. using ModuleBuildStack = ArrayRef>; -/// This class handles loading and caching of source files into memory. +/// The SourceManager describes the compiler's view of source code. /// -/// This object owns the

[clang] [llvm] [clang] Add/enhance documentation for some important classes. (PR #109795)

2024-09-24 Thread Alexandre Ganea via cfe-commits
@@ -648,18 +648,54 @@ class InBeforeInTUCacheEntry { /// instances. using ModuleBuildStack = ArrayRef>; -/// This class handles loading and caching of source files into memory. +/// The SourceManager describes the compiler's view of source code. /// -/// This object owns the

[clang] [llvm] Delete the clang-format Visual Studio plugin code (PR #108342)

2024-09-12 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea approved this pull request. https://github.com/llvm/llvm-project/pull/108342 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-09-06 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea approved this pull request. https://github.com/llvm/llvm-project/pull/106369 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-09-06 Thread Alexandre Ganea via cfe-commits
aganea wrote: > I always set Argv0 and Commandline, even if they are just an empty string. > Some tools had issues if those were not set. We already did use the empty > string for BuildInfoRecord::TypeServerPDB, so now its also more consistent. Ah yes, that's good. Looks good, thanks again!

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-09-05 Thread Alexandre Ganea via cfe-commits
aganea wrote: The code LG but I’d like please @nebulark if you can explain de unit tests changes? Why those offset changes? The code should emit the same thing as before? https://github.com/llvm/llvm-project/pull/106369 ___ cfe-commits mailing list c

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-08-30 Thread Alexandre Ganea via cfe-commits
aganea wrote: > Maded the suggested changes. Continuing looking into the failing tests. This > is my first llvm pr and I need some time to figure out the issues those are > indicating and replicating those locally. I recommend that you build a Debug target, ie. `cmake -DCMAKE_BUILD_TYPE=Debug

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-08-28 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/106369 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-08-28 Thread Alexandre Ganea via cfe-commits
@@ -321,6 +322,41 @@ static bool actionRequiresCodeGen(BackendAction Action) { Action != Backend_EmitLL; } +static std::string flattenClangCommandLine(ArrayRef Args, + StringRef MainFilename) { + std::string FlatCmdLine; + raw_st

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-08-28 Thread Alexandre Ganea via cfe-commits
@@ -91,8 +91,11 @@ class MCTargetOptions { std::string SplitDwarfFile; std::string AsSecureLogFile; - const char *Argv0 = nullptr; - ArrayRef CommandLineArgs; + // This will be set as compiler path in LF_BUILDINFO aganea wrote: You would need to refer

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-08-28 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea commented: Sounds good, but please correct the failing BuildKit tests (below) before we can go further. https://github.com/llvm/llvm-project/pull/106369 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.ll

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-08-28 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/106369 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-08-28 Thread Alexandre Ganea via cfe-commits
@@ -893,6 +893,8 @@ static TypeIndex getStringIdTypeIdx(GlobalTypeTableBuilder &TypeTable, return TypeTable.writeLeafType(SIR); } +// This just exists for backwards compatability for the deprecated MCTargetOptions::CommandLineArgs +// It assumed a clang compiler frontend

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-08-28 Thread Alexandre Ganea via cfe-commits
@@ -950,9 +952,16 @@ void CodeViewDebug::emitBuildInfo() { if (Asm->TM.Options.MCOptions.Argv0 != nullptr) { BuildInfoArgs[BuildInfoRecord::BuildTool] = getStringIdTypeIdx(TypeTable, Asm->TM.Options.MCOptions.Argv0); -BuildInfoArgs[BuildInfoRecord::CommandLine

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-08-28 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea requested changes to this pull request. https://github.com/llvm/llvm-project/pull/106369 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-08-28 Thread Alexandre Ganea via cfe-commits
@@ -92,8 +92,15 @@ class MCTargetOptions { std::string AsSecureLogFile; const char *Argv0 = nullptr; + + // Deprecated: Use FlatCommandlineArgs instead + // Arguments here are interpreted as coming from clang, formated and end up in LF_BUILDINFO as CommandLineArgs A

[clang] [llvm] [CodeView] Flatten cmd args in frontend for LF_BUILDINFO (PR #106369)

2024-08-28 Thread Alexandre Ganea via cfe-commits
@@ -92,8 +92,15 @@ class MCTargetOptions { std::string AsSecureLogFile; const char *Argv0 = nullptr; aganea wrote: Would you mind please moving (and adapting) the comment that you've added here above? Both Argv0 and CommandLineArgs are only used for stor

[clang] [clang] Stop adjusting the module cache path (PR #102540)

2024-08-13 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea approved this pull request. Thanks for the explanation! https://github.com/llvm/llvm-project/pull/102540 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang] Ensure `--print-runtime-dir` path exists (PR #102834)

2024-08-12 Thread Alexandre Ganea via cfe-commits
aganea wrote: To give the whole picture, the story is that while building the LLVM package on Windows, I was seeing this: ``` [51/52] Running sanitizer_common testsllvm-lit.py: C:\src\git\llvm-project\llvm\utils\lit\lit\llvm\config.py:57: note: using lit tools: C:\Program Files\Git\usr\bin\ ll

[clang] [clang] Ensure `--print-runtime-dir` path exists (PR #102834)

2024-08-11 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/102834 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang] Ensure `--print-runtime-dir` path exists (PR #102834)

2024-08-11 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/102834 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang] Ensure `--print-runtime-dir` path exists (PR #102834)

2024-08-11 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/102834 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang] Ensure `--print-runtime-dir` path exists (PR #102834)

2024-08-11 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/102834 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang] Ensure `--print-runtime-dir` path exists (PR #102834)

2024-08-11 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea created https://github.com/llvm/llvm-project/pull/102834 Before this PR, `clang --print-runtime-dir` used to report a non-existant directory if `LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF`. We now check if any of the known runtime directories exist before printing on std

[clang] [Clang][CodeGen] Fix bad codegen when building Clang with latest MSVC (PR #102681)

2024-08-10 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea closed https://github.com/llvm/llvm-project/pull/102681 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][CodeGen] Fix bad codegen when building Clang with latest MSVC (PR #102681)

2024-08-10 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea updated https://github.com/llvm/llvm-project/pull/102681 >From 16efda65bb3d30b67b3215d7e8d69a105e2d771c Mon Sep 17 00:00:00 2001 From: Alexandre Ganea Date: Fri, 9 Aug 2024 16:32:09 -0400 Subject: [PATCH 1/2] [Clang][CodeGen] Fix a bad codegen when building Clang with

[clang] [Clang][CodeGen] Fix bad codegen when building Clang with latest MSVC (PR #102681)

2024-08-10 Thread Alexandre Ganea via cfe-commits
aganea wrote: > Might be nice to clean this up in the future when Microsoft releases a fix. I can add a comment to that effect. https://github.com/llvm/llvm-project/pull/102681 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm

[clang] [clang][deps] Only bypass scanning VFS for the module cache (PR #88800)

2024-08-10 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea approved this pull request. This solves the performance issue I was seeing on Windows with a C++ clang database. Thanks again for doing this @jansvoboda11! https://github.com/llvm/llvm-project/pull/88800 ___ cfe-commits maili

[clang] [clang] Stop adjusting the module cache path (PR #102540)

2024-08-10 Thread Alexandre Ganea via cfe-commits
aganea wrote: > This enables more efficient implementation of the caching VFS in #88800. Thanks @jansvoboda11 for working on this, I appreciate. One question, what do you mean by "more efficient"? https://github.com/llvm/llvm-project/pull/102540 ___

[clang] [Clang][CodeGen] Fix bad codegen when building Clang with latest MSVC (PR #102681)

2024-08-09 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/102681 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][CodeGen] Fix bad codegen when building Clang with latest MSVC (PR #102681)

2024-08-09 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/102681 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][CodeGen] Fix bad codegen when building Clang with latest MSVC (PR #102681)

2024-08-09 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/102681 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][CodeGen] Fix bad codegen when building Clang with latest MSVC (PR #102681)

2024-08-09 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/102681 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][CodeGen] Fix bad codegen when building Clang with latest MSVC (PR #102681)

2024-08-09 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/102681 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][CodeGen] Fix bad codegen when building Clang with latest MSVC (PR #102681)

2024-08-09 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea created https://github.com/llvm/llvm-project/pull/102681 Before this PR, when using the latest MSVC `Microsoft (R) C/C++ Optimizing Compiler Version 19.40.33813 for x64` one of the Clang unit test used to fail: `CodeGenObjC/gnustep2-direct-method.m`, see full failure

[clang] [clang][deps] Only bypass scanning VFS for the module cache (PR #88800)

2024-07-29 Thread Alexandre Ganea via cfe-commits
aganea wrote: Ping @jansvoboda11! Just checking if you had time to finish this PR, to then possibly integrate it into 19.x. https://github.com/llvm/llvm-project/pull/88800 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/

[clang] [Clang][Driver] Expose `-fno-eliminate-unused-debug-types` to clang-cl (PR #95259)

2024-06-23 Thread Alexandre Ganea via cfe-commits
aganea wrote: > I will say, `-fno-eliminate-unused-debug-types` is a really heavy hammer that > makes debug info much larger - and my understanding was that games tended to > have trouble with large debug builds, so I'd be surprised if this was a great > path forward. Absolutely, this is only

[clang] [Clang][Driver] Expose `-fno-eliminate-unused-debug-types` to clang-cl (PR #95259)

2024-06-19 Thread Alexandre Ganea via cfe-commits
aganea wrote: > Yes, feel free to take over that part, thanks! @amykhuang : I took a look at https://reviews.llvm.org/D89286. It works but doesn't fix the most problematic case where the `constexpr` member needs an evaluation that relies on dependent values: ``` template struct C {

[clang] [Clang][Driver] Expose `-fno-eliminate-unused-debug-types` to clang-cl (PR #95259)

2024-06-15 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea closed https://github.com/llvm/llvm-project/pull/95259 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][Driver] Expose `-fno-eliminate-unused-debug-types` to clang-cl (PR #95259)

2024-06-15 Thread Alexandre Ganea via cfe-commits
aganea wrote: Thanks @amykhuang for taking a look! I won't close https://github.com/llvm/llvm-project/issues/46924 right away, since we also need https://reviews.llvm.org/D89286. Do you mind if I took ownership of that patch and send a PR crediting you? https://github.com/llvm/llvm-project/pu

[clang] [Clang][Driver] Expose `-fno-eliminate-unused-debug-types` to clang-cl (PR #95259)

2024-06-15 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/95259 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][Driver] Expose `-fno-eliminate-unused-debug-types` to clang-cl (PR #95259)

2024-06-12 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/95259 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][Driver] Expose `-fno-eliminate-unused-debug-types` to clang-cl (PR #95259)

2024-06-12 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea created https://github.com/llvm/llvm-project/pull/95259 This is used to set DebugInfoKind to "UnusedTypeInfo". This helps in the context Unreal Engine and NATVIS files that reference unused otherwise `static constexpr` class members. See https://udn.unrealengine.com/

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-05-24 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea closed https://github.com/llvm/llvm-project/pull/89950 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-05-24 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea updated https://github.com/llvm/llvm-project/pull/89950 >From 13c411018e491fc2be4f4118a56f9b8cf2e5b76f Mon Sep 17 00:00:00 2001 From: Alexandre Ganea Date: Wed, 17 Apr 2024 16:28:21 -0400 Subject: [PATCH 1/5] [clang-scan-deps] Expand response files before the argument

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-05-22 Thread Alexandre Ganea via cfe-commits
aganea wrote: @jansvoboda11 Do you see any further changes for this PR? Can I land it? https://github.com/llvm/llvm-project/pull/89950 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang][deps] Only bypass scanning VFS for the module cache (PR #88800)

2024-05-06 Thread Alexandre Ganea via cfe-commits
aganea wrote: Ping @jansvoboda11! Are you able to get back to this soon? LG generally, just missing a test case above. Thanks! https://github.com/llvm/llvm-project/pull/88800 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.o

[clang] [clang] Distinguish unresolved templates in UnresolvedLookupExpr (PR #89019)

2024-05-05 Thread Alexandre Ganea via cfe-commits
aganea wrote: Hello, This causes a warning when building LLDB on Windows, `clang::BuiltinType::UnresolvedTemplate` isn't handled in the case in the file indicated below (sorry my locale is French). Would you have a chance to take a look @zyn0217 please? ``` [6325/7521] Building CXX object too

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-04-29 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/89950 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-04-29 Thread Alexandre Ganea via cfe-commits
@@ -792,10 +792,15 @@ int clang_scan_deps_main(int argc, char **argv, const llvm::ToolContext &) { llvm::cl::PrintOptionValues(); + // Expand response files in advance, so that we can "see" all the arguments + // when adjusting below. + auto ResponseExpander = expandRes

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-04-29 Thread Alexandre Ganea via cfe-commits
@@ -0,0 +1,36 @@ +// Check that the scanner can adjust arguments by reading .rsp files in advance. + +// RUN: rm -rf %t +// RUN: split-file %s %t +// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json +// RUN: echo /Fo%t/tu.obj >> %t/args_nested.rsp aga

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-04-29 Thread Alexandre Ganea via cfe-commits
@@ -0,0 +1,36 @@ +// Check that the scanner can adjust arguments by reading .rsp files in advance. + +// RUN: rm -rf %t +// RUN: split-file %s %t +// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json aganea wrote: As suggested. We're taking a differen

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-04-29 Thread Alexandre Ganea via cfe-commits
@@ -1069,7 +1069,7 @@ void Clang::AddPreprocessingOptions(Compilation &C, const JobAction &JA, // If user provided -o, that is the dependency target, except // when we are only generating a dependency file. - Arg *OutputOpt = Args.getLastArg(options::OPT_o);

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-04-29 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea updated https://github.com/llvm/llvm-project/pull/89950 >From f2340c98c95e0d72516fc240ff268fead9f15391 Mon Sep 17 00:00:00 2001 From: Alexandre Ganea Date: Wed, 17 Apr 2024 16:28:21 -0400 Subject: [PATCH 1/5] [clang-scan-deps] Expand response files before the argument

[clang] [clang-scan-deps] Fix contention when updating `TrackingStatistic`s in hot code paths in `FileManager`. (PR #88427)

2024-04-26 Thread Alexandre Ganea via cfe-commits
aganea wrote: Thanks for pointing that out @MaskRay ! https://github.com/llvm/llvm-project/pull/88427 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang-scan-deps] Fix contention when updating `TrackingStatistic`s in hot code paths in `FileManager`. (PR #88427)

2024-04-25 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea closed https://github.com/llvm/llvm-project/pull/88427 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-04-24 Thread Alexandre Ganea via cfe-commits
aganea wrote: @jansvoboda11 PTAL. I've added handling of `/Fo` in the driver, and that solves my case without the .rsp expansion in `ClangScanDeps.cpp`. However if we pass `/E` to command-lines in the CDB, that change alone doesn't work anymore. This is because `Driver::GetNamedOutputPath()`

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-04-24 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea updated https://github.com/llvm/llvm-project/pull/89950 >From f2340c98c95e0d72516fc240ff268fead9f15391 Mon Sep 17 00:00:00 2001 From: Alexandre Ganea Date: Wed, 17 Apr 2024 16:28:21 -0400 Subject: [PATCH 1/3] [clang-scan-deps] Expand response files before the argument

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-04-24 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea updated https://github.com/llvm/llvm-project/pull/89950 >From f2340c98c95e0d72516fc240ff268fead9f15391 Mon Sep 17 00:00:00 2001 From: Alexandre Ganea Date: Wed, 17 Apr 2024 16:28:21 -0400 Subject: [PATCH 1/2] [clang-scan-deps] Expand response files before the argument

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-04-24 Thread Alexandre Ganea via cfe-commits
aganea wrote: The reason of this `/Fo` output path fiddling code is this: https://github.com/llvm/llvm-project/blob/main/clang/lib/Driver/ToolChains/Clang.cpp#L1072-L1082 It's because that highlighted code doesn't handle the clang-cl case, it doesn't consider `/Fo`. Probably because most people

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-04-24 Thread Alexandre Ganea via cfe-commits
aganea wrote: This is missing a test, I will add one. https://github.com/llvm/llvm-project/pull/89950 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang-scan-deps] Expand response files before the argument adjuster (PR #89950)

2024-04-24 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea created https://github.com/llvm/llvm-project/pull/89950 Previously, since response (.rsp) files weren't expanded at the very beginning of clang-scan-deps, we only parsed the command-line as provided in the Clang .cdb file. Unfortunately, when using Unreal Engine, argu

[clang] [clang-scan-deps] Fix contention when updating `TrackingStatistic`s in hot code paths in `FileManager`. (PR #88427)

2024-04-24 Thread Alexandre Ganea via cfe-commits
aganea wrote: > LGTM, thanks! Thanks for the review! > (Out of interest, what machine are you seeing the contention with?) It's a ThreadRipper Pro 3975WX 32c/64t running on with Windows 11. https://github.com/llvm/llvm-project/pull/88427 ___ cfe-com

[clang] [clang-scan-deps] Fix contention when updating `TrackingStatistic`s in hot code paths in `FileManager`. (PR #88427)

2024-04-24 Thread Alexandre Ganea via cfe-commits
@@ -1293,6 +1293,10 @@ compileModuleImpl(CompilerInstance &ImportingInstance, SourceLocation ImportLoc, diag::remark_module_build_done) << ModuleName; + // Propagate the statistics to the parent FileManager. + if (FrontendOpts

[clang] [clang-scan-deps] Fix contention when updating `TrackingStatistic`s in hot code paths in `FileManager`. (PR #88427)

2024-04-24 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea updated https://github.com/llvm/llvm-project/pull/88427 >From 1b11d526e2cde1df64c7c4e05b2698b6d40926c3 Mon Sep 17 00:00:00 2001 From: Alexandre Ganea Date: Thu, 11 Apr 2024 13:02:30 -0400 Subject: [PATCH 1/3] [clang-scan-deps] Fix atomic contention when updating `Trac

[clang] [clang-scan-deps] Fix contention when updating `TrackingStatistic`s in hot code paths in `FileManager`. (PR #88427)

2024-04-17 Thread Alexandre Ganea via cfe-commits
aganea wrote: > As an alternative approach: could we turn these into member variables, make > them non-atomic and take care to update the stats of the superior > `FileManager` whenever an inferior `FileManager` goes out of scope? (e.g. > after implicitly building a module) As suggested. http

[clang] [clang-scan-deps] Fix contention when updating `TrackingStatistic`s in hot code paths in `FileManager`. (PR #88427)

2024-04-17 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea updated https://github.com/llvm/llvm-project/pull/88427 >From 1b11d526e2cde1df64c7c4e05b2698b6d40926c3 Mon Sep 17 00:00:00 2001 From: Alexandre Ganea Date: Thu, 11 Apr 2024 13:02:30 -0400 Subject: [PATCH 1/2] [clang-scan-deps] Fix atomic contention when updating `Trac

[clang] [clang][deps] Only bypass scanning VFS for the module cache (PR #88800)

2024-04-16 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/88800 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang][deps] Only bypass scanning VFS for the module cache (PR #88800)

2024-04-16 Thread Alexandre Ganea via cfe-commits
@@ -201,11 +201,8 @@ const CachedRealPath &DependencyScanningFilesystemSharedCache::CacheShard:: return *StoredRealPath; } -static bool shouldCacheStatFailures(StringRef Filename) { - StringRef Ext = llvm::sys::path::extension(Filename); - if (Ext.empty()) -return fal

[clang] [clang][deps] Only bypass scanning VFS for the module cache (PR #88800)

2024-04-16 Thread Alexandre Ganea via cfe-commits
@@ -362,7 +357,7 @@ DependencyScanningWorkerFilesystem::openFileForRead(const Twine &Path) { SmallString<256> OwnedFilename; StringRef Filename = Path.toStringRef(OwnedFilename); - if (Filename.ends_with(".pcm")) + if (shouldBypass(Filename)) aganea wro

[clang] [clang][deps] Only bypass scanning VFS for the module cache (PR #88800)

2024-04-16 Thread Alexandre Ganea via cfe-commits
@@ -174,3 +174,30 @@ TEST(DependencyScanningFilesystem, CacheStatOnExists) { EXPECT_EQ(InstrumentingFS->NumStatusCalls, 2u); EXPECT_EQ(InstrumentingFS->NumExistsCalls, 0u); } + +TEST(DependencyScanningFilesystem, CacheStatFailures) { + auto InMemoryFS = llvm::makeIntrusive

[clang] [clang-scan-deps] Fix contention when updating `TrackingStatistic`s in hot code paths in `FileManager`. (PR #88427)

2024-04-13 Thread Alexandre Ganea via cfe-commits
aganea wrote: I think in the short term @jansvoboda11's suggestion should be good enough. Bit if we want `Statistics` to be always cheap, we should make them `thread_local` instead, not atomic. `getValue()` could do the "collection" of data over all active, or past threads. It would also need

[clang] [clang-scan-deps] Fix contention when updating `TrackingStatistic`s in hot code paths in `FileManager`. (PR #88427)

2024-04-11 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/88427 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang-scan-deps] Fix contention when updating `TrackingStatistic`s in hot code paths in `FileManager`. (PR #88427)

2024-04-11 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/88427 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang-scan-deps] Fix contention when updating `TrackingStatistic`s in hot code paths in `FileManager`. (PR #88427)

2024-04-11 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea created https://github.com/llvm/llvm-project/pull/88427 `FileManager::getDirectoryRef` and `FileManager::getFileRef` are hot code paths in `clang-scan-deps`. In these functions, we update a couple of atomic variables related to printing statistics, which causes conten

[clang] [llvm] [clang][deps] Overload `Filesystem::exists` in `DependencyScanningFilesystem` to have it use cached `status` (PR #88152)

2024-04-11 Thread Alexandre Ganea via cfe-commits
aganea wrote: > In the meantime, are you able to work around this for your non-modular > use-case by applying your change when building your own compiler downstream? Yes I fixed it in our downstream. I am more worried about other users, since the initial version that @hyp committed a while ago

[clang] [llvm] [clang][deps] Overload `Filesystem::exists` in `DependencyScanningFilesystem` to have it use cached `status` (PR #88152)

2024-04-11 Thread Alexandre Ganea via cfe-commits
aganea wrote: > > Not sure @jansvoboda11 perhaps if we want to cherry pick > > [b768a8c](https://github.com/llvm/llvm-project/commit/b768a8c1db85b9e84fd8b356570a3a8fbe37acf6) > > on `release/18.x`? Or should we land just a simple PR with just the > > function change above? > > I can try pulli

[clang] [llvm] [clang][deps] Overload `Filesystem::exists` in `DependencyScanningFilesystem` to have it use cached `status` (PR #88152)

2024-04-10 Thread Alexandre Ganea via cfe-commits
@@ -201,6 +201,21 @@ class ErrorDummyFileSystem : public DummyFileSystem { } }; +/// A version of \c DummyFileSystem that aborts on \c status() to test that +/// \c exists() is being used. +class NoStatusDummyFileSystem : public DummyFileSystem { +public: + ErrorOr status(c

[clang] [llvm] [clang][deps] Overload `Filesystem::exists` in `DependencyScanningFilesystem` to have it use cached `status` (PR #88152)

2024-04-10 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea approved this pull request. Otherwise this PR LGTM. https://github.com/llvm/llvm-project/pull/88152 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [clang][deps] Overload `Filesystem::exists` in `DependencyScanningFilesystem` to have it use cached `status` (PR #88152)

2024-04-10 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/88152 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [clang][deps] Overload `Filesystem::exists` in `DependencyScanningFilesystem` to have it use cached `status` (PR #88152)

2024-04-10 Thread Alexandre Ganea via cfe-commits
aganea wrote: > This patch doesn`t improve my usage, it seems I'm hitting a different > codepath than you do. I'll investigate. Ah I see, the commit https://github.com/llvm/llvm-project/commit/b768a8c1db85b9e84fd8b356570a3a8fbe37acf6 didn't make it in time for the 18.x branch. The issue I'm s

[clang] [llvm] [clang][deps] Overload `Filesystem::exists` in `DependencyScanningFilesystem` to have it use cached `status` (PR #88152)

2024-04-09 Thread Alexandre Ganea via cfe-commits
aganea wrote: This patch doesn`t improve my usage, it seems I'm hitting a different codepath than you do. I'll investigate. https://github.com/llvm/llvm-project/pull/88152 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/

[clang] [llvm] [clang][deps] Overload `Filesystem::exists` in `DependencyScanningFilesystem` to have it use cached `status` (PR #88152)

2024-04-09 Thread Alexandre Ganea via cfe-commits
@@ -270,6 +270,12 @@ DependencyScanningWorkerFilesystem::status(const Twine &Path) { return Result->getStatus(); } +bool +DependencyScanningWorkerFilesystem::exists(const Twine &Path) { + auto Status = status(Path); aganea wrote: The return type is unclea

[clang] [llvm] [clang][deps] Overload `Filesystem::exists` in `DependencyScanningFilesystem` to have it use cached `status` (PR #88152)

2024-04-09 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea commented: Thanks for the change! Quite interestingly I was just looking precisely at this issue today :smile: Things are worst on Windows, where mini-filter drivers kick-in and bring performance to its knees. I'll try your patch, see how that improves my usage! http

[clang] [llvm] [clang][deps] Overload `Filesystem::exists` in `DependencyScanningFilesystem` to have it use cached `status` (PR #88152)

2024-04-09 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea edited https://github.com/llvm/llvm-project/pull/88152 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [mlir] Rename `ThreadPool::getThreadCount()` to `getMaxConcurrency()` (NFC) (PR #82296)

2024-02-19 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea approved this pull request. Lg, thanks! https://github.com/llvm/llvm-project/pull/82296 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] ee15e2b - [clang] Silence warning when building with MSVC targetting x86

2024-01-25 Thread Alexandre Ganea via cfe-commits
Author: Alexandre Ganea Date: 2024-01-25T09:34:17-05:00 New Revision: ee15e2bd32a4677c40d927c732b26d33f88d7865 URL: https://github.com/llvm/llvm-project/commit/ee15e2bd32a4677c40d927c732b26d33f88d7865 DIFF: https://github.com/llvm/llvm-project/commit/ee15e2bd32a4677c40d927c732b26d33f88d7865.dif

[clang-tools-extra] f33f5a0 - [clangd] Silence warning when compiling with MSVC targetting x86

2024-01-25 Thread Alexandre Ganea via cfe-commits
Author: Alexandre Ganea Date: 2024-01-25T09:34:17-05:00 New Revision: f33f5a04e9feeb9b473694825d84da8322f87df9 URL: https://github.com/llvm/llvm-project/commit/f33f5a04e9feeb9b473694825d84da8322f87df9 DIFF: https://github.com/llvm/llvm-project/commit/f33f5a04e9feeb9b473694825d84da8322f87df9.dif

[clang] 419d6ea - [clang] Silence warning when compiling with MSVC targetting x86

2024-01-25 Thread Alexandre Ganea via cfe-commits
Author: Alexandre Ganea Date: 2024-01-25T09:34:17-05:00 New Revision: 419d6ea135dd205e1eaab368a58ae14f9f52f699 URL: https://github.com/llvm/llvm-project/commit/419d6ea135dd205e1eaab368a58ae14f9f52f699 DIFF: https://github.com/llvm/llvm-project/commit/419d6ea135dd205e1eaab368a58ae14f9f52f699.dif

[clang] [llvm] [clang][MBD] set up module build daemon infrastructure (PR #67562)

2024-01-24 Thread Alexandre Ganea via cfe-commits
aganea wrote: Can you please send separate PRs for the Support changes? https://github.com/llvm/llvm-project/pull/67562 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [lld] [llvm-driver] Fix usage of `InitLLVM` on Windows (PR #76306)

2024-01-11 Thread Alexandre Ganea via cfe-commits
https://github.com/aganea closed https://github.com/llvm/llvm-project/pull/76306 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

  1   2   >