mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
sys-devel/gcc: add two more fixes to latest 15 snapshot
I got pinged just in time after pushing 3438a12977.
* Add a fix for German locales
* Fix Qt 6.9 build
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
216
sys-devel/gcc/files/gcc-15.0.1_pre20250406-de-locale.patch
Normal file
216
sys-devel/gcc/files/gcc-15.0.1_pre20250406-de-locale.patch
Normal file
@@ -0,0 +1,216 @@
|
||||
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1f32b87117b0e2ecc33b844d929d723de3fe8085
|
||||
|
||||
From 1f32b87117b0e2ecc33b844d929d723de3fe8085 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Jelinek <jakub@redhat.com>
|
||||
Date: Thu, 10 Apr 2025 18:39:52 +0200
|
||||
Subject: [PATCH] c++: Use G_ instead of _ around cp/errors.cc
|
||||
gcc-internal-format strings [PR119684]
|
||||
|
||||
These pp_printf/pp_verbatim format strings should be gcc-internal-format,
|
||||
they use the pretty-print.cc format specifier handling rather than libc
|
||||
*printf, but pp_printf/pp_verbatim are intentionally not handled through
|
||||
exgettext because not everything done through them should be translated
|
||||
(e.g. its use for dump files shouldn't be).
|
||||
In addition, composing translatable messages from
|
||||
"in requirements " and later on "with " might make it harder to be
|
||||
translated.
|
||||
|
||||
I've verified these strings (at least those which don't use format
|
||||
specifiers added post GCC 4.3 which gettext doesn't handle) are properly
|
||||
marked as gcc-internal-format in gcc.pot. The lack of that caused
|
||||
ICEs on German translation of the "%s%s%sIn instantiation of %q#D:\n"
|
||||
message because it contained too many %s.
|
||||
|
||||
2025-04-10 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR translation/119684
|
||||
* error.cc (cp_print_error_function): Use G_ instead of _ for
|
||||
pp_printf arguments.
|
||||
(function_category): Use G_ instead of _.
|
||||
(print_instantiation_full_context): Use G_ instead of _ in pp_verbatim
|
||||
arguments.
|
||||
(print_location): Likewise.
|
||||
(print_instantiation_partial_context): Likewise.
|
||||
(maybe_print_constexpr_context): Likewise.
|
||||
(print_constrained_decl_info): Use G_() around pp_verbatim argument.
|
||||
(print_concept_check_info): Likewise.
|
||||
(print_constraint_context_head): Likewise.
|
||||
(print_requires_expression_info): Likewise. Merge separate pp_verbatim
|
||||
"in requirements " and "with " into one with conditional messages.
|
||||
---
|
||||
gcc/cp/error.cc | 59 ++++++++++++++++++++++++-------------------------
|
||||
1 file changed, 29 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc
|
||||
index ec7527e96d18..499eb1b15a85 100644
|
||||
--- a/gcc/cp/error.cc
|
||||
+++ b/gcc/cp/error.cc
|
||||
@@ -3788,18 +3788,18 @@ cp_print_error_function (diagnostic_text_output_format &text_output,
|
||||
{
|
||||
if (text_output.show_column_p () && s.column != 0)
|
||||
pp_printf (pp,
|
||||
- _(" inlined from %qD at %r%s:%d:%d%R"),
|
||||
+ G_(" inlined from %qD at %r%s:%d:%d%R"),
|
||||
fndecl,
|
||||
"locus", s.file, s.line, s.column);
|
||||
else
|
||||
pp_printf (pp,
|
||||
- _(" inlined from %qD at %r%s:%d%R"),
|
||||
+ G_(" inlined from %qD at %r%s:%d%R"),
|
||||
fndecl,
|
||||
"locus", s.file, s.line);
|
||||
|
||||
}
|
||||
else
|
||||
- pp_printf (pp, _(" inlined from %qD"),
|
||||
+ pp_printf (pp, G_(" inlined from %qD"),
|
||||
fndecl);
|
||||
}
|
||||
}
|
||||
@@ -3825,22 +3825,22 @@ function_category (tree fn)
|
||||
&& DECL_FUNCTION_MEMBER_P (fn))
|
||||
{
|
||||
if (DECL_STATIC_FUNCTION_P (fn))
|
||||
- return _("In static member function %qD");
|
||||
+ return G_("In static member function %qD");
|
||||
else if (DECL_COPY_CONSTRUCTOR_P (fn))
|
||||
- return _("In copy constructor %qD");
|
||||
+ return G_("In copy constructor %qD");
|
||||
else if (DECL_CONSTRUCTOR_P (fn))
|
||||
- return _("In constructor %qD");
|
||||
+ return G_("In constructor %qD");
|
||||
else if (DECL_DESTRUCTOR_P (fn))
|
||||
- return _("In destructor %qD");
|
||||
+ return G_("In destructor %qD");
|
||||
else if (LAMBDA_FUNCTION_P (fn))
|
||||
- return _("In lambda function");
|
||||
+ return G_("In lambda function");
|
||||
else if (DECL_XOBJ_MEMBER_FUNCTION_P (fn))
|
||||
- return _("In explicit object member function %qD");
|
||||
+ return G_("In explicit object member function %qD");
|
||||
else
|
||||
- return _("In member function %qD");
|
||||
+ return G_("In member function %qD");
|
||||
}
|
||||
else
|
||||
- return _("In function %qD");
|
||||
+ return G_("In function %qD");
|
||||
}
|
||||
|
||||
/* Disable warnings about missing quoting in GCC diagnostics for
|
||||
@@ -3867,8 +3867,8 @@ print_instantiation_full_context (diagnostic_text_output_format &text_output)
|
||||
char *indent = text_output.build_indent_prefix (true);
|
||||
pp_verbatim (text_output.get_printer (),
|
||||
p->list_p ()
|
||||
- ? _("%s%s%sIn substitution of %qS:\n")
|
||||
- : _("%s%s%sIn instantiation of %q#D:\n"),
|
||||
+ ? G_("%s%s%sIn substitution of %qS:\n")
|
||||
+ : G_("%s%s%sIn instantiation of %q#D:\n"),
|
||||
indent,
|
||||
show_file ? LOCATION_FILE (location) : "",
|
||||
show_file ? ": " : "",
|
||||
@@ -3888,10 +3888,10 @@ print_location (diagnostic_text_output_format &text_output,
|
||||
expanded_location xloc = expand_location (loc);
|
||||
pretty_printer *const pp = text_output.get_printer ();
|
||||
if (text_output.show_column_p ())
|
||||
- pp_verbatim (pp, _("%r%s:%d:%d:%R "),
|
||||
+ pp_verbatim (pp, G_("%r%s:%d:%d:%R "),
|
||||
"locus", xloc.file, xloc.line, xloc.column);
|
||||
else
|
||||
- pp_verbatim (pp, _("%r%s:%d:%R "),
|
||||
+ pp_verbatim (pp, G_("%r%s:%d:%R "),
|
||||
"locus", xloc.file, xloc.line);
|
||||
}
|
||||
|
||||
@@ -3984,22 +3984,22 @@ print_instantiation_partial_context_line (diagnostic_text_output_format &text_ou
|
||||
if (t->list_p ())
|
||||
pp_verbatim (pp,
|
||||
recursive_p
|
||||
- ? _("recursively required by substitution of %qS\n")
|
||||
- : _("required by substitution of %qS\n"),
|
||||
+ ? G_("recursively required by substitution of %qS\n")
|
||||
+ : G_("required by substitution of %qS\n"),
|
||||
t->get_node ());
|
||||
else
|
||||
pp_verbatim (pp,
|
||||
recursive_p
|
||||
- ? _("recursively required from %q#D\n")
|
||||
- : _("required from %q#D\n"),
|
||||
+ ? G_("recursively required from %q#D\n")
|
||||
+ : G_("required from %q#D\n"),
|
||||
t->get_node ());
|
||||
}
|
||||
else
|
||||
{
|
||||
pp_verbatim (pp,
|
||||
recursive_p
|
||||
- ? _("recursively required from here\n")
|
||||
- : _("required from here\n"));
|
||||
+ ? G_("recursively required from here\n")
|
||||
+ : G_("required from here\n"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4049,8 +4049,8 @@ print_instantiation_partial_context (diagnostic_text_output_format &text_output,
|
||||
{
|
||||
auto_context_line sentinel (text_output, loc);
|
||||
pp_verbatim (text_output.get_printer (),
|
||||
- _("[ skipping %d instantiation contexts,"
|
||||
- " use -ftemplate-backtrace-limit=0 to disable ]\n"),
|
||||
+ G_("[ skipping %d instantiation contexts,"
|
||||
+ " use -ftemplate-backtrace-limit=0 to disable ]\n"),
|
||||
skip);
|
||||
do {
|
||||
loc = t->locus;
|
||||
@@ -4101,7 +4101,7 @@ maybe_print_constexpr_context (diagnostic_text_output_format &text_output)
|
||||
pretty_printer *const pp = text_output.get_printer ();
|
||||
auto_context_line sentinel (text_output, EXPR_LOCATION (t));
|
||||
pp_verbatim (pp,
|
||||
- _("in %<constexpr%> expansion of %qs"),
|
||||
+ G_("in %<constexpr%> expansion of %qs"),
|
||||
s);
|
||||
pp_newline (pp);
|
||||
}
|
||||
@@ -4114,7 +4114,7 @@ print_constrained_decl_info (diagnostic_text_output_format &text_output,
|
||||
{
|
||||
auto_context_line sentinel (text_output, DECL_SOURCE_LOCATION (decl));
|
||||
pretty_printer *const pp = text_output.get_printer ();
|
||||
- pp_verbatim (pp, "required by the constraints of %q#D\n", decl);
|
||||
+ pp_verbatim (pp, G_("required by the constraints of %q#D\n"), decl);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -4129,7 +4129,7 @@ print_concept_check_info (diagnostic_text_output_format &text_output,
|
||||
|
||||
cxx_pretty_printer *const pp
|
||||
= (cxx_pretty_printer *)text_output.get_printer ();
|
||||
- pp_verbatim (pp, "required for the satisfaction of %qE", expr);
|
||||
+ pp_verbatim (pp, G_("required for the satisfaction of %qE"), expr);
|
||||
if (map && map != error_mark_node)
|
||||
{
|
||||
tree subst_map = tsubst_parameter_mapping (map, args, tf_none, NULL_TREE);
|
||||
@@ -4151,7 +4151,7 @@ print_constraint_context_head (diagnostic_text_output_format &text_output,
|
||||
{
|
||||
auto_context_line sentinel (text_output, input_location);
|
||||
pretty_printer *const pp = text_output.get_printer ();
|
||||
- pp_verbatim (pp, "required for constraint satisfaction\n");
|
||||
+ pp_verbatim (pp, G_("required for constraint satisfaction\n"));
|
||||
return NULL_TREE;
|
||||
}
|
||||
if (DECL_P (src))
|
||||
@@ -4180,11 +4180,10 @@ print_requires_expression_info (diagnostic_text_output_format &text_output,
|
||||
auto_context_line sentinel (text_output, cp_expr_loc_or_input_loc (expr));
|
||||
cxx_pretty_printer *const pp
|
||||
= static_cast <cxx_pretty_printer *> (text_output.get_printer ());
|
||||
- pp_verbatim (pp, "in requirements ");
|
||||
|
||||
tree parms = TREE_OPERAND (expr, 0);
|
||||
- if (parms)
|
||||
- pp_verbatim (pp, "with ");
|
||||
+ pp_verbatim (pp, parms ? G_("in requirements with ")
|
||||
+ : G_("in requirements "));
|
||||
while (parms)
|
||||
{
|
||||
pp_verbatim (pp, "%q#D", parms);
|
||||
--
|
||||
2.43.5
|
||||
77
sys-devel/gcc/files/gcc-15.0.1_pre20250406-qt.patch
Normal file
77
sys-devel/gcc/files/gcc-15.0.1_pre20250406-qt.patch
Normal file
@@ -0,0 +1,77 @@
|
||||
https://inbox.sourceware.org/gcc-patches/20250409151104.2600656-1-ppalka@redhat.com/
|
||||
|
||||
From 660e4bf9391692acb0bb18ba5eb38e689ae0a8a6 Mon Sep 17 00:00:00 2001
|
||||
Message-ID: <660e4bf9391692acb0bb18ba5eb38e689ae0a8a6.1744212391.git.sam@gentoo.org>
|
||||
From: Patrick Palka <ppalka@redhat.com>
|
||||
Date: Wed, 9 Apr 2025 11:11:04 -0400
|
||||
Subject: [PATCH] c++: alias_ctad_tweaks ICE w/ inherited CTAD [PR119687]
|
||||
|
||||
With inherited CTAD the set of guides may be a two-dimensional overload
|
||||
set (i.e. OVERLOADs containing OVERLOADs) so alias_ctad_tweaks (which
|
||||
also handles the inherited CTAD transformation) needs to use the 2D-aware
|
||||
lkp_iterator instead of ovl_iterator. Actually, we might as well use
|
||||
the more idiomatic lkp_range here.
|
||||
|
||||
PR c++/119687
|
||||
|
||||
gcc/cp/ChangeLog:
|
||||
|
||||
* pt.cc (alias_ctad_tweaks): Use lkp_range / lkp_iterator
|
||||
instead of ovl_iterator.
|
||||
|
||||
gcc/testsuite/ChangeLog:
|
||||
|
||||
* g++.dg/cpp23/class-deduction-inherited8.C: New test.
|
||||
---
|
||||
gcc/cp/pt.cc | 3 +--
|
||||
.../g++.dg/cpp23/class-deduction-inherited8.C | 21 +++++++++++++++++++
|
||||
2 files changed, 22 insertions(+), 2 deletions(-)
|
||||
create mode 100644 gcc/testsuite/g++.dg/cpp23/class-deduction-inherited8.C
|
||||
|
||||
diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc
|
||||
index 0e120c4040ed..352a7f4ed316 100644
|
||||
--- a/gcc/cp/pt.cc
|
||||
+++ b/gcc/cp/pt.cc
|
||||
@@ -30937,9 +30937,8 @@ alias_ctad_tweaks (tree tmpl, tree uguides)
|
||||
tree aguides = NULL_TREE;
|
||||
tree atparms = INNERMOST_TEMPLATE_PARMS (fullatparms);
|
||||
unsigned natparms = TREE_VEC_LENGTH (atparms);
|
||||
- for (ovl_iterator iter (uguides); iter; ++iter)
|
||||
+ for (tree f : lkp_range (uguides))
|
||||
{
|
||||
- tree f = *iter;
|
||||
tree in_decl = f;
|
||||
location_t loc = DECL_SOURCE_LOCATION (f);
|
||||
tree ret = TREE_TYPE (TREE_TYPE (f));
|
||||
diff --git a/gcc/testsuite/g++.dg/cpp23/class-deduction-inherited8.C b/gcc/testsuite/g++.dg/cpp23/class-deduction-inherited8.C
|
||||
new file mode 100644
|
||||
index 000000000000..79fceadd9e1c
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/cpp23/class-deduction-inherited8.C
|
||||
@@ -0,0 +1,21 @@
|
||||
+// PR c++/119687
|
||||
+// { dg-do compile { target c++20 } }
|
||||
+
|
||||
+template <typename> class QFlagsStorage{};
|
||||
+
|
||||
+template <typename Enum> struct QFlagsStorageHelper : QFlagsStorage<Enum> {
|
||||
+ using QFlagsStorage<Enum>::QFlagsStorage;
|
||||
+
|
||||
+public:
|
||||
+ QFlagsStorageHelper(Enum);
|
||||
+};
|
||||
+
|
||||
+template <typename Enum> struct QFlags : public QFlagsStorageHelper<Enum> {
|
||||
+ using Base = QFlagsStorageHelper<Enum>;
|
||||
+ using Base::Base;
|
||||
+ QFlags(Enum);
|
||||
+};
|
||||
+
|
||||
+void f(int flag) {
|
||||
+ QFlags{int{}};
|
||||
+}
|
||||
|
||||
base-commit: 334545194d9023fb9b2f72ee0dcde8af94930f25
|
||||
--
|
||||
2.49.0
|
||||
|
||||
@@ -53,5 +53,7 @@ src_prepare() {
|
||||
toolchain_src_prepare
|
||||
eapply "${FILESDIR}"/${P}-simplify-oops.patch
|
||||
eapply "${FILESDIR}"/${P}-compare-debug.patch
|
||||
eapply "${FILESDIR}"/${P}-de-locale.patch
|
||||
eapply "${FILESDIR}"/${P}-qt.patch
|
||||
eapply_user
|
||||
}
|
||||
Reference in New Issue
Block a user