<pre style='margin:0'>
Chris Jones (cjones051073) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/b9c4a78560fe05aaa972ed25833a4a96dff40a42">https://github.com/macports/macports-ports/commit/b9c4a78560fe05aaa972ed25833a4a96dff40a42</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit b9c4a78560fe05aaa972ed25833a4a96dff40a42
</span>Author: Chris Jones <jonesc@macports.org>
AuthorDate: Mon Sep 26 10:51:33 2022 +0100
<span style='display:block; white-space:pre;color:#404040;'> llvm 15: Simplify the no-QOS patch
</span>---
lang/llvm-15/files/0110-Avoid-Pthread-QOS.patch | 117 +-----------------------
1 file changed, 5 insertions(+), 112 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/llvm-15/files/0110-Avoid-Pthread-QOS.patch b/lang/llvm-15/files/0110-Avoid-Pthread-QOS.patch
</span><span style='display:block; white-space:pre;color:#808080;'>index bc7613e4fc0..da7c55e64d5 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/llvm-15/files/0110-Avoid-Pthread-QOS.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/llvm-15/files/0110-Avoid-Pthread-QOS.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,64 +1,3 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/clang-tools-extra/clangd/index/Background.h b/clang-tools-extra/clangd/index/Background.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 688c09814cd2..29869f38a43e 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/clang-tools-extra/clangd/index/Background.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/clang-tools-extra/clangd/index/Background.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -72,7 +72,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- explicit Task(std::function<void()> Run) : Run(std::move(Run)) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- std::function<void()> Run;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- llvm::ThreadPriority ThreadPri = llvm::ThreadPriority::Low;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ llvm::ThreadPriority ThreadPri = llvm::ThreadPriority::Background;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- unsigned QueuePri = 0; // Higher-priority tasks will run first.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- std::string Tag; // Allows priority to be boosted later.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- uint64_t Key = 0; // If the key matches a previous task, drop this one.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 9356dd4a2377..19d0d950fa9e 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/clang/tools/libclang/CIndex.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/clang/tools/libclang/CIndex.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -9229,9 +9229,7 @@ void clang::setThreadBackgroundPriority() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if LLVM_ENABLE_THREADS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // The function name setThreadBackgroundPriority is for historical reasons;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // Low is more appropriate.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- llvm::set_thread_priority(llvm::ThreadPriority::Low);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ llvm::set_thread_priority(llvm::ThreadPriority::Background);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/llvm/include/llvm/Support/Threading.h b/llvm/include/llvm/Support/Threading.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 1e7e5f7b8f50..b158a57a1a21 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/llvm/include/llvm/Support/Threading.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/llvm/include/llvm/Support/Threading.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -233,20 +233,16 @@ bool llvm_is_multithreaded();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- unsigned get_cpus();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- enum class ThreadPriority {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- /// Lower the current thread's priority as much as possible. Can be used
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- /// for long-running tasks that are not time critical; more energy-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- /// efficient than Low.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Background = 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Low = 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- /// Lower the current thread's priority such that it does not affect
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- /// foreground tasks significantly. This is a good default for long-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- /// running, latency-insensitive tasks to make sure cpu is not hogged
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- /// by this task.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- Low = 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- /// Restore the current thread's priority to default scheduling priority.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- Default = 2,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Default = 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ /// If priority is Background tries to lower current threads priority such
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ /// that it does not affect foreground tasks significantly. Can be used for
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ /// long-running, latency-insensitive tasks to make sure cpu is not hogged by
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ /// this task.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ /// If the priority is default tries to restore current threads priority to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ /// default scheduling priority.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- enum class SetThreadPriorityResult { FAILURE, SUCCESS };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- SetThreadPriorityResult set_thread_priority(ThreadPriority Priority);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span> diff --git a/llvm/lib/Support/Unix/Threading.inc b/llvm/lib/Support/Unix/Threading.inc
index 99f64b4f553d..5de1cf071ba9 100644
--- a/llvm/lib/Support/Unix/Threading.inc
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -71,26 +10,10 @@ index 99f64b4f553d..5de1cf071ba9 100644
</span> #endif
#include <pthread.h>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -261,29 +260,27 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // SCHED_OTHER the standard round-robin time-sharing policy;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return !pthread_setschedparam(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- pthread_self(),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // FIXME: consider SCHED_BATCH for Low
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- Priority == ThreadPriority::Default ? SCHED_OTHER : SCHED_IDLE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Priority == ThreadPriority::Background ? SCHED_IDLE : SCHED_OTHER,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- &priority)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ? SetThreadPriorityResult::SUCCESS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- : SetThreadPriorityResult::FAILURE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #elif defined(__APPLE__) && defined(PRIO_DARWIN_THREAD) && defined(PRIO_DARWIN_BG)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // https://developer.apple.com/documentation/apple-silicon/tuning-your-code-s-performance-for-apple-silicon
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- //
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // Background - Applies to work that isn’t visible to the user and may take significant
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // time to complete. Examples include indexing, backing up, or synchronizing data. This
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // class emphasizes energy efficiency.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- //
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // Utility - Applies to work that takes anywhere from a few seconds to a few minutes to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // complete. Examples include downloading a document or importing data. This class
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // offers a balance between responsiveness, performance, and energy efficiency.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -276,14 +275,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Utility - Applies to work that takes anywhere from a few seconds to a few minutes to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // complete. Examples include downloading a document or importing data. This class
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // offers a balance between responsiveness, performance, and energy efficiency.
</span> - const auto qosClass = [&](){
- switch (Priority) {
- case ThreadPriority::Background: return QOS_CLASS_BACKGROUND;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -99,38 +22,8 @@ index 99f64b4f553d..5de1cf071ba9 100644
</span> - }
- }();
- return !pthread_set_qos_class_self_np(qosClass, 0)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getpriority.2.html
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // When setting a thread into background state the scheduling priority is set
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // to lowest value, disk and network IO are throttled. Network IO will be
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // throttled for any sockets the thread opens after going into background
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // state. Any previously opened sockets are not affected.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/getiopolicy_np.3.html
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // I/Os with THROTTLE policy are called THROTTLE I/Os. If a THROTTLE I/O
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // request occurs within a small time window (usually a fraction of a second)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // of another NORMAL I/O request, the thread that issues the THROTTLE I/O is
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // forced to sleep for a certain interval. This slows down the thread that
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // issues the THROTTLE I/O so that NORMAL I/Os can utilize most of the disk
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // I/O bandwidth.
</span> + return !setpriority(PRIO_DARWIN_THREAD, 0,
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Priority == ThreadPriority::Background ? PRIO_DARWIN_BG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ : 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Priority == ThreadPriority::Default ? 0 : PRIO_DARWIN_BG)
</span> ? SetThreadPriorityResult::SUCCESS
: SetThreadPriorityResult::FAILURE;
#endif
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/llvm/lib/Support/Windows/Threading.inc b/llvm/lib/Support/Windows/Threading.inc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 11f34817dbbf..78047ab8bbbd 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/llvm/lib/Support/Windows/Threading.inc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/llvm/lib/Support/Windows/Threading.inc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -120,10 +120,8 @@ SetThreadPriorityResult llvm::set_thread_priority(ThreadPriority Priority) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // End background processing mode. The system restores the resource scheduling
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // priorities of the thread as they were before the thread entered background
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // processing mode.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- //
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // FIXME: consider THREAD_PRIORITY_BELOW_NORMAL for Low
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return SetThreadPriority(GetCurrentThread(),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- Priority != ThreadPriority::Default
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Priority == ThreadPriority::Background
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ? THREAD_MODE_BACKGROUND_BEGIN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- : THREAD_MODE_BACKGROUND_END)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ? SetThreadPriorityResult::SUCCESS
</span></pre><pre style='margin:0'>
</pre>