From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gcc-patches:master commit in: 16.0.0/gentoo/
Date: Fri, 29 Aug 2025 12:15:21 +0000 (UTC) [thread overview]
Message-ID: <1756469710.c674e0a280a0a117ece1b7bcc07d61e796a6b033.sam@gentoo> (raw)
commit: c674e0a280a0a117ece1b7bcc07d61e796a6b033
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 29 12:15:10 2025 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Aug 29 12:15:10 2025 +0000
URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=c674e0a2
16.0.0: drop merged TLS patch
Signed-off-by: Sam James <sam <AT> gentoo.org>
...Improve-source-operand-check-for-TLS_CALL.patch | 424 ---------------------
1 file changed, 424 deletions(-)
diff --git a/16.0.0/gentoo/88_all-x86-64-Improve-source-operand-check-for-TLS_CALL.patch b/16.0.0/gentoo/88_all-x86-64-Improve-source-operand-check-for-TLS_CALL.patch
deleted file mode 100644
index 7177603..0000000
--- a/16.0.0/gentoo/88_all-x86-64-Improve-source-operand-check-for-TLS_CALL.patch
+++ /dev/null
@@ -1,424 +0,0 @@
-From ec2e1fe2a6d5b004d5666e0a5f8dc00b8f0e2985 Mon Sep 17 00:00:00 2001
-Message-ID: <ec2e1fe2a6d5b004d5666e0a5f8dc00b8f0e2985.1756358733.git.sam@gentoo.org>
-From: "H.J. Lu" <hjl.tools@gmail.com>
-Date: Wed, 27 Aug 2025 19:14:13 -0700
-Subject: [PATCH] x86-64: Improve source operand check for TLS_CALL
-
-Source operands of 2 TLS_CALL patterns in
-
-(insn 10 9 11 3 (set (reg:DI 100)
- (unspec:DI [
- (symbol_ref:DI ("caml_state") [flags 0x10] <var_decl 0x7fe10e1d9e40 caml_state>)
- ] UNSPEC_TLSDESC)) "x.c":7:16 1674 {*tls_dynamic_gnu2_lea_64_di}
- (nil))
-(insn 11 10 12 3 (parallel [
- (set (reg:DI 99)
- (unspec:DI [
- (symbol_ref:DI ("caml_state") [flags 0x10] <var_decl 0x7fe10e1d9e40 caml_state>)
- (reg:DI 100)
- (reg/f:DI 7 sp)
- ] UNSPEC_TLSDESC))
- (clobber (reg:CC 17 flags))
- ]) "x.c":7:16 1676 {*tls_dynamic_gnu2_call_64_di}
- (expr_list:REG_DEAD (reg:DI 100)
- (expr_list:REG_UNUSED (reg:CC 17 flags)
- (nil))))
-
-and
-
-(insn 19 17 20 4 (set (reg:DI 104)
- (unspec:DI [
- (symbol_ref:DI ("caml_state") [flags 0x10] <var_decl 0x7fe10e1d9e40 caml_state>)
- ] UNSPEC_TLSDESC)) "x.c":6:10 discrim 1 1674 {*tls_dynamic_gnu2_lea_64_di}
- (nil))
-(insn 20 19 21 4 (parallel [
- (set (reg:DI 103)
- (unspec:DI [
- (symbol_ref:DI ("caml_state") [flags 0x10] <var_decl 0x7fe10e1d9e40 caml_state>)
- (reg:DI 104)
- (reg/f:DI 7 sp)
- ] UNSPEC_TLSDESC))
- (clobber (reg:CC 17 flags))
- ]) "x.c":6:10 discrim 1 1676 {*tls_dynamic_gnu2_call_64_di}
- (expr_list:REG_DEAD (reg:DI 104)
- (expr_list:REG_UNUSED (reg:CC 17 flags)
- (nil))))
-
-are the same even though rtx_equal_p returns false since (reg:DI 100)
-and (reg:DI 104) are set from the same symbol. Use the UNSPEC_TLSDESC
-symbol
-
-(unspec:DI [(symbol_ref:DI ("caml_state") [flags 0x10])] UNSPEC_TLSDESC))
-
-to check if 2 TLS_CALL patterns have the same source.
-
-For TLS64_COMBINE, use both UNSPEC_TLSDESC and UNSPEC_DTPOFF unspecs to
-check if 2 TLS64_COMBINE patterns have the same source.
-
-gcc/
-
- PR target/121694
- * config/i386/i386-features.cc (redundant_pattern): Add
- tlsdesc_val.
- (pass_x86_cse): Likewise.
- ((pass_x86_cse::tls_set_insn_from_symbol): New member function.
- (pass_x86_cse::candidate_gnu2_tls_p): Set tlsdesc_val. For
- TLS64_COMBINE, match both UNSPEC_TLSDESC and UNSPEC_DTPOFF
- symbols. For TLS64_CALL, match the UNSPEC_TLSDESC sumbol.
- (pass_x86_cse::x86_cse): Initialize the tlsdesc_val field in
- load. Pass the tlsdesc_val field to ix86_place_single_tls_call
- for X86_CSE_TLSDESC.
-
-gcc/testsuite/
-
- PR target/121694
- * gcc.target/i386/pr121668-1b.c: New test.
- * gcc.target/i386/pr121694-1a.c: Likewise.
- * gcc.target/i386/pr121694-1b.c: Likewise.
-
-Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
----
- gcc/config/i386/i386-features.cc | 201 ++++++++++++--------
- gcc/testsuite/gcc.target/i386/pr121668-1b.c | 6 +
- gcc/testsuite/gcc.target/i386/pr121694-1a.c | 19 ++
- gcc/testsuite/gcc.target/i386/pr121694-1b.c | 6 +
- 4 files changed, 154 insertions(+), 78 deletions(-)
- create mode 100644 gcc/testsuite/gcc.target/i386/pr121668-1b.c
- create mode 100644 gcc/testsuite/gcc.target/i386/pr121694-1a.c
- create mode 100644 gcc/testsuite/gcc.target/i386/pr121694-1b.c
-
-diff --git a/gcc/config/i386/i386-features.cc b/gcc/config/i386/i386-features.cc
-index 93e20947edf3..5440a02c442b 100644
---- a/gcc/config/i386/i386-features.cc
-+++ b/gcc/config/i386/i386-features.cc
-@@ -3103,6 +3103,8 @@ struct redundant_pattern
- auto_bitmap insns;
- /* The broadcast inner scalar. */
- rtx val;
-+ /* The actual redundant source value for UNSPEC_TLSDESC. */
-+ rtx tlsdesc_val;
- /* The inner scalar mode. */
- machine_mode mode;
- /* The instruction which sets the inner scalar. Nullptr if the inner
-@@ -4155,6 +4157,8 @@ public:
- private:
- /* The redundant source value. */
- rtx val;
-+ /* The actual redundant source value for UNSPEC_TLSDESC. */
-+ rtx tlsdesc_val;
- /* The instruction which defines the redundant value. */
- rtx_insn *def_insn;
- /* Mode of the destination of the candidate redundant instruction. */
-@@ -4168,8 +4172,36 @@ private:
- bool candidate_gnu_tls_p (rtx_insn *, attr_tls64);
- bool candidate_gnu2_tls_p (rtx, attr_tls64);
- bool candidate_vector_p (rtx);
-+ rtx_insn *tls_set_insn_from_symbol (const_rtx, const_rtx);
- }; // class pass_x86_cse
-
-+/* Return the instruction which sets REG from TLS_SYMBOL. */
-+
-+rtx_insn *
-+pass_x86_cse::tls_set_insn_from_symbol (const_rtx reg,
-+ const_rtx tls_symbol)
-+{
-+ rtx_insn *set_insn = nullptr;
-+ for (df_ref ref = DF_REG_DEF_CHAIN (REGNO (reg));
-+ ref;
-+ ref = DF_REF_NEXT_REG (ref))
-+ {
-+ if (DF_REF_IS_ARTIFICIAL (ref))
-+ return nullptr;
-+
-+ set_insn = DF_REF_INSN (ref);
-+ if (get_attr_tls64 (set_insn) != TLS64_LEA)
-+ return nullptr;
-+
-+ rtx tls_set = PATTERN (set_insn);
-+ rtx tls_src = XVECEXP (SET_SRC (tls_set), 0, 0);
-+ if (!rtx_equal_p (tls_symbol, tls_src))
-+ return nullptr;
-+ }
-+
-+ return set_insn;
-+}
-+
- /* Return true and output def_insn, val, mode, scalar_mode and kind if
- INSN is UNSPEC_TLS_GD or UNSPEC_TLS_LD_BASE. */
-
-@@ -4226,29 +4258,71 @@ pass_x86_cse::candidate_gnu2_tls_p (rtx set, attr_tls64 tls64)
- if (!TARGET_64BIT || !cfun->machine->tls_descriptor_call_multiple_p)
- return false;
-
-- /* Record GNU2 TLS CALLs for 64-bit:
--
-- (set (reg/f:DI 104)
-- (plus:DI (unspec:DI [
-- (symbol_ref:DI ("_TLS_MODULE_BASE_") [flags 0x10])
-- (reg:DI 114)
-- (reg/f:DI 7 sp)] UNSPEC_TLSDESC)
-- (const:DI (unspec:DI [
-- (symbol_ref:DI ("e") [flags 0x1a])
-- ] UNSPEC_DTPOFF))))
--
-- (set (reg/f:DI 104)
-- (plus:DI (unspec:DI [
-- (symbol_ref:DI ("_TLS_MODULE_BASE_") [flags 0x10])
-- (unspec:DI [
-- (symbol_ref:DI ("_TLS_MODULE_BASE_") [flags 0x10])
-- ] UNSPEC_TLSDESC)
-- (reg/f:DI 7 sp)] UNSPEC_TLSDESC)
-- (const:DI (unspec:DI [
-- (symbol_ref:DI ("e") [flags 0x1a])
-- ] UNSPEC_DTPOFF))))
-+ rtx tls_symbol;
-+ rtx_insn *set_insn;
-+ rtx src = SET_SRC (set);
-+ val = src;
-+ tlsdesc_val = src;
-+ kind = X86_CSE_TLSDESC;
-
-- and
-+ if (tls64 == TLS64_COMBINE)
-+ {
-+ /* Record 64-bit TLS64_COMBINE:
-+
-+ (set (reg/f:DI 104)
-+ (plus:DI (unspec:DI [
-+ (symbol_ref:DI ("_TLS_MODULE_BASE_") [flags 0x10])
-+ (reg:DI 114)
-+ (reg/f:DI 7 sp)] UNSPEC_TLSDESC)
-+ (const:DI (unspec:DI [
-+ (symbol_ref:DI ("e") [flags 0x1a])
-+ ] UNSPEC_DTPOFF))))
-+
-+ (set (reg/f:DI 104)
-+ (plus:DI (unspec:DI [
-+ (symbol_ref:DI ("_TLS_MODULE_BASE_") [flags 0x10])
-+ (unspec:DI [
-+ (symbol_ref:DI ("_TLS_MODULE_BASE_") [flags 0x10])
-+ ] UNSPEC_TLSDESC)
-+ (reg/f:DI 7 sp)] UNSPEC_TLSDESC)
-+ (const:DI (unspec:DI [
-+ (symbol_ref:DI ("e") [flags 0x1a])
-+ ] UNSPEC_DTPOFF))))
-+ */
-+
-+ scalar_mode = mode = GET_MODE (src);
-+ rtx src0 = XEXP (src, 0);
-+ tls_symbol = XVECEXP (src0, 0, 0);
-+ rtx src1 = XVECEXP (src0, 0, 1);
-+ if (REG_P (src1))
-+ {
-+ set_insn = tls_set_insn_from_symbol (src1, tls_symbol);
-+ gcc_assert (set_insn);
-+ }
-+ else
-+ {
-+ set_insn = nullptr;
-+ gcc_assert (GET_CODE (src1) == UNSPEC
-+ && XINT (src1, 1) == UNSPEC_TLSDESC
-+ && SYMBOL_REF_P (XVECEXP (src1, 0, 0))
-+ && rtx_equal_p (XVECEXP (src1, 0, 0), tls_symbol));
-+ }
-+
-+ /* Use TLS_SYMBOL and
-+
-+ (const:DI (unspec:DI [
-+ (symbol_ref:DI ("e") [flags 0x1a])
-+ ] UNSPEC_DTPOFF))
-+
-+ as VAL to check if 2 patterns have the same source. */
-+
-+ rtvec vec = gen_rtvec (2, tls_symbol, XEXP (src, 1));
-+ val = gen_rtx_UNSPEC (mode, vec, UNSPEC_TLSDESC);
-+ def_insn = set_insn;
-+ return true;
-+ }
-+
-+ /* Record 64-bit TLS_CALL:
-
- (set (reg:DI 101)
- (unspec:DI [(symbol_ref:DI ("foo") [flags 0x50])
-@@ -4257,70 +4331,33 @@ pass_x86_cse::candidate_gnu2_tls_p (rtx set, attr_tls64 tls64)
-
- */
-
-- rtx src = SET_SRC (set);
-- val = src;
-- if (tls64 != TLS64_CALL)
-- src = XEXP (src, 0);
--
-- kind = X86_CSE_TLSDESC;
- gcc_assert (GET_CODE (src) == UNSPEC);
-- rtx tls_symbol = XVECEXP (src, 0, 0);
-+ tls_symbol = XVECEXP (src, 0, 0);
- src = XVECEXP (src, 0, 1);
- scalar_mode = mode = GET_MODE (src);
-- if (REG_P (src))
-- {
-- /* All definitions of reg:DI 129 in
--
-- (set (reg:DI 110)
-- (unspec:DI [(symbol_ref:DI ("foo"))
-- (reg:DI 129)
-- (reg/f:DI 7 sp)] UNSPEC_TLSDESC))
--
-- should have the same source as in
-+ gcc_assert (REG_P (src));
-
-- (set (reg:DI 129)
-- (unspec:DI [(symbol_ref:DI ("foo"))] UNSPEC_TLSDESC))
-+ /* All definitions of reg:DI 129 in
-
-- */
-+ (set (reg:DI 110)
-+ (unspec:DI [(symbol_ref:DI ("foo"))
-+ (reg:DI 129)
-+ (reg/f:DI 7 sp)] UNSPEC_TLSDESC))
-
-- df_ref ref;
-- rtx_insn *set_insn = nullptr;
-- for (ref = DF_REG_DEF_CHAIN (REGNO (src));
-- ref;
-- ref = DF_REF_NEXT_REG (ref))
-- {
-- if (DF_REF_IS_ARTIFICIAL (ref))
-- break;
-+ should have the same source as in
-
-- set_insn = DF_REF_INSN (ref);
-- tls64 = get_attr_tls64 (set_insn);
-- if (tls64 != TLS64_LEA)
-- {
-- set_insn = nullptr;
-- break;
-- }
-+ (set (reg:DI 129)
-+ (unspec:DI [(symbol_ref:DI ("foo"))] UNSPEC_TLSDESC))
-
-- rtx tls_set = PATTERN (set_insn);
-- rtx tls_src = XVECEXP (SET_SRC (tls_set), 0, 0);
-- if (!rtx_equal_p (tls_symbol, tls_src))
-- {
-- set_insn = nullptr;
-- break;
-- }
-- }
--
-- if (!set_insn)
-- return false;
-+ */
-
-- def_insn = set_insn;
-- }
-- else if (GET_CODE (src) == UNSPEC
-- && XINT (src, 1) == UNSPEC_TLSDESC
-- && SYMBOL_REF_P (XVECEXP (src, 0, 0)))
-- def_insn = nullptr;
-- else
-- gcc_unreachable ();
-+ set_insn = tls_set_insn_from_symbol (src, tls_symbol);
-+ if (!set_insn)
-+ return false;
-
-+ /* Use TLS_SYMBOL as VAL to check if 2 patterns have the same source. */
-+ val = tls_symbol;
-+ def_insn = set_insn;
- return true;
- }
-
-@@ -4395,6 +4432,8 @@ pass_x86_cse::x86_cse (void)
- if (!set && !CALL_P (insn))
- continue;
-
-+ tlsdesc_val = nullptr;
-+
- attr_tls64 tls64 = get_attr_tls64 (insn);
- switch (tls64)
- {
-@@ -4466,6 +4505,10 @@ pass_x86_cse::x86_cse (void)
- load = new redundant_pattern;
-
- load->val = copy_rtx (val);
-+ if (tlsdesc_val)
-+ load->tlsdesc_val = copy_rtx (tlsdesc_val);
-+ else
-+ load->tlsdesc_val = nullptr;
- load->mode = scalar_mode;
- load->size = GET_MODE_SIZE (mode);
- load->def_insn = def_insn;
-@@ -4560,7 +4603,7 @@ pass_x86_cse::x86_cse (void)
- {
- case X86_CSE_TLSDESC:
- ix86_place_single_tls_call (load->broadcast_reg,
-- load->val,
-+ load->tlsdesc_val,
- load->kind,
- load->bbs,
- updated_gnu_tls_insns,
-@@ -4606,7 +4649,9 @@ pass_x86_cse::x86_cse (void)
- case X86_CSE_TLS_LD_BASE:
- case X86_CSE_TLSDESC:
- ix86_place_single_tls_call (load->broadcast_reg,
-- load->val,
-+ (load->kind == X86_CSE_TLSDESC
-+ ? load->tlsdesc_val
-+ : load->val),
- load->kind,
- load->bbs,
- updated_gnu_tls_insns,
-diff --git a/gcc/testsuite/gcc.target/i386/pr121668-1b.c b/gcc/testsuite/gcc.target/i386/pr121668-1b.c
-new file mode 100644
-index 000000000000..54a277506f83
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/i386/pr121668-1b.c
-@@ -0,0 +1,6 @@
-+/* { dg-do compile { target *-*-linux* } } */
-+/* { dg-options "-Og -g -fpic -fplt -mtls-dialect=gnu2" } */
-+
-+#include "pr121668-1a.c"
-+
-+/* { dg-final { scan-assembler-times "call\[ \t\]\\*caml_state@TLSCALL\\(%(?:r|e)ax\\)" 1 { target { ! ia32 } } } } */
-diff --git a/gcc/testsuite/gcc.target/i386/pr121694-1a.c b/gcc/testsuite/gcc.target/i386/pr121694-1a.c
-new file mode 100644
-index 000000000000..af9c65701341
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/i386/pr121694-1a.c
-@@ -0,0 +1,19 @@
-+/* { dg-do compile { target *-*-linux* } } */
-+/* { dg-options "-Og -fpic -fplt -mtls-dialect=gnu" } */
-+
-+extern void func1 (long *);
-+extern int func2 (void);
-+extern void func3 (void);
-+static __thread long foo;
-+static __thread long bar;
-+long
-+func (void)
-+{
-+ func1 (&foo);
-+ func1 (&bar);
-+ if (func2 ())
-+ func3 ();
-+ return foo + bar;
-+}
-+
-+/* { dg-final { scan-assembler-times "call\[ \t\]__tls_get_addr@PLT" 1 { target { ! ia32 } } } } */
-diff --git a/gcc/testsuite/gcc.target/i386/pr121694-1b.c b/gcc/testsuite/gcc.target/i386/pr121694-1b.c
-new file mode 100644
-index 000000000000..76ebbf7e90bd
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/i386/pr121694-1b.c
-@@ -0,0 +1,6 @@
-+/* { dg-do compile { target *-*-linux* } } */
-+/* { dg-options "-Og -fpic -fplt -mtls-dialect=gnu2" } */
-+
-+#include "pr121694-1a.c"
-+
-+/* { dg-final { scan-assembler-times "call\[ \t\]\\*_TLS_MODULE_BASE_@TLSCALL\\(%(?:r|e)ax\\)" 1 { target { ! ia32 } } } } */
-
-base-commit: 6aa1cbb140bba220439d839207a23f09222c99df
---
-2.51.0
-
next reply other threads:[~2025-08-29 12:15 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-29 12:15 Sam James [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-10-02 11:05 [gentoo-commits] proj/gcc-patches:master commit in: 16.0.0/gentoo/ Sam James
2025-10-02 11:04 Sam James
2025-10-02 4:55 Sam James
2025-10-02 1:18 Sam James
2025-10-02 0:40 Sam James
2025-10-02 0:36 Sam James
2025-10-02 0:30 Sam James
2025-09-17 18:41 Sam James
2025-09-17 3:04 Sam James
2025-09-16 19:23 Sam James
2025-09-14 11:26 Sam James
2025-09-13 13:16 Sam James
2025-09-07 22:42 Sam James
2025-09-06 2:42 Sam James
2025-09-05 12:44 Sam James
2025-09-01 8:04 Sam James
2025-08-31 22:43 Sam James
2025-08-30 14:06 Sam James
2025-08-30 8:05 Sam James
2025-08-30 6:57 Sam James
2025-08-30 0:12 Sam James
2025-08-29 21:26 Sam James
2025-08-29 21:02 Sam James
2025-08-29 20:24 Sam James
2025-08-29 20:18 Sam James
2025-08-29 18:38 Sam James
2025-08-28 17:57 Sam James
2025-08-28 5:27 Sam James
2025-08-27 4:19 Sam James
2025-08-26 23:42 Sam James
2025-08-26 4:48 Sam James
2025-08-26 0:56 Sam James
2025-08-25 3:55 Sam James
2025-08-24 23:42 Sam James
2025-08-21 16:11 Sam James
2025-08-20 20:45 Sam James
2025-08-20 14:10 Sam James
2025-08-20 1:16 Sam James
2025-08-20 1:10 Sam James
2025-08-19 16:30 Sam James
2025-08-18 23:52 Sam James
2025-08-18 23:08 Sam James
2025-08-17 22:45 Sam James
2025-08-17 21:01 Sam James
2025-08-17 16:30 Sam James
2025-08-17 15:44 Sam James
2025-08-17 15:10 Sam James
2025-08-16 23:06 Sam James
2025-08-05 0:23 Sam James
2025-07-30 22:35 Sam James
2025-07-30 0:44 Sam James
2025-07-30 0:44 Sam James
2025-07-25 18:49 Sam James
2025-07-23 11:22 Sam James
2025-07-22 23:56 Sam James
2025-07-21 14:02 Sam James
2025-07-21 1:12 Sam James
2025-07-14 16:03 Sam James
2025-07-14 4:09 Sam James
2025-07-14 2:55 Sam James
2025-07-14 2:55 Sam James
2025-07-14 2:40 Sam James
2025-07-13 23:11 Sam James
2025-07-13 1:09 Sam James
2025-07-12 15:24 Sam James
2025-07-12 15:23 Sam James
2025-07-10 12:34 Sam James
2025-07-10 1:22 Sam James
2025-07-10 0:50 Sam James
2025-07-07 20:49 Sam James
2025-07-06 22:41 Sam James
2025-07-03 1:29 Sam James
2025-06-30 6:26 Sam James
2025-06-29 0:29 Sam James
2025-06-19 16:59 Sam James
2025-06-19 0:58 Sam James
2025-06-19 0:58 Sam James
2025-06-18 21:17 Sam James
2025-06-18 9:53 Sam James
2025-06-18 9:06 Sam James
2025-06-13 12:03 Sam James
2025-06-12 20:34 Sam James
2025-06-12 14:05 Sam James
2025-06-12 7:27 Sam James
2025-06-12 5:46 Sam James
2025-06-11 5:05 Sam James
2025-06-11 3:19 Sam James
2025-06-01 22:39 Sam James
2025-05-31 18:48 Sam James
2025-05-11 22:52 Sam James
2025-05-10 15:28 Sam James
2025-05-09 23:29 Sam James
2025-05-05 14:39 Sam James
2025-05-05 13:05 Sam James
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1756469710.c674e0a280a0a117ece1b7bcc07d61e796a6b033.sam@gentoo \
--to=sam@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox