Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

shrink LLVM #75

Merged
merged 3 commits into from
Oct 19, 2023
Merged

shrink LLVM #75

merged 3 commits into from
Oct 19, 2023

Conversation

rimrul
Copy link
Member

@rimrul rimrul commented Apr 23, 2023

The current ARM64 LLVM from Msys2 comes with files over 100 MB, GitHubs filesize limit without using LFS. We've slightly reduced the size using strip, but it's only a matter of time before we'll run into the same issue again.

We can build our own smaller Clang/LLVM to better suit how we manage the Git for Windows SDK.

@rimrul
Copy link
Member Author

rimrul commented Apr 23, 2023

Oh, I messed up and didn't add all the changes. That explains that.

@rimrul
Copy link
Member Author

rimrul commented Jul 1, 2023

What is going on with this patch? I get an sha256 of 614a86cb22d3785d8099760c00f3981908c9a97b65b280e7350ee5dd1a0967bd on all machines I can currently test this on. I used to get 1d33da596dcef12272389cb81277db205dd2153e2e52612d2d01ab3f0e7b3fb7 like upstream until yesterday, but not anymore. And apparently the hosted GitHub actions runners get either a third value or always the one that is not the one I last pushed.

rimrul added a commit to rimrul/git-for-windows-automation that referenced this pull request Jul 1, 2023
We want to build our own smaller Clang for ARM64, teach open-pr how to update it.
This update script uses the update-clang-from-msys2.sh script from
git-for-windows/MINGW-packages#75

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
rimrul added a commit to rimrul/git that referenced this pull request Jul 1, 2023
after merging git-for-windows/MINGW-packages#75
we'll want to be notified when Msys2 updates their mingw-w64-clang package.

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
@rimrul rimrul changed the title WIP: shrink LLVM shrink LLVM Jul 1, 2023
@rimrul rimrul marked this pull request as ready for review July 1, 2023 10:51
@rimrul
Copy link
Member Author

rimrul commented Jul 2, 2023

Good news and bad News.

The Good news: I have access to an ARM64 machine to build and test on now.

The bad news: This doesn't build on that ARM64 machine. cmake tries to build /clangarm64/share/cmake/Modules/CMakeCCompilerId.c with -march=nocona which clang doesn't like.

The ARM64 libLLVM-16.dll comes out at 47641k. I made the mistake of building using makepkg instead of makepkg-mingw. That works on AMD64, but not on ARM64.

Copy link
Member

@dscho dscho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work!

I'm somewhat curious about that changing SHA-256. My guess is that the file sometimes contains CR/LF and sometimes not?

I left a couple of suggestions for the update script. Please let me know if you find them useful.

test -n "$old_pkgrel" ||
die "$0: could not determine current pkgrel\n"

git clone --sparse --depth 1 https://github.com/msys2/MINGW-packages upstream
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about --filter=blob:none? That makes the clone really fast, at the expense of adding a second (implicit) fetch in the next git invocation.

mingw-w64-clang/update-clang-from-msys2.sh Outdated Show resolved Hide resolved
mingw-w64-clang/update-clang-from-msys2.sh Outdated Show resolved Hide resolved
Comment on lines 45 to 50
rm -f *.patch
mv upstream/$pkgname/*.patch ./
rm -f PKGBUILD
mv upstream/$pkgname/PKGBUILD ./
rm -f README-patches.md
mv upstream/$pkgname/README-patches.md ./
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These invocations probably need some &&-chained error checking.

mingw-w64-clang/update-clang-from-msys2.sh Outdated Show resolved Hide resolved
@rimrul
Copy link
Member Author

rimrul commented Jul 2, 2023

The toolchain from this does successfully build mingw-w64-git on ARM64. I'm currently running the test suite. t0001.38 and t0001.39 seem to be failing, but I'm unsure if that's related.

@dscho
Copy link
Member

dscho commented Jul 3, 2023

I'm currently running the test suite. t0001.38 and t0001.39 seem to be failing, but I'm unsure if that's related.

What does the output of sh t0001-*.sh -ivx look like?

@rimrul

This comment was marked as resolved.

@dscho
Copy link
Member

dscho commented Jul 4, 2023

fatal: cannot stat 'C:/git-sdk-arm64/usr/src/MINGW-packages/mingw-w64-git/src/git/t/trash directory.t0001-init/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/newdir/.git/hooks/fsmonitor-watchman.sample': Filename too long

Seems that our construction of a long path is incorrect... I guess that the three letters arm are the difference between letting the test succeed and making it fail.

@rimrul
Copy link
Member Author

rimrul commented Jul 4, 2023

Seems that our construction of a long path is incorrect... I guess that the three letters arm are the difference between letting the test succeed and making it fail.

They do make the difference

Copy link

@dennisameling dennisameling left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you so much for all your work on this! 🚀 I won't have my arm64 device at hand until Tuesday or Wednesday, but happy to test later if that helps.

Copy link

@dennisameling dennisameling left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just built this using makepkg-mingw. The total build took ~2 hours on my 8-core Surface Pro X (ARM64). Note that ~1,5 hours was the actual time it took to build using clang, which used 100% of the CPU. All the rest is a bunch of processing in bash and other tools that are x64 emulated and thus are rather slow on ARM64.

The ARM64 libLLVM-16.dll comes out at 47641k.

I can confirm that I'm also seeing 47641k on my machine after the build. Awesome!

Thank you so much for your work on this! I guess we somehow need to make sure that git-for-windows-automation will keep this up to date. Is there any package list or reference which lists the MINGW-packages that Git for Windows is supposed to build itself? Or is it just a matter of kicking off a build-and-deploy pipeline after this PR has been merged, which would then upload the packages to GfW's own Pacman repos?

@rimrul
Copy link
Member Author

rimrul commented Jul 13, 2023

Thank you so much for your work on this! I guess we somehow need to make sure that git-for-windows-automation will keep this up to date.

Is there any package list or reference which lists the MINGW-packages that Git for Windows is supposed to build itself?

The closest thing to such a list is the
monitor-components workflow definition.

git-for-windows/git#4487 adds clang to that "list".

Or is it just a matter of kicking off a build-and-deploy pipeline after this PR has been merged, which would then upload the packages to GfW's own Pacman repos?

Exactly.

Copy link
Member

@dscho dscho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rimrul very good, let's roll with this!

@rimrul
Copy link
Member Author

rimrul commented Aug 7, 2023

I'm somewhat curious about that changing SHA-256. My guess is that the file sometimes contains CR/LF and sometimes not?

msys2@7bb9b29

Looks like core.abbrev was the cause.

@dscho
Copy link
Member

dscho commented Aug 7, 2023

Looks like core.abbrev was the cause.

Ah, that makes sense!

@rimrul
Copy link
Member Author

rimrul commented Oct 11, 2023

Updated to latest Msys2 mingw-w64-clang.

range-diff:

1:  c77a0ffc ! 1:  f1a1c5df clang: sync with upstream
    @@ Metadata
      ## Commit message ##
         clang: sync with upstream
     
    -    update clang to 16.05-1 from Msys2 in preparation for building our own
    +    update clang to 17.0.1-1 from Msys2 in preparation for building our own
         smaller clang for ARM64.
     
         Signed-off-by: Matthias Aßhauer <mha1993@live.de>
    @@ -234,7 +234,7 @@ void MCWinCOFFStreamer::EmitCommonSymbol(MCSymbol *S, uint64_t
     -2.13.3
     -
     
    - ## mingw-w64-clang/0002-Revert-CMake-try-creating-symlink-first-on-windows.patch (new) ##
    -@@
    -+--- a/cmake/modules/LLVMInstallSymlink.cmake
    -++++ b/cmake/modules/LLVMInstallSymlink.cmake
    -+@@ -6,6 +6,12 @@
    -+ 
    -+ function(install_symlink name target outdir)
    -+   set(DESTDIR $ENV{DESTDIR})
    -++  if(CMAKE_HOST_UNIX)
    -++    set(LINK_OR_COPY create_symlink)
    -++  else()
    -++    set(LINK_OR_COPY copy)
    -++  endif()
    -++
    -+   if(NOT IS_ABSOLUTE "${outdir}")
    -+     set(outdir "${CMAKE_INSTALL_PREFIX}/${outdir}")
    -+   endif()
    -+@@ -14,12 +20,7 @@
    -+   message(STATUS "Creating ${name}")
    -+ 
    -+   execute_process(
    -+-    COMMAND "${CMAKE_COMMAND}" -E create_symlink "${target}" "${name}"
    -+-    WORKING_DIRECTORY "${outdir}" ERROR_VARIABLE has_err)
    -+-  if(CMAKE_HOST_WIN32 AND has_err)
    -+-    execute_process(
    -+-      COMMAND "${CMAKE_COMMAND}" -E copy "${target}" "${name}"
    -+-      WORKING_DIRECTORY "${outdir}")
    -+-  endif()
    -++    COMMAND "${CMAKE_COMMAND}" -E ${LINK_OR_COPY} "${target}" "${name}"
    -++    WORKING_DIRECTORY "${outdir}")
    -+ 
    -+ endfunction()
    -
      ## mingw-w64-clang/0003-Globally-provide-DESTDIR-for-all-platforms.patch (deleted) ##
     @@
     -From f4cea343d6e61f388de78241e89b1032ff11b0c7 Mon Sep 17 00:00:00 2001
    @@ mingw-w64-clang/0004-enable-emutls-for-mingw.patch (new)
     @@
     +--- a/include/llvm/TargetParser/Triple.h
     ++++ b/include/llvm/TargetParser/Triple.h
    -+@@ -952,7 +952,7 @@
    -+ 
    -+   /// Tests whether the target uses emulated TLS as default.
    ++@@ -993,7 +993,7 @@
    ++   /// Note: Android API level 29 (10) introduced ELF TLS.
     +   bool hasDefaultEmulatedTLS() const {
    -+-    return isAndroid() || isOSOpenBSD() || isWindowsCygwinEnvironment();
    -++    return isAndroid() || isOSOpenBSD() || isOSCygMing();
    ++     return (isAndroid() && isAndroidVersionLT(29)) || isOSOpenBSD() ||
    ++-           isWindowsCygwinEnvironment() || isOHOSFamily();
    +++           isOSCygMing() || isOHOSFamily();
     +   }
     + 
     +   /// Tests whether the target uses -data-sections as default.
    @@ -391,8 +391,10 @@ int main(int argc, char **argv) {
     -2.13.3
     -
     
    - ## mingw-w64-clang/0005-Fix-Any-linker-error-with-multiple-compilers.patch (new) ##
    -@@
    -+--- a/include/llvm/ADT/Any.h
    -++++ b/include/llvm/ADT/Any.h
    -+@@ -124,7 +124,7 @@
    -+   std::unique_ptr<StorageBase> Storage;
    -+ };
    -+ 
    -+-template <typename T> char Any::TypeId<T>::Id = 0;
    -++template <typename T> char Any::TypeId<T>::Id = 1;
    -+ 
    -+ template <typename T>
    -+ LLVM_DEPRECATED("Use any_cast(Any*) != nullptr instead", "any_cast")
    -
    - ## mingw-w64-clang/0006-COFF-Remove-misleading-and-unclear-comments.-NFC.patch (new) ##
    -@@
    -+From 9080f619461f3d68c8126dcde7c6f95dbae75347 Mon Sep 17 00:00:00 2001
    -+From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
    -+Date: Wed, 7 Jun 2023 13:55:21 +0300
    -+Subject: [PATCH] [COFF] Remove misleading and unclear comments. NFC.
    -+
    -+It is not planned that GNU binutils would change this aspect of
    -+its behaviour wrt how symbol decoration is done.
    -+
    -+Differential Revision: https://reviews.llvm.org/D152359
    -+---
    -+ include/llvm/Object/COFFModuleDefinition.h | 3 ---
    -+ 1 file changed, 3 deletions(-)
    -+
    -+diff --git a/include/llvm/Object/COFFModuleDefinition.h b/include/llvm/Object/COFFModuleDefinition.h
    -+index 8e14dd614..c9d8f4289 100644
    -+--- a/include/llvm/Object/COFFModuleDefinition.h
    -++++ b/include/llvm/Object/COFFModuleDefinition.h
    -+@@ -39,9 +39,6 @@ struct COFFModuleDefinition {
    -+   uint32_t MinorOSVersion = 0;
    -+ };
    -+ 
    -+-// mingw and wine def files do not mangle _ for x86 which
    -+-// is a consequence of legacy binutils' dlltool functionality.
    -+-// This MingwDef flag should be removed once mingw stops this pratice.
    -+ Expected<COFFModuleDefinition>
    -+ parseCOFFModuleDefinition(MemoryBufferRef MB, COFF::MachineTypes Machine,
    -+                           bool MingwDef = false);
    -+-- 
    -+2.41.0.windows.1
    -+
    -
      ## mingw-w64-clang/0006-fix-bugpoint-multiple-definition.patch (deleted) ##
     @@
     ---- llvm-5.0.0.src/tools/bugpoint/CMakeLists.txt.orig	2017-09-08 22:16:39.035644100 +0200
    @@ -38,6 +38,4 @@
     --  target_link_libraries(bugpoint LLVMTarget)
     - endif(WITH_POLLY AND LINK_POLLY_INTO_TOOLS)
     
    - ## mingw-w64-clang/0007-llvm-dlltool-Clarify-parameters-simplify-ArgList-usa.patch (new) ##
    -@@
    -+From 8deeaef0291f3d63900eb3c61dc46625fb24aafb Mon Sep 17 00:00:00 2001
    -+From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
    -+Date: Wed, 7 Jun 2023 14:13:55 +0300
    -+Subject: [PATCH] [llvm-dlltool] Clarify parameters, simplify ArgList usage.
    -+ NFC.
    -+
    -+Add comments about unclear bool arguments to functions, switch to
    -+hasArg instead of getLastArg for cases where we don't need to check
    -+the argument's value.
    -+
    -+Differential Revision: https://reviews.llvm.org/D152360
    -+---
    -+ lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp | 8 ++++----
    -+ 1 file changed, 4 insertions(+), 4 deletions(-)
    -+
    -+diff --git a/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp b/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
    -+index fcda61dd1..a5dcf6c1c 100644
    -+--- a/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
    -++++ b/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
    -+@@ -166,7 +166,7 @@ int llvm::dlltoolDriverMain(llvm::ArrayRef<const char *> ArgsArr) {
    -+   }
    -+ 
    -+   Expected<COFFModuleDefinition> Def =
    -+-      parseCOFFModuleDefinition(*MB, Machine, true);
    -++      parseCOFFModuleDefinition(*MB, Machine, /*MingwDef=*/true);
    -+ 
    -+   if (!Def) {
    -+     llvm::errs() << "error parsing definition\n"
    -+@@ -197,7 +197,7 @@ int llvm::dlltoolDriverMain(llvm::ArrayRef<const char *> ArgsArr) {
    -+     }
    -+   }
    -+ 
    -+-  if (Machine == IMAGE_FILE_MACHINE_I386 && Args.getLastArg(OPT_k)) {
    -++  if (Machine == IMAGE_FILE_MACHINE_I386 && Args.hasArg(OPT_k)) {
    -+     for (COFFShortExport& E : Def->Exports) {
    -+       if (!E.AliasTarget.empty() || (!E.Name.empty() && E.Name[0] == '?'))
    -+         continue;
    -+@@ -214,8 +214,8 @@ int llvm::dlltoolDriverMain(llvm::ArrayRef<const char *> ArgsArr) {
    -+     }
    -+   }
    -+ 
    -+-  if (!Path.empty() &&
    -+-      writeImportLibrary(Def->OutputFile, Path, Def->Exports, Machine, true))
    -++  if (!Path.empty() && writeImportLibrary(Def->OutputFile, Path, Def->Exports,
    -++                                          Machine, /*MinGW=*/true))
    -+     return 1;
    -+   return 0;
    -+ }
    -+-- 
    -+2.41.0.windows.1
    -+
    -
    - ## mingw-w64-clang/0008-llvm-dlltool-Ignore-the-temp-prefix-option.patch (new) ##
    -@@
    -+From 6540157fe389b3dc46e9a1306370acd79d40c183 Mon Sep 17 00:00:00 2001
    -+From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
    -+Date: Wed, 7 Jun 2023 13:41:15 +0300
    -+Subject: [PATCH] [llvm-dlltool] Ignore the --temp-prefix option
    -+
    -+llvm-dlltool tolerates unknown options as long as they are plain
    -+flags, but if given the parameter value as a separate argument,
    -+e.g. "--temp-prefix foo", it fails to ignore it.
    -+
    -+Differential Revision: https://reviews.llvm.org/D152361
    -+---
    -+ lib/ToolDrivers/llvm-dlltool/Options.td  | 3 +++
    -+ test/tools/llvm-dlltool/ignored-opts.def | 8 ++++++++
    -+ 2 files changed, 11 insertions(+)
    -+ create mode 100644 llvm/test/tools/llvm-dlltool/ignored-opts.def
    -+
    -+diff --git a/lib/ToolDrivers/llvm-dlltool/Options.td b/lib/ToolDrivers/llvm-dlltool/Options.td
    -+index e78182ab8..6da5dc8f5 100644
    -+--- a/lib/ToolDrivers/llvm-dlltool/Options.td
    -++++ b/lib/ToolDrivers/llvm-dlltool/Options.td
    -+@@ -24,3 +24,6 @@ def S_alias: JoinedOrSeparate<["--"], "as">, Alias<S>;
    -+ 
    -+ def f: JoinedOrSeparate<["-"], "f">, HelpText<"Assembler Flags">;
    -+ def f_alias: JoinedOrSeparate<["--"], "as-flags">, Alias<f>;
    -++
    -++def t: JoinedOrSeparate<["-"], "t">, HelpText<"Prefix for temporary files (ignored)">;
    -++def t_alias: JoinedOrSeparate<["--"], "temp-prefix">, Alias<t>;
    -+diff --git a/test/tools/llvm-dlltool/ignored-opts.def b/test/tools/llvm-dlltool/ignored-opts.def
    -+new file mode 100644
    -+index 000000000..6cc05e376
    -+--- /dev/null
    -++++ b/test/tools/llvm-dlltool/ignored-opts.def
    -+@@ -0,0 +1,8 @@
    -++; RUN: llvm-dlltool -m i386 -d %s -l %t.a --temp-prefix foo
    -++; RUN: llvm-dlltool -m i386 -d %s -l %t.a --temp-prefix=foo
    -++; RUN: llvm-dlltool -m i386 -d %s -l %t.a -t foo
    -++; RUN: llvm-dlltool -m i386 -d %s -l %t.a -tfoo
    -++
    -++LIBRARY test.dll
    -++EXPORTS
    -++TestFunction
    -+-- 
    -+2.41.0.windows.1
    -+
    -
    - ## mingw-w64-clang/0009-llvm-dlltool-Implement-the-no-leading-underscore-opt.patch (new) ##
    -@@
    -+From fb19fa2f3dfdd60d42c12ef28467d6f8f5149d6a Mon Sep 17 00:00:00 2001
    -+From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
    -+Date: Wed, 7 Jun 2023 14:11:30 +0300
    -+Subject: [PATCH] [llvm-dlltool] Implement the --no-leading-underscore option
    -+
    -+This requires being able to opt out from adding the leading underscores
    -+in COFFModuleDefinition. Normally it is added automatically for I386
    -+type targets. We could either move the decision entirely to all
    -+callers, letting the caller check the machine type and decide whether
    -+underscores should be added, or keep the logic mostly as is, but allowing
    -+opting out from the behaviour on I386.
    -+
    -+I went with keeping the interface as is for now.
    -+
    -+Differential Revision: https://reviews.llvm.org/D152363
    -+---
    -+ include/llvm/Object/COFFModuleDefinition.h    |  2 +-
    -+ lib/Object/COFFModuleDefinition.cpp           | 17 +++++++++++------
    -+ .../llvm-dlltool/DlltoolDriver.cpp            |  5 +++--
    -+ lib/ToolDrivers/llvm-dlltool/Options.td       |  3 +++
    -+ .../llvm-dlltool/no-leading-underscore.def    | 19 +++++++++++++++++++
    -+ 5 files changed, 37 insertions(+), 9 deletions(-)
    -+ create mode 100644 llvm/test/tools/llvm-dlltool/no-leading-underscore.def
    -+
    -+diff --git a/include/llvm/Object/COFFModuleDefinition.h b/include/llvm/Object/COFFModuleDefinition.h
    -+index c9d8f4289..a4ed9978d 100644
    -+--- a/include/llvm/Object/COFFModuleDefinition.h
    -++++ b/include/llvm/Object/COFFModuleDefinition.h
    -+@@ -41,7 +41,7 @@ struct COFFModuleDefinition {
    -+ 
    -+ Expected<COFFModuleDefinition>
    -+ parseCOFFModuleDefinition(MemoryBufferRef MB, COFF::MachineTypes Machine,
    -+-                          bool MingwDef = false);
    -++                          bool MingwDef = false, bool AddUnderscores = true);
    -+ 
    -+ } // End namespace object.
    -+ } // End namespace llvm.
    -+diff --git a/lib/Object/COFFModuleDefinition.cpp b/lib/Object/COFFModuleDefinition.cpp
    -+index 0666970d5..a33949733 100644
    -+--- a/lib/Object/COFFModuleDefinition.cpp
    -++++ b/lib/Object/COFFModuleDefinition.cpp
    -+@@ -138,8 +138,11 @@ private:
    -+ 
    -+ class Parser {
    -+ public:
    -+-  explicit Parser(StringRef S, MachineTypes M, bool B)
    -+-      : Lex(S), Machine(M), MingwDef(B) {}
    -++  explicit Parser(StringRef S, MachineTypes M, bool B, bool AU)
    -++      : Lex(S), Machine(M), MingwDef(B), AddUnderscores(AU) {
    -++    if (Machine != IMAGE_FILE_MACHINE_I386)
    -++      AddUnderscores = false;
    -++  }
    -+ 
    -+   Expected<COFFModuleDefinition> parse() {
    -+     do {
    -+@@ -234,7 +237,7 @@ private:
    -+       unget();
    -+     }
    -+ 
    -+-    if (Machine == IMAGE_FILE_MACHINE_I386) {
    -++    if (AddUnderscores) {
    -+       if (!isDecorated(E.Name, MingwDef))
    -+         E.Name = (std::string("_").append(E.Name));
    -+       if (!E.ExtName.empty() && !isDecorated(E.ExtName, MingwDef))
    -+@@ -279,7 +282,7 @@ private:
    -+       if (Tok.K == EqualEqual) {
    -+         read();
    -+         E.AliasTarget = std::string(Tok.Value);
    -+-        if (Machine == IMAGE_FILE_MACHINE_I386 && !isDecorated(E.AliasTarget, MingwDef))
    -++        if (AddUnderscores && !isDecorated(E.AliasTarget, MingwDef))
    -+           E.AliasTarget = std::string("_").append(E.AliasTarget);
    -+         continue;
    -+       }
    -+@@ -349,12 +352,14 @@ private:
    -+   MachineTypes Machine;
    -+   COFFModuleDefinition Info;
    -+   bool MingwDef;
    -++  bool AddUnderscores;
    -+ };
    -+ 
    -+ Expected<COFFModuleDefinition> parseCOFFModuleDefinition(MemoryBufferRef MB,
    -+                                                          MachineTypes Machine,
    -+-                                                         bool MingwDef) {
    -+-  return Parser(MB.getBuffer(), Machine, MingwDef).parse();
    -++                                                         bool MingwDef,
    -++                                                         bool AddUnderscores) {
    -++  return Parser(MB.getBuffer(), Machine, MingwDef, AddUnderscores).parse();
    -+ }
    -+ 
    -+ } // namespace object
    -+diff --git a/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp b/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
    -+index a5dcf6c1c..39bb8dd8e 100644
    -+--- a/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
    -++++ b/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
    -+@@ -165,8 +165,9 @@ int llvm::dlltoolDriverMain(llvm::ArrayRef<const char *> ArgsArr) {
    -+     return 1;
    -+   }
    -+ 
    -+-  Expected<COFFModuleDefinition> Def =
    -+-      parseCOFFModuleDefinition(*MB, Machine, /*MingwDef=*/true);
    -++  bool AddUnderscores = !Args.hasArg(OPT_no_leading_underscore);
    -++  Expected<COFFModuleDefinition> Def = parseCOFFModuleDefinition(
    -++      *MB, Machine, /*MingwDef=*/true, AddUnderscores);
    -+ 
    -+   if (!Def) {
    -+     llvm::errs() << "error parsing definition\n"
    -+diff --git a/lib/ToolDrivers/llvm-dlltool/Options.td b/lib/ToolDrivers/llvm-dlltool/Options.td
    -+index 6da5dc8f5..fee408fd0 100644
    -+--- a/lib/ToolDrivers/llvm-dlltool/Options.td
    -++++ b/lib/ToolDrivers/llvm-dlltool/Options.td
    -+@@ -15,6 +15,9 @@ def d_long : JoinedOrSeparate<["--"], "input-def">, Alias<d>;
    -+ def k: Flag<["-"], "k">, HelpText<"Kill @n Symbol from export">;
    -+ def k_alias: Flag<["--"], "kill-at">, Alias<k>;
    -+ 
    -++def no_leading_underscore: Flag<["--"], "no-leading-underscore">,
    -++    HelpText<"Don't add leading underscores on symbols">;
    -++
    -+ //==============================================================================
    -+ // The flags below do nothing. They are defined only for dlltool compatibility.
    -+ //==============================================================================
    -+diff --git a/test/tools/llvm-dlltool/no-leading-underscore.def b/test/tools/llvm-dlltool/no-leading-underscore.def
    -+new file mode 100644
    -+index 000000000..6b78e15d2
    -+--- /dev/null
    -++++ b/test/tools/llvm-dlltool/no-leading-underscore.def
    -+@@ -0,0 +1,19 @@
    -++; RUN: llvm-dlltool -k -m i386 --input-def %s --output-lib %t.a --no-leading-underscore --kill-at
    -++; RUN: llvm-readobj %t.a | FileCheck %s
    -++; RUN: llvm-nm %t.a | FileCheck %s -check-prefix=CHECK-NM
    -++
    -++LIBRARY test.dll
    -++EXPORTS
    -++func
    -++alias == func
    -++DecoratedFunction@4
    -++
    -++; CHECK:      Name type: name
    -++; CHECK-NEXT: Symbol: __imp_func
    -++; CHECK-NEXT: Symbol: func
    -++; CHECK:      Name type: undecorate
    -++; CHECK-NEXT: Symbol: __imp_DecoratedFunction@4
    -++; CHECK-NEXT: Symbol: DecoratedFunction@4
    -++
    -++; CHECK-NM: W alias
    -++; CHECK-NM: U func
    -+-- 
    -+2.41.0.windows.1
    -+
    -
      ## mingw-w64-clang/0101-Allow-build-static-clang-library-for-mingw.patch (deleted) ##
     @@
     -From ded1b370c6ccbb427406edc6ab39656144d61818 Mon Sep 17 00:00:00 2001
    @@ mingw-w64-clang/0101-link-pthread-with-mingw.patch: index 632b76d92b..23da2d6376
     
      ## mingw-w64-clang/0102-Rename-flang-new-flang-experimental-exec-to-flang.patch (new) ##
     @@
    -+Index: clang/include/clang/Driver/Options.td
    -+===================================================================
    -+--- clang/include/clang/Driver/Options.td
    -++++ clang/include/clang/Driver/Options.td
    -+@@ -5076,9 +5076,6 @@
    -+ // FLangOption + NoXarchOption
    -+ //===----------------------------------------------------------------------===//
    -+ 
    -+-def flang_experimental_exec : Flag<["-"], "flang-experimental-exec">,
    -+-  Flags<[FlangOption, FlangOnlyOption, NoXarchOption, HelpHidden]>,
    -+-  HelpText<"Enable support for generating executables (experimental)">;
    -+ 
    -+ def flang_experimental_hlfir : Flag<["-"], "flang-experimental-hlfir">,
    -+   Flags<[FlangOption, FC1Option, FlangOnlyOption, NoXarchOption, HelpHidden]>,
     +Index: clang/lib/Driver/Driver.cpp
     +===================================================================
     +--- clang/lib/Driver/Driver.cpp
    @@ -1936,7 +1936,7 @@
     +   } else {
     +     // FIXME: The following handlers should use a callback mechanism, we don't
     +     // know what the client would like to do.
    -+Index: clang/lib/Driver/ToolChains/CommonArgs.cpp
    -+===================================================================
    -+--- clang/lib/Driver/ToolChains/CommonArgs.cpp
    -++++ clang/lib/Driver/ToolChains/CommonArgs.cpp
    -+@@ -886,12 +886,6 @@
    -+ void tools::addFortranRuntimeLibraryPath(const ToolChain &TC,
    -+                                          const llvm::opt::ArgList &Args,
    -+                                          ArgStringList &CmdArgs) {
    -+-  // NOTE: Generating executables by Flang is considered an "experimental"
    -+-  // feature and hence this is guarded with a command line option.
    -+-  // TODO: Make this work unconditionally once Flang is mature enough.
    -+-  if (!Args.hasArg(options::OPT_flang_experimental_exec))
    -+-    return;
    -+-
    -+   // Default to the <driver-path>/../lib directory. This works fine on the
    -+   // platforms that we have tested so far. We will probably have to re-fine
    -+   // this in the future. In particular, on some platforms, we may need to use
     +Index: clang/lib/Driver/ToolChains/Flang.cpp
     +===================================================================
     +--- clang/lib/Driver/ToolChains/Flang.cpp
    @@ mingw-w64-clang/PKGBUILD
     -pkgver=5.0.1
     -pkgrel=3
     +         "${MINGW_PACKAGE_PREFIX}-llvm-libs")
    -+_version=16.0.5
    -+_rc=""
    ++_version=17.0.1
    ++_rc=
     +_tag=llvmorg-${_version}${_rc}
     +pkgver=${_version}${_rc/-/}
     +pkgrel=1
    @@ mingw-w64-clang/PKGBUILD
     -             $([[ "$_compiler" == "clang" ]] && echo \
     -               "${MINGW_PACKAGE_PREFIX}-clang")
                   "${MINGW_PACKAGE_PREFIX}-libffi"
    -+             "${MINGW_PACKAGE_PREFIX}-ninja"
    -              "${MINGW_PACKAGE_PREFIX}-pkg-config"
    +-             "${MINGW_PACKAGE_PREFIX}-pkg-config"
     -             "${MINGW_PACKAGE_PREFIX}-python3-sphinx"
     -             "${MINGW_PACKAGE_PREFIX}-python2"
     -             "tar"
    @@ mingw-w64-clang/PKGBUILD
     -        "0502-hack-to-use-64-bit-time-for-mingw.patch"
     -        "0601-libunwind-add-support-for-mingw-w64.patch"
     -        "0801-Don-t-build-LLVMPolly-on-WIN32.patch")
    ++             "${MINGW_PACKAGE_PREFIX}-ninja"
    ++             "${MINGW_PACKAGE_PREFIX}-pkgconf"
     +             "${MINGW_PACKAGE_PREFIX}-python-sphinx"
     +             "${MINGW_PACKAGE_PREFIX}-python"
     +             "${MINGW_PACKAGE_PREFIX}-libunwind"
    @@ mingw-w64-clang/PKGBUILD
     +        "${_url}/cmake-${pkgver}.src.tar.xz"{,.sig}
     +        "${_url}/third-party-${pkgver}.src.tar.xz"{,.sig}
     +        "0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch"
    -+        "0002-Revert-CMake-try-creating-symlink-first-on-windows.patch"
     +        "0003-add-pthread-as-system-lib-for-mingw.patch"
     +        "0004-enable-emutls-for-mingw.patch"
    -+        "0005-Fix-Any-linker-error-with-multiple-compilers.patch"
    -+        "0006-COFF-Remove-misleading-and-unclear-comments.-NFC.patch"
    -+        "0007-llvm-dlltool-Clarify-parameters-simplify-ArgList-usa.patch"
    -+        "0008-llvm-dlltool-Ignore-the-temp-prefix-option.patch"
    -+        "0009-llvm-dlltool-Implement-the-no-leading-underscore-opt.patch"
     +        "0101-link-pthread-with-mingw.patch"
     +        "0102-Rename-flang-new-flang-experimental-exec-to-flang.patch"
    -+        "0303-ignore-new-bfd-options.patch"
    -+        "https://github.com/llvm/llvm-project/commit/ab8d4f5a122fde5740f8c084c8165f51a26c93c7.patch")
    ++        "0303-ignore-new-bfd-options.patch")
      # Some patch notes :)
      #0001-0099 -> llvm
      #0101-0199 -> clang
    @@ mingw-w64-clang/PKGBUILD
     -            'SKIP'
     -            'fa8f99dd2bde109daa3276d529851a3bce5718d46ce1c5d0806f46caa3e57c00'
     +#0401-0499 -> clang-tools-extra
    -+sha256sums=('701b764a182d8ea8fb017b6b5f7f5f1272a29f17c339b838f48de894ffdd4f91'
    ++sha256sums=('6acbd59b0a5156b61e82157915ee962a56e13d97aa5fcaa959b68809290893d1'
                  'SKIP'
     -            '5a25152cb7f21e3c223ad36a1022faeb8a5ac27c9e75936a5ae2d3ac48f6e854'
    -+            'f4bb3456c415f01e929d96983b851c49d02b595bf4f99edbbfc55626437775a7'
    ++            'af5dd15ff53dd6b483e64cac2f0a15fbbb7b80a672ed768f7ca30c781978ef39'
                  'SKIP'
     -            '9aada1f9d673226846c3399d13fab6bba4bfd38bcfe8def5ee7b0ec24f8cd225'
    -+            '63323e37dac6f7425c6defb1d7f06b830b024223c4a4106df3bbb16602b20f2f'
    ++            '401caf1e8873f6bad3c4456e3052bded0f0f6b9701095c7cb926d52dd73682fa'
                  'SKIP'
     -            'd5b36c0005824f07ab093616bdff247f3da817cae2c51371e1d1473af717d895'
    -+            '2a5c212e7eb2de78b8c54d1f3d474bfc6330447c3a40944899f3607d0cc91995'
    ++            '438a7608c729defb45743219f23f6da35586f1293ee48a14b6deea2cc6744e4a'
                  'SKIP'
     -            'b7c1c9e67975ca219089a3a6a9c77c2d102cead2dc38264f2524aa3326da376a'
    -+            '0c593d1c23f626dc33caa8bf112868f77126e018b58dd1641f5ae6aa1c2a0ce3'
    ++            '7652d5c368f3f7d7894aa3c20d5aa278759fc704d0c2bfd8d40f62f52c72ffbf'
                  'SKIP'
     -            '6bbfbf6679435b858bd74bdf080386d084a76dfbf233fb6e47b2c28e0872d0fe'
    -+            '9400d49acd53a4b8f310de60554a891436db5a19f6f227f99f0de13e4afaaaff'
    ++            '46e745d9bdcd2e18719a47b080e65fd476e1f6c4bbaa5947e4dee057458b78bc'
                  'SKIP'
     -            '9dd52b17c07054aa8998fc6667d41ae921430ef63fa20ae130037136fdacf36e'
    -+            '0a4bbb8505e95570e529d6b3d5176e93beb3260f061de9001e320d57b59aed59'
    ++            'ea7cc0781c3dba556bf7596f8283e62561fee3648880e27e1af7e0db4d34d918'
                  'SKIP'
     -            'd5b11097084f8a03dd3002c2adb27b4fec99cf290404049f1a4e1185274bde67'
     -            '5081a1a9d8074b275f3087d4d80a13ce5d1c20bc1962819953790e54275930c8'
    @@ mingw-w64-clang/PKGBUILD
     -            '79d811b916b2ff718fd3b68b4211dd7548a7b51badc510d9e83eeac4229338a3'
     -            'bc394e597f8939b6f6630bd88c990f951738aaadacded2f3be71c658e9608fe7')
     +            'eb03df53671df6627768141b3aaa76abe176a14e5e47911c97bec544387c4aff'
    -+            '5754c357cfc17769e80d95b673d41b1e54616e2487e037d761a1ac8bb28a2849'
     +            '7f0c64cd87b61e894be632f180ae5291e1aa9f1d9d382608f659067eeeda7146'
    -+            'ef2ae12a4d6ac7a52d38bb305818b26c830ae42d14468e4b1913157d998b2137'
    -+            '294756995c1d528f9b5d4b64559edfee151ce0a06bd863a2cafce58a82ce53fd'
    -+            'b81c6ae4eaa5fba28b5827cf11bc12bd52bddc19018c23d4b193346291e01b73'
    -+            'de20db3d23020a6e734d87e168c1661a904a88aa32f68d5ef17984753e8eacc8'
    -+            'd0a1d4309bbe999e2af0ee37361714cb94bb6123145a6cacc2c1482e87ad8e4e'
    -+            '2f66a5073f17e8cad35aab8c545b34bb3a2263aa693e138b6af6724caeda6d70'
    ++            '5f86e542dd1ec92b2fe06ee59061c3e23512df7bafabe82206f2b7d80b81836b'
     +            '715cb8862753854b2d9256e0b70003e2d1f57083d83eaeaf5a095fc72b8a4e26'
    -+            'd4b6d171f3fd878b7a21043824c0477235c7acb6a73115a337295724ff8b0d1c'
    -+            'de631ab199a6fe83b3f695350bffaad067a2f95fc2ba9c8fe57dc85665d3653c'
    -+            '1d33da596dcef12272389cb81277db205dd2153e2e52612d2d01ab3f0e7b3fb7')
    ++            '2770cadf8ccf6b31aece6aee8f76dceb71e6e9d01fdf3be74c3743480ce34899'
    ++            'de631ab199a6fe83b3f695350bffaad067a2f95fc2ba9c8fe57dc85665d3653c')
      validpgpkeys=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D'  # Hans Wennborg, Google.
     -              '11E521D646982372EB577A1F8F0871F202119294') # Tom Stellard
     -noextract=(cfe-${pkgver}.src.tar.xz
    @@ mingw-w64-clang/PKGBUILD
     +    mv ${pkg}-$pkgver.src ${pkg}
     +  done
     +
    -+  # https://github.com/llvm/llvm-project/issues/63132
    -+  apply_patch_with_msg \
    -+    ab8d4f5a122fde5740f8c084c8165f51a26c93c7.patch
    -+
     +  # Patch llvm
     +  cd "${srcdir}/llvm"
     +  apply_patch_with_msg \
    -+    "0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch" \
    -+    "0002-Revert-CMake-try-creating-symlink-first-on-windows.patch" \
    -+    "0005-Fix-Any-linker-error-with-multiple-compilers.patch"
    -+
    -+  # upstream commits 9080f619461f 8deeaef0291f 6540157fe389 fb19fa2f3dfd
    -+  apply_patch_with_msg \
    -+    "0006-COFF-Remove-misleading-and-unclear-comments.-NFC.patch" \
    -+    "0007-llvm-dlltool-Clarify-parameters-simplify-ArgList-usa.patch" \
    -+    "0008-llvm-dlltool-Ignore-the-temp-prefix-option.patch" \
    -+    "0009-llvm-dlltool-Implement-the-no-leading-underscore-opt.patch"
    ++    "0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch"
     +
     +  if (( ! _clangprefix )); then
     +    apply_patch_with_msg \
    @@ mingw-w64-clang/README-patches.md (new)
     +-----
     +
     +- `"0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch"` :x:
    -+- `"0002-Revert-CMake-try-creating-symlink-first-on-windows.patch"` :x: (win symlinks don't play well with pacman packages)
     +- `"0003-add-pthread-as-system-lib-for-mingw.patch"` :grey_exclamation:
     +- `"0004-enable-emutls-for-mingw.patch"` :grey_exclamation:
    -+- `"0005-Fix-Any-linker-error-with-multiple-compilers.patch"` :grey_question:
    -+- `"0006-COFF-Remove-misleading-and-unclear-comments.-NFC.patch"` :arrow_down_small: https://reviews.llvm.org/D152359
    -+- `"0007-llvm-dlltool-Clarify-parameters-simplify-ArgList-usa.patch"` :arrow_down_small: https://reviews.llvm.org/D152360
    -+- `"0008-llvm-dlltool-Ignore-the-temp-prefix-option.patch"` :arrow_down_small: https://reviews.llvm.org/D152361
    -+- `"0009-llvm-dlltool-Implement-the-no-leading-underscore-opt.patch"` :arrow_down_small: https://reviews.llvm.org/D152363
    -+- `"ab8d4f5a122fde5740f8c084c8165f51a26c93c7.patch"` :arrow_down_small: https://reviews.llvm.org/D152121
     +- `"0101-link-pthread-with-mingw.patch"` :grey_exclamation:
     +- `"0102-Rename-flang-new-flang-experimental-exec-to-flang.patch"` :grey_question: https://reviews.llvm.org/D143592
     +- `"0303-ignore-new-bfd-options.patch"` :x:
2:  dc6ac7a9 ! 2:  11ac3213 clang: build a smaller clang/llvm
    @@ Commit message
         Msys2 builds pretty versatile Clang and LLVM packages with LLVM backends
         to cross compile for various target architectures. That comes at the
         cost of big binaries, that challenge how we manage the Git for Windows
    -    SDK[1]. But for Git ffor Windows we don't need all of this. We only need
    +    SDK[1]. But for Git for Windows we don't need all of this. We only need
         a Clang that can compile ARM64 binaries on ARM64.
     
         [1] https://github.com/git-for-windows/git-sdk-arm64/issues/7
    @@ Commit message
         Signed-off-by: Matthias Aßhauer <mha1993@live.de>
     
      ## mingw-w64-clang/PKGBUILD ##
    -@@ mingw-w64-clang/PKGBUILD: _version=16.0.5
    - _rc=""
    +@@ mingw-w64-clang/PKGBUILD: _version=17.0.1
    + _rc=
      _tag=llvmorg-${_version}${_rc}
      pkgver=${_version}${_rc/-/}
     -pkgrel=1
    @@ mingw-w64-clang/PKGBUILD: _version=16.0.5
      pkgdesc="C language family frontend for LLVM (mingw-w64)"
      arch=('any')
      mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
    -@@ mingw-w64-clang/PKGBUILD: sha256sums=('701b764a182d8ea8fb017b6b5f7f5f1272a29f17c339b838f48de894ffdd4f91'
    -             '715cb8862753854b2d9256e0b70003e2d1f57083d83eaeaf5a095fc72b8a4e26'
    -             'd4b6d171f3fd878b7a21043824c0477235c7acb6a73115a337295724ff8b0d1c'
    -             'de631ab199a6fe83b3f695350bffaad067a2f95fc2ba9c8fe57dc85665d3653c'
    --            '1d33da596dcef12272389cb81277db205dd2153e2e52612d2d01ab3f0e7b3fb7')
    -+            'SKIP')
    - validpgpkeys=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D'  # Hans Wennborg, Google.
    -               '474E22316ABF4785A88C6E8EA2C794A986419D8A'  # Tom Stellard
    -               'D574BD5D1D0E98895E3BF90044F2485E45D59042') # Tobias Hieta
     @@ mingw-w64-clang/PKGBUILD: build() {
          common_cmake_args+=(-DCMAKE_BUILD_TYPE=Debug)
          VERBOSE="VERBOSE=1"
3:  112a4a28 ! 3:  a8c7fcea clang: add helper script to keep package updated
    @@ mingw-w64-clang/update-clang-from-msys2.sh (new)
     +mv upstream/$pkgname/README-patches.md ./ || die "$0: failed to replace existing files with upstream files"
     +
     +sed -e "s/pkgrel=[.0-9]\+\(.*\)/pkgrel=$new_pkgrel\1/" \
    -+    -e 's/1d33da596dcef12272389cb81277db205dd2153e2e52612d2d01ab3f0e7b3fb7/SKIP/' \
     +    -e 's/-DCMAKE_BUILD_TYPE=Release/-DCMAKE_BUILD_TYPE=MinSizeRel/' \
     +    -e 's/-DLLVM_TARGETS_TO_BUILD=".*"/-DLLVM_TARGETS_TO_BUILD="host"/' \
     +    -e 's/-DLLVM_ENABLE_SPHINX=ON/-DLLVM_ENABLE_SPHINX=OFF/'\

@rimrul
Copy link
Member Author

rimrul commented Oct 12, 2023

Updated to latest Msys2 mingw-w64-clang.

And they just updated to 17.0.2 and plan to add a backport for arm64 soon that will bump pkgrel

update clang to 17.0.2-2 from Msys2 in preparation for building our own
smaller clang for ARM64.

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
@dscho
Copy link
Member

dscho commented Oct 17, 2023

Updated to latest Msys2 mingw-w64-clang.

And they just updated to 17.0.2 and plan to add a backport for arm64 soon that will bump pkgrel

So what do you think is the best course of action here, merge now, or merge after they bumped pkgrel?

@rimrul
Copy link
Member Author

rimrul commented Oct 17, 2023

add a backport for arm64 soon that will bump pkgrel

So what do you think is the best course of action here, merge now, or merge after they bumped pkgrel?

msys2#18690 has been merged, so that bump happened. This is updated to that version, so we're almost ready to merge. I think somewhere along the way I lost the safety pkgrel bump on our side, though.

I originally had a pkgrel bump in 3c2fd59 to ensure our version was always newer than upstream, but that's not in a45aa33 anymore.

Msys2 builds pretty versatile Clang and LLVM packages with LLVM backends
to cross compile for various target architectures. That comes at the
cost of big binaries, that challenge how we manage the Git for Windows
SDK[1]. But for Git for Windows we don't need all of this. We only need
a Clang that can compile ARM64 binaries on ARM64.

[1] git-for-windows/git-sdk-arm64#7

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
We'll need to update our clang when Msys2 updates theirs and reapply our
customisations every time, so a script makes this job less tedious and
leaves no room to miss a step of the process.
This script performs the same steps as the previous two commits. (it
was used to generate the files for those)

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
@rimrul
Copy link
Member Author

rimrul commented Oct 18, 2023

I've added the bump back in, so we should be ready to merge.

@dscho
Copy link
Member

dscho commented Oct 18, 2023

I've added the bump back in, so we should be ready to merge.

Great! Please do deploy and merge at your leisure @rimrul!

@rimrul
Copy link
Member Author

rimrul commented Oct 18, 2023

/deploy mingw-w64-clang

The workflow run was started.

@rimrul rimrul merged commit a27cc2b into git-for-windows:main Oct 19, 2023
4 checks passed
@dscho
Copy link
Member

dscho commented Oct 19, 2023

From git-for-windows/git-sdk-arm64@63f00c0:

image

Very nice!

@dscho
Copy link
Member

dscho commented Oct 19, 2023

And there are no more >100MB files: https://github.com/git-for-windows/git-sdk-arm64/actions/runs/6569383663/job/17845204550#step:5:36 (compare to the previous sync run). Just like that! Woot!

@rimrul rimrul deleted the small-llvm branch October 19, 2023 07:06
ammyk9 pushed a commit to ammyk9/git-for-windows-automation that referenced this pull request Aug 8, 2024
We want to build our own smaller Clang for ARM64, teach open-pr how to update it.
This update script uses the update-clang-from-msys2.sh script from
git-for-windows/MINGW-packages#75

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
ammyk9 pushed a commit to ammyk9/git-for-windows-automation that referenced this pull request Aug 8, 2024
We want to build our own smaller Clang for ARM64, teach open-pr how to update it.
This update script uses the update-clang-from-msys2.sh script from
git-for-windows/MINGW-packages#75

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[New mingw-w64-clang version] Apply workaround for Failed to evaluate function length in SEH unwind…
3 participants