[Bug middle-end/26163] [meta-bug] missed optimization in SPEC (2k17, 2k and 2k6 and 95)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26163 Bug 26163 depends on bug 116064, which changed state. Bug 116064 Summary: [15 Regression] SPEC 2017 523.xalancbmk_r failed to build https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116064 What|Removed |Added Status|RESOLVED|ASSIGNED Resolution|INVALID |---
[Bug c++/116064] [15 Regression] SPEC 2017 523.xalancbmk_r failed to build
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116064 Patrick Palka changed: What|Removed |Added Last reconfirmed||2024-07-24 Status|RESOLVED|ASSIGNED Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Ever confirmed|0 |1 Resolution|INVALID |--- CC||jason at gcc dot gnu.org, ||ppalka at gcc dot gnu.org --- Comment #4 from Patrick Palka --- FWIW -fdelayed-template-parsing seems to originally have been introduced as an MSVC compatibility flag: https://clang.llvm.org/docs/MSVCCompatibility.html#template-instantiation-and-name-lookup It can change the meaning of valid code since it causes unqualified lookup to be performed from the point of instantiation instead of from the template definition: int g(long) { return 0; } template int f() { return g(0); } int g(int) { return 1; } int main() { return f(); // returns 1 with -fdelayed-template-parsing, 0 without } That it also suppresses errors inside uninstantiated templates seems to be a convenient coincidence, so it doesn't seem to be an ideal workaround. I'm going to try downgrading these name lookup errors into permerrors when inside an uninstantiated template, so that they can be worked around by passing -fpermissive (which doesn't change the meaning of valid code).
[Bug c++/115656] [12/13/14 Regression] Templated ctor use rejected in non-deduced context if class template has template template parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115656 --- Comment #11 from Patrick Palka --- Should be fixed on trunk so far.
[Bug c++/115656] [12/13/14 Regression] Templated ctor use rejected in non-deduced context if class template has template template parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115656 --- Comment #10 from Patrick Palka --- *** Bug 115672 has been marked as a duplicate of this bug. ***
[Bug c++/115672] [12/13/14/15 Regression] Incorrect template type parameter deduced in non-deduced context if class template has template template parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115672 Patrick Palka changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |DUPLICATE --- Comment #14 from Patrick Palka --- This too is fixed on trunk by r15-2230-g2861eb34e30973, so let's also call this one a dup of PR115656 *** This bug has been marked as a duplicate of bug 115656 ***
[Bug c++/115656] [12/13/14 Regression] Templated ctor use rejected in non-deduced context if class template has template template parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115656 --- Comment #9 from Patrick Palka --- *** Bug 115778 has been marked as a duplicate of this bug. ***
[Bug c++/115778] Internal compiler error: in keep_template_parm, at cp/pt.cc:10960
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115778 Patrick Palka changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |DUPLICATE --- Comment #5 from Patrick Palka --- It seems this is fixed on trunk by r15-2230-g2861eb34e30973, so let's just call this a dup of PR115656 *** This bug has been marked as a duplicate of bug 115656 ***
[Bug c++/115656] [12/13/14 Regression] Templated ctor use rejected in non-deduced context if class template has template template parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115656 Patrick Palka changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Summary|[12/13/14/15 Regression]|[12/13/14 Regression] |Templated ctor use rejected |Templated ctor use rejected |in non-deduced context if |in non-deduced context if |class template has template |class template has template |template parameter |template parameter Known to work||15.0
[Bug c++/103953] Leak of coroutine return object
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103953 Patrick Palka changed: What|Removed |Added Target Milestone|--- |11.4 CC||ppalka at gcc dot gnu.org
[Bug c++/115783] GCC accepts invalid program involving calling explicit object member function from static member function
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115783 Patrick Palka changed: What|Removed |Added Resolution|--- |FIXED Status|ASSIGNED|RESOLVED --- Comment #4 from Patrick Palka --- Fixed for GCC 14.2
[Bug libstdc++/116038] ambiguous overload in bind_front caused by deducing this
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116038 Patrick Palka changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Ever confirmed|0 |1 Last reconfirmed||2024-07-22 Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org --- Comment #6 from Patrick Palka --- I think we just need to explicitly qualify the ambiguous member lookups: --- a/libstdc++-v3/include/std/functional +++ b/libstdc++-v3/include/std/functional @@ -1015,8 +1015,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION decltype(auto) _S_call(_Tp&& __g, index_sequence<_Ind...>, _CallArgs&&... __call_args) { - return std::invoke(std::forward<_Tp>(__g)._M_fd, - std::get<_Ind>(std::forward<_Tp>(__g)._M_bound_args)..., + return std::invoke(std::forward<_Tp>(__g)._Bind_front::_M_fd, + std::get<_Ind>(std::forward<_Tp>(__g)._Bind_front::_M_bound_args)..., std::forward<_CallArgs>(__call_args)...); } _Bind_back and the other users of deducing this in the stdlib should get audited/fixed accordingly. FWIW the deducing this paper has a couple of sections about this pitfall: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0847r7.html#name-lookup-within-member-functions and the one after that.
[Bug c++/115897] [14/15 Regression] vector_size attribute on alias template has no effect when used in a dependent variable template-id
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115897 --- Comment #9 from Patrick Palka --- Looks like we also need to consider dependent attributes when stripping non-template aliases. Patch posted at https://gcc.gnu.org/pipermail/gcc-patches/2024-July/657706.html, I wonder if it fully handles your use case?
[Bug c++/104981] [coroutines] Internal compiler error when promise object's constructor takes a base class of the object parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104981 Patrick Palka changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Status|NEW |ASSIGNED --- Comment #6 from Patrick Palka --- Since I already had a small patch nearly done, I finished and posted it at https://gcc.gnu.org/pipermail/gcc-patches/2024-July/657920.html
[Bug c++/114104] nodiscard not diagnosed on synthesized operator!=
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114104 Patrick Palka changed: What|Removed |Added Status|NEW |RESOLVED Target Milestone|--- |15.0 Resolution|--- |FIXED Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org --- Comment #6 from Patrick Palka --- Fixed for GCC 15
[Bug c++/115731] Coroutine lambda type is incomplete when selecting promise constructor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115731 Patrick Palka changed: What|Removed |Added Last reconfirmed||2024-07-18 CC||ppalka at gcc dot gnu.org Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #1 from Patrick Palka --- Interesting, confirmed. It seems only non-generic lambdas are affected, generic lambdas aren't affected because the coroutine transformation is performed on the instantiated operator() well after completion of the lambda type.
[Bug c++/110855] std::source_location doesn't work with C++20 coroutine
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110855 Patrick Palka changed: What|Removed |Added Known to work||14.1.0, 15.0 CC||ppalka at gcc dot gnu.org --- Comment #4 from Patrick Palka --- Seems to work since r14-4140. We should probably add a regression test before closing this.
[Bug c++/109227] coroutines: ICE in tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.cc:11067
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109227 Patrick Palka changed: What|Removed |Added CC||tobi at gcc dot gnu.org --- Comment #10 from Patrick Palka --- *** Bug 112557 has been marked as a duplicate of this bug. ***
[Bug c++/112557] ICE with coroutines in build_special_member_call, at cp/call.cc:11093
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112557 Patrick Palka changed: What|Removed |Added Resolution|--- |DUPLICATE CC||ppalka at gcc dot gnu.org Status|UNCONFIRMED |RESOLVED --- Comment #2 from Patrick Palka --- GCC 14 accepts since r14-8437, so let's call this a dup of PR109227 *** This bug has been marked as a duplicate of bug 109227 ***
[Bug c++/115550] [coroutines] Reference to reference in promise constructor template argument corresponding to coroutine *this
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115550 Patrick Palka changed: What|Removed |Added Status|UNCONFIRMED |NEW Depends on||104981 Last reconfirmed||2024-07-17 Ever confirmed|0 |1 CC||ppalka at gcc dot gnu.org --- Comment #1 from Patrick Palka --- Confirmed, thanks for the detailed bug report. > This may have the same underlying cause as bug 104981. It would not be > surprising if some internal compiler code removed the outer reference and > expected to be left with a type that is not a reference. I can't preclude > this being just a coincidence, however. You're spot on, the proposed patch in PR104981#c3 seems to also fix this. Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104981 [Bug 104981] [coroutines] Internal compiler error when promise object's constructor takes a base class of the object parameter
[Bug c++/115897] [14/15 Regression] vector_size attribute on alias template has no effect when used in a dependent variable template-id
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115897 Patrick Palka changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #6 from Patrick Palka --- Fixed for GCC 14.2
[Bug c++/104981] [coroutines] Internal compiler error when promise object's constructor takes a base class of the object parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104981 Patrick Palka changed: What|Removed |Added CC||ppalka at gcc dot gnu.org --- Comment #3 from Patrick Palka --- The problem seems to be that we're passing the unlowered reference 'this_ref' to the ctor call, which overload resolution doesn't expect. Using convert_from_reference fixes this: diff --git a/gcc/cp/coroutines.cc b/gcc/cp/coroutines.cc index 97bc211ff67..31d0cb7fd16 100644 --- a/gcc/cp/coroutines.cc +++ b/gcc/cp/coroutines.cc @@ -4851,6 +4851,7 @@ morph_fn_to_coro (tree orig, tree *resumer, tree *destroyer) this_ref = convert_to_reference (rt, this_ref, CONV_STATIC, LOOKUP_NORMAL, NULL_TREE, tf_warning_or_error); + this_ref = convert_from_reference (this_ref); vec_safe_push (promise_args, this_ref); } else if (parm.rv_ref) or equivalently, removing the call to convert_to_reference above which seems to be unneeded?
[Bug c++/109464] gcc does not instantiate constructor for explicitly instantiated template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109464 Patrick Palka changed: What|Removed |Added See Also||https://gcc.gnu.org/bugzill ||a/show_bug.cgi?id=113208 CC||ppalka at gcc dot gnu.org --- Comment #6 from Patrick Palka --- It seems this is fixed on trunk since r15-521-g6ad7ca1bb90573? I see that trunk now emits the shallow() ctor: shallow::shallow() [base object constructor]: mov DWORD PTR [rdi], 0 ret use_shallow::s_zstr: .zero 4
[Bug c++/115897] [14/15 Regression] vector_size attribute on alias template has no effect when used in a dependent variable template-id
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115897 Patrick Palka changed: What|Removed |Added Target Milestone|--- |14.2 Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Known to fail||14.1.0, 15.0 Known to work||13.3.0 Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2024-07-12 Ever confirmed|0 |1 Summary|[14/15 Regression] |[14/15 Regression] |vector_si |vector_size attribute on ||alias template has no ||effect when used in a ||dependent variable ||template-id --- Comment #3 from Patrick Palka --- ... which means the comment #2 testcase using a class instead of variable template-id has been failing for much longer, and r14-2170 just caused this preexisting issue to affect variable template-ids too. The problem seems to be that we're stripping the alias template-id _Vp<_Tp> to _Tp too soon, before we have an argument for _Tp, because we wrongly think the two types are equivalent, but they're not due to the attribute. complex_alias_template_id probably should return true for alias attributes that have an attribute. A workaround is to give _Vp a dummy defaulted template parameter, e.g. template using _Vp [[gnu::vector_size(16)]] = int;
[Bug c++/115897] [14/15 Regression] vector_si
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115897 Patrick Palka changed: What|Removed |Added Summary|[14/15 Regression] |[14/15 Regression] |__is_same fails for vector |vector_si |builtin | CC||ppalka at gcc dot gnu.org --- Comment #2 from Patrick Palka --- Started with r14-2170-g4cf64d9cc2faf4, which means template struct is_same { static constexpr bool value = __is_same(_Tp, _Up); }; template using _Vp [[gnu::vector_size(16)]] = _Tp; template struct Test { static_assert(not is_same<_Tp, _Vp<_Tp>>::value); }; Test x;
[Bug c++/111890] ICE in tsubst_friend_function with friend function declared inside a concept constrainted class inside a template class
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111890 Patrick Palka changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org CC||ppalka at gcc dot gnu.org Status|NEW |ASSIGNED
[Bug c++/104255] parsing function signature fails when it uses a function parameter outside of an unevaluated context
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104255 Patrick Palka changed: What|Removed |Added CC||linuxnyasha at tutanota dot com --- Comment #9 from Patrick Palka --- *** Bug 115809 has been marked as a duplicate of this bug. ***
[Bug c++/115809] paramater packed of function argument inside decltype of trailing return type is rejected
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115809 Patrick Palka changed: What|Removed |Added Status|NEW |RESOLVED CC||ppalka at gcc dot gnu.org Resolution|--- |DUPLICATE --- Comment #3 from Patrick Palka --- dup *** This bug has been marked as a duplicate of bug 104255 ***
[Bug c++/115783] GCC accepts invalid program involving calling explicit object member function from static member function
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115783 Patrick Palka changed: What|Removed |Added Status|NEW |ASSIGNED Target Milestone|--- |14.2 CC||ppalka at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org
[Bug c++/115296] CTAD fails
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115296 Patrick Palka changed: What|Removed |Added CC||ppalka at gcc dot gnu.org Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org
[Bug c++/115672] [11/12/13/14/15 Regression] Incorrect template type parameter deduced in non-deduced context if class template has template template parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115672 Patrick Palka changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Status|NEW |ASSIGNED
[Bug c++/115778] Internal compiler error: in keep_template_parm, at cp/pt.cc:10960
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115778 Patrick Palka changed: What|Removed |Added See Also||https://gcc.gnu.org/bugzill ||a/show_bug.cgi?id=115672 CC||ppalka at gcc dot gnu.org --- Comment #4 from Patrick Palka --- Likely related to PR115672
[Bug c++/115672] [11/12/13/14/15 Regression] Incorrect template type parameter deduced in non-deduced context if class template has template template parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115672 Patrick Palka changed: What|Removed |Added CC||ppalka at gcc dot gnu.org Keywords|needs-bisection | --- Comment #12 from Patrick Palka --- Started with r11-4859 as well
[Bug c++/115364] [11/12/13/14/15 Regression] ICE-on-invalid when calling non-const template member on const object
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115364 Patrick Palka changed: What|Removed |Added CC||ppalka at gcc dot gnu.org Resolution|--- |DUPLICATE Status|ASSIGNED|RESOLVED --- Comment #3 from Patrick Palka --- Started with r12-3346.. looks like this is basically a dup of PR106760. *** This bug has been marked as a duplicate of bug 106760 ***
[Bug c++/106760] [12/13/14/15 Regression] ICE: tree check: expected function_decl, have template_decl in get_fndecl_argument_location, at cp/call.cc:7801
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106760 Patrick Palka changed: What|Removed |Added CC||blubban at gmail dot com --- Comment #4 from Patrick Palka --- *** Bug 115364 has been marked as a duplicate of this bug. ***
[Bug c++/115504] [14/15 Regression] Wrong decltype result for a captured reference inside lambda since r14-5330
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115504 Patrick Palka changed: What|Removed |Added Resolution|--- |FIXED Status|ASSIGNED|RESOLVED --- Comment #5 from Patrick Palka --- Fixed for GCC 14.2, thanks for the bug report.
[Bug c++/115198] Class template argument deduction fails for copy ctor when used with an alias template if the aliased class template has explicitly defaulted copy ctor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115198 Patrick Palka changed: What|Removed |Added Resolution|--- |FIXED Status|ASSIGNED|RESOLVED --- Comment #7 from Patrick Palka --- Fixed for GCC 14.2, thanks for the bug report.
[Bug c++/115358] [13 Regression] template argument deduction/substitution failed in generic lambda function use of static constexpr array type whos initializer defines the size since r13-2540
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115358 Patrick Palka changed: What|Removed |Added Summary|[13/14/15 Regression] |[13 Regression] template |template argument |argument |deduction/substitution |deduction/substitution |failed in generic lambda|failed in generic lambda |function use of static |function use of static |constexpr array type whos |constexpr array type whos |initializer defines the |initializer defines the |size since r13-2540 |size since r13-2540 --- Comment #10 from Patrick Palka --- Fixed for GCC 14.2 so far.
[Bug c++/67491] [meta-bug] concepts issues
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67491 Bug 67491 depends on bug 115596, which changed state. Bug 115596 Summary: Default arguments are erroneously allowed for parameters of a requires expression https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115596 What|Removed |Added Status|NEW |RESOLVED Resolution|--- |DUPLICATE
[Bug c++/115596] Default arguments are erroneously allowed for parameters of a requires expression
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115596 Patrick Palka changed: What|Removed |Added CC||ppalka at gcc dot gnu.org Status|NEW |RESOLVED Resolution|--- |DUPLICATE --- Comment #2 from Patrick Palka --- dup *** This bug has been marked as a duplicate of bug 99511 ***
[Bug c++/99511] default arguments are allowed for parameters of a requires expression
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99511 Patrick Palka changed: What|Removed |Added CC||fchelnokov at gmail dot com --- Comment #2 from Patrick Palka --- *** Bug 115596 has been marked as a duplicate of this bug. ***
[Bug c++/115583] [14/15 Regression] C++23: Call to consteval function in `if consteval` immediate function context rejected at -O1 since r14-4140
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115583 Patrick Palka changed: What|Removed |Added Known to fail||14.1.0, 15.0 Known to work||13.3.0 CC||mpolacek at gcc dot gnu.org, ||ppalka at gcc dot gnu.org Target Milestone|--- |14.2 Summary|C++23: Call to consteval|[14/15 Regression] C++23: |function in `if consteval` |Call to consteval function |immediate function context |in `if consteval` immediate |rejected at -O1 |function context rejected ||at -O1 since r14-4140 --- Comment #2 from Patrick Palka --- Started with r14-4140
[Bug c++/115561] [14/15 Regression] ICE checking constraints when a local class is involved since r14-9659
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115561 Patrick Palka changed: What|Removed |Added Known to fail||14.1.0, 15.0 CC||mpolacek at gcc dot gnu.org, ||ppalka at gcc dot gnu.org Keywords||ice-on-valid-code Status|UNCONFIRMED |NEW Known to work||13.3.0 Last reconfirmed||2024-06-20 Target Milestone|--- |14.2 Ever confirmed|0 |1 Summary|[14/15 Regression] ICE |[14/15 Regression] ICE |checking constraints when a |checking constraints when a |local class is involved |local class is involved ||since r14-9659 --- Comment #1 from Patrick Palka --- Confirmed, seems the ICE started with r14-9659.
[Bug c++/115358] [13/14/15 Regression] template argument deduction/substitution failed in generic lambda function use of static constexpr array type whos initializer defines the size since r13-2540
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115358 Patrick Palka changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Status|NEW |ASSIGNED --- Comment #7 from Patrick Palka --- Non-constexpr testcase exhibiting an even older regression (since r8-2720-gf44a8dd56f5bfb): template void f(int (&)[N]); template struct A { static int STR[]; A() { [](auto){ f(STR); }; } }; template int A::STR[] = {1,2,3}; A a;
[Bug c++/115504] [14/15 Regression] Wrong decltype result for a captured reference inside lambda since r14-5330
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115504 Patrick Palka changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org
[Bug c++/99678] [concepts] requires-clause allows undeclared identifier
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99678 Patrick Palka changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #6 from Patrick Palka --- Fixed for GCC 14.2, thanks for the bug report.
[Bug c++/115239] [14 Regression] ICE: Segmentation fault with ambiguous function call in some cases (`const char*` vs `char` with `long` vs `unsigned`) since r14-6522
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115239 Patrick Palka changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #7 from Patrick Palka --- Fixed for GCC 14.2, thanks for the bug report.
[Bug c++/115283] [14 Regression] "used but never defined" with extern templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115283 Patrick Palka changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #6 from Patrick Palka --- Fixed for GCC 14.2, thanks for the bug report.
[Bug c++/115239] [14 Regression] ICE: Segmentation fault with ambiguous function call in some cases (`const char*` vs `char` with `long` vs `unsigned`) since r14-6522
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115239 Patrick Palka changed: What|Removed |Added Status|NEW |ASSIGNED Summary|[14/15 Regression] ICE: |[14 Regression] ICE: |Segmentation fault with |Segmentation fault with |ambiguous function call in |ambiguous function call in |some cases (`const char*` |some cases (`const char*` |vs `char` with `long` vs|vs `char` with `long` vs |`unsigned`) since r14-6522 |`unsigned`) since r14-6522 Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org
[Bug c++/99678] [concepts] requires-clause allows undeclared identifier
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99678 Patrick Palka changed: What|Removed |Added Target Milestone|--- |14.2
[Bug c++/115283] [14 Regression] "used but never defined" with extern templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115283 Patrick Palka changed: What|Removed |Added Summary|[14/15 Regression] "used|[14 Regression] "used but |but never defined" with |never defined" with extern |extern templates|templates Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Keywords||link-failure Status|NEW |ASSIGNED
[Bug c++/67491] [meta-bug] concepts issues
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67491 Bug 67491 depends on bug 115429, which changed state. Bug 115429 Summary: requires clause wrongly accepts unqualified access to inherited static members https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115429 What|Removed |Added Status|NEW |RESOLVED Resolution|--- |DUPLICATE
[Bug c++/99678] [concepts] requires-clause allows undeclared identifier
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99678 Patrick Palka changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Status|UNCONFIRMED |ASSIGNED Ever confirmed|0 |1 Last reconfirmed||2024-06-12
[Bug c++/99678] [concepts] requires-clause allows undeclared identifier
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99678 Patrick Palka changed: What|Removed |Added CC||eratchias at gmail dot com --- Comment #3 from Patrick Palka --- *** Bug 115429 has been marked as a duplicate of this bug. ***
[Bug c++/115429] requires clause wrongly accepts unqualified access to inherited static members
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115429 Patrick Palka changed: What|Removed |Added Status|NEW |RESOLVED CC||ppalka at gcc dot gnu.org Resolution|--- |DUPLICATE --- Comment #2 from Patrick Palka --- This is essentially a dup of PR99678 -- we should have rejected the requires-clause at parse time since unqualified lookup for 'con' failed, but because we didn't we naturally ended up repeating unqualified lookup at instantiation time which succeeded. *** This bug has been marked as a duplicate of bug 99678 ***
[Bug c++/115378] [14/15 Regression] ICE with lambda function as a default template argument with variadic templates in some cases
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115378 Patrick Palka changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #9 from Patrick Palka --- Fixed for GCC 14.2
[Bug c++/115378] [14/15 Regression] ICE with lambda function as a default template argument with variadic templates in some cases
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115378 Patrick Palka changed: What|Removed |Added Status|NEW |ASSIGNED Keywords|needs-bisection | CC||ppalka at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org --- Comment #6 from Patrick Palka --- Started with r14-9943.
[Bug c++/115223] [15 regression] ICE when building KDE kontrast with LTO (error: ‘TYPE_CANONICAL’ has different ‘TYPE_CANONICAL’) since r15-779-g3c98d06a9016a0
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115223 Patrick Palka changed: What|Removed |Added Resolution|--- |FIXED Status|UNCONFIRMED |RESOLVED Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org --- Comment #5 from Patrick Palka --- Fixed
[Bug c++/115198] Class template argument deduction fails for copy ctor when used with an alias template if the aliased class template has explicitly defaulted copy ctor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115198 Patrick Palka changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Status|NEW |ASSIGNED CC||ppalka at gcc dot gnu.org Target Milestone|--- |14.2
[Bug c++/115159] internal compiler error: in nothrow_spec_p, at cp/except.cc:1206 when using modules and QCoreApplication
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115159 Patrick Palka changed: What|Removed |Added Status|NEW |ASSIGNED Known to fail||14.1.0 Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Known to work||15.0 --- Comment #5 from Patrick Palka --- Should be fixed on trunk now, sadly the fix isn't suitable for backporting.
[Bug c++/115139] [14 Regression] Enum inside variadic template class can't define one of self with usage another value from this enum
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115139 Patrick Palka changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #4 from Patrick Palka --- Fixed for GCC 14.2, thanks for the bug report.
[Bug c++/115159] internal compiler error: in nothrow_spec_p, at cp/except.cc:1206 when using modules and QCoreApplication
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115159 Patrick Palka changed: What|Removed |Added Ever confirmed|0 |1 Last reconfirmed|2024-05-19 00:00:00 |2024-05-21 Status|UNCONFIRMED |NEW CC||ppalka at gcc dot gnu.org --- Comment #3 from Patrick Palka --- Confirmed, thanks for the reproducer. Reduced: $ cat 115159_a.H struct QDebug; template void f(T); template struct QList { QDebug operator<(QList ) noexcept(noexcept(f(other))); QDebug operator>(QList ) noexcept(noexcept(f(other))); }; struct QObjectData { QList children; }; struct QIODevice { QObjectData d_ptr; }; struct QDebug { QDebug(QIODevice); }; $ cat 115159_b.C import "115159_a.H"; $ g++ -fno-module-lazy -fmodules-ts -std=c++20 115159_{a.H,b.C} 115159_b.C:1:22: internal compiler error: in nothrow_spec_p, at cp/except.cc:1202
[Bug c++/115114] aggregate initialization with parens fails when there is a base class
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115114 Patrick Palka changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org CC||ppalka at gcc dot gnu.org Target Milestone|--- |14.2 Resolution|--- |FIXED Status|NEW |RESOLVED --- Comment #4 from Patrick Palka --- Fixed for GCC 14.2, thanks for the bug report.
[Bug c++/114994] [14/15 Regression] fmtlib named argument compiler error introduced in g++-14.1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114994 Patrick Palka changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #8 from Patrick Palka --- Fixed for GCC 14.2, thanks for the bug report.
[Bug libstdc++/115126] TU-local entity exposures in libstdc++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115126 Patrick Palka changed: What|Removed |Added CC||ppalka at gcc dot gnu.org --- Comment #1 from Patrick Palka --- For __is_unique_ptr, seems we could just remove it since it isn't actually used anywhere.
[Bug c++/115139] [14 Regression] Enum inside variadic template class can't define one of self with usage another value from this enum
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115139 Patrick Palka changed: What|Removed |Added Target Milestone|--- |14.2 Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Ever confirmed|0 |1 Last reconfirmed||2024-05-17 Status|UNCONFIRMED |ASSIGNED Keywords||ice-on-valid-code Summary|Enum inside variadic|[14 Regression] Enum inside |template class can't define |variadic template class |one of self with usage |can't define one of self |another value from this |with usage another value |enum|from this enum CC||ppalka at gcc dot gnu.org --- Comment #1 from Patrick Palka --- Confirmed, started with r14-4796-g3e3d73ed5e85e7. Interestingly r15-123-gf04dc89a991ddc made us accept this testcase on trunk, so this is a 14 regression only.
[Bug c++/114850] co_await a async function which result type is std::unique_ptr<...> or shared_ptr in a initializer list causes ICE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114850 Patrick Palka changed: What|Removed |Added CC||ppalka at gcc dot gnu.org Status|UNCONFIRMED |RESOLVED Resolution|--- |DUPLICATE --- Comment #4 from Patrick Palka --- (In reply to Jeremy Pewterschmidt from comment #3) > This issue is no longer reproducible in GCC 14. > Should I mark this as `RESOLVED` ? Yes, the ICE disappeared after r14-8437-g44868e7298de50, so I reckon this is a dup of 109227. *** This bug has been marked as a duplicate of bug 109227 ***
[Bug c++/109227] coroutines: ICE in tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.cc:11067
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109227 Patrick Palka changed: What|Removed |Added CC||jeremypewterschmidt at gmail dot c ||om --- Comment #9 from Patrick Palka --- *** Bug 114850 has been marked as a duplicate of this bug. ***
[Bug c++/86933] GCC fails to recognize specialization of variadic non-type template parameter declared with `auto`
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86933 Patrick Palka changed: What|Removed |Added CC||420 at zerberste dot es --- Comment #1 from Patrick Palka --- *** Bug 115079 has been marked as a duplicate of this bug. ***
[Bug c++/115079] unexpected error with partial specialization of template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115079 Patrick Palka changed: What|Removed |Added Resolution|--- |DUPLICATE CC||ppalka at gcc dot gnu.org Status|NEW |RESOLVED --- Comment #1 from Patrick Palka --- dup of PR86933 I think *** This bug has been marked as a duplicate of bug 86933 ***
[Bug c++/115061] Compiling gcc failed when using clang 16.0.6
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115061 Patrick Palka changed: What|Removed |Added Target Milestone|--- |15.0 CC||ppalka at gcc dot gnu.org
[Bug c++/113332] [12/13 regression] checking ICE when building fcitx-5.1.6
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113332 Patrick Palka changed: What|Removed |Added Resolution|--- |FIXED Status|ASSIGNED|RESOLVED Target Milestone|12.4|14.0 --- Comment #6 from Patrick Palka --- It doesn't seem worth backporitng this relatively risky patch just to fix a checking-only assertion failure that we otherwise gracefully handle.
[Bug c++/112658] [12/13 Regression] ICE: finish_expr_stmt with casting an temp array to pointer and constructor call
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112658 Patrick Palka changed: What|Removed |Added Resolution|--- |FIXED Target Milestone|12.4|14.0 Status|ASSIGNED|RESOLVED --- Comment #9 from Patrick Palka --- Not backporting any of these fixes since this never properly worked -- it was either wrong-code, rejects-valid or (most recently) ice-on-valid -- and so not really a regression.
[Bug c++/114903] constraint of CTAD alias deduction guide is evaluated on a wrong type
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114903 Patrick Palka changed: What|Removed |Added Resolution|--- |FIXED Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Status|UNCONFIRMED |RESOLVED Target Milestone|--- |14.2 CC||ppalka at gcc dot gnu.org --- Comment #3 from Patrick Palka --- Fixed for GCC 14.2
[Bug c++/114901] GCC internal_error on CTAD alias
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114901 Patrick Palka changed: What|Removed |Added Target Milestone|--- |14.2 CC||ppalka at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Resolution|--- |FIXED Status|NEW |RESOLVED --- Comment #7 from Patrick Palka --- Fixed for GCC 14.2
[Bug c++/114974] CTAD; templated inner class of template class seems to be handled incorrectly
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114974 Patrick Palka changed: What|Removed |Added Target Milestone|--- |14.2 Resolution|--- |FIXED Status|NEW |RESOLVED Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org CC||ppalka at gcc dot gnu.org --- Comment #4 from Patrick Palka --- Fixed for GCC 14.2, thanks for the reports.
[Bug c++/114990] Compiler errors in compiling a module-based app
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114990 --- Comment #3 from Patrick Palka --- I reckon it's not something we can fix/implement in a point release of GCC 14, but hopefully for 15...
[Bug c++/114994] [14/15 Regression] fmtlib named argument compiler error introduced in g++-14.1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114994 Patrick Palka changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Status|NEW |ASSIGNED --- Comment #5 from Patrick Palka --- A bit more reduced, demostrating it's not specific to UDLs: struct udl_arg { udl_arg operator=(int); }; void g(udl_arg&&); template void h() { udl_arg x; g(x=42); } int main() { h(); }
[Bug c++/114990] Compiler errors in compiling a module-based app
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114990 Patrick Palka changed: What|Removed |Added CC||ppalka at gcc dot gnu.org Depends on||99000 --- Comment #1 from Patrick Palka --- After preprocessing, it seems Main.cpp basically boils down to: import CompilerVersions; // #1 #include// #2 import TypeTraits; // #3 int main() { return 0; } The issue here seems to be the #include appearing after the import of CompilerVersions which (indirectly) also includes (in its GMF). GCC currently supports import-after-include GMF merging (so #2 followed by #3 is OK) not but include-after-import. See also https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Modules.html So one workaround would be to arrange that all #includes come before imports which might include the same thing. Another workaround would be to compile the problematic headers ( in this case) as a header unit so that #includes thereof implicitly translated into imports, via e.g. g++ -fmodules-ts -x c++-system-header type_traits Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99000 [Bug 99000] [modules] merging of textual redefinitions: declaration std::__copy_move_a2 conflicts with import
[Bug c++/103524] [meta-bug] modules issue
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103524 Bug 103524 depends on bug 114889, which changed state. Bug 114889 Summary: [modules] ICE in friend_accessible_p with imported class template specialization befriending class template https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114889 What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED
[Bug c++/114889] [modules] ICE in friend_accessible_p with imported class template specialization befriending class template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114889 Patrick Palka changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #3 from Patrick Palka --- Fixed for GCC 14.2
[Bug c++/99678] [concepts] requires-clause allows undeclared identifier
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99678 Patrick Palka changed: What|Removed |Added Summary|c++20 trailing requires |[concepts] requires-clause |clauses allows undeclared |allows undeclared |identifier |identifier CC||ppalka at gcc dot gnu.org --- Comment #2 from Patrick Palka --- >From PR114946: (In reply to Nathaniel Shead from comment #0) > The following sample compiles fine with 'g++ -std=c++20 -pedantic-errors': > > template > requires > struct S {}; > > template > requires > void foo() {} > > Note that '' has not been declared or defined. Both MSVC and Clang > complain about the undeclared identifier. GCC does error if we attempt to > instantiate either of these specialisations, but they always (silently) lose > to a better match: > > template struct S {}; > template requires struct S {}; > > template void foo() {} > template requires void foo() {} > > int main() { > S x; > foo(); > }
[Bug c++/99678] c++20 trailing requires clauses allows undeclared identifier
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99678 Patrick Palka changed: What|Removed |Added CC||nshead at gcc dot gnu.org --- Comment #1 from Patrick Palka --- *** Bug 114946 has been marked as a duplicate of this bug. ***
[Bug c++/114946] [concepts] No error for invalid requires constraint in declaration
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114946 Patrick Palka changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||ppalka at gcc dot gnu.org Resolution|--- |DUPLICATE --- Comment #1 from Patrick Palka --- dup *** This bug has been marked as a duplicate of bug 99678 ***
[Bug c++/114913] "verify_gimple failed" due to addition of two constexpr strings
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114913 Patrick Palka changed: What|Removed |Added See Also|https://gcc.gnu.org/bugzill |https://gcc.gnu.org/bugzill |a/show_bug.cgi?id=110802|a/show_bug.cgi?id=110822 --- Comment #8 from Patrick Palka --- PR110822 rather seems closely related if not a dup.
[Bug c++/114913] "verify_gimple failed" due to addition of two constexpr strings
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114913 Patrick Palka changed: What|Removed |Added See Also||https://gcc.gnu.org/bugzill ||a/show_bug.cgi?id=110802 CC||ppalka at gcc dot gnu.org --- Comment #7 from Patrick Palka --- PR110802
[Bug c++/113141] [13 Regression] ICE on conversion to reference in aggregate initialization
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113141 Patrick Palka changed: What|Removed |Added Resolution|--- |FIXED Status|ASSIGNED|RESOLVED --- Comment #12 from Patrick Palka --- Fixed for 13.3/14.
[Bug c++/114630] [14/15 Regression] [modules] building module with submodule causes corrupt gcm
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114630 --- Comment #7 from Patrick Palka --- The following seems to minimally fix it: diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index c35e70b8cb8..57ccaec5ebd 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -6798,7 +6798,7 @@ trees_in::core_vals (tree t) body) anyway. */ decl = maybe_duplicate (decl); - if (!DECL_P (decl) || DECL_CHAIN (decl)) + if (!DECL_P (decl) || (*chain && *chain != decl)) { set_overrun (); break; In 114630_c.C end up streaming the definition of _M_do_parse() twice, once from modB and once from the transitive import of modA (which seems wasteful). The second time around the chain of local types _M_do_parse::A/B get streamed as simple back references and therefore on stream-in they'll already have DECL_CHAIN properly set, so we shouldn't give up just because DECL_CHAIN is already set. Rather, only give up if DECL_CHAIN of the previous decl isn't what we expect it to be, i.e. either empty or what we want to set it to. This raises the question, why do we stream the definition of _M_do_parse() from the GMF of modA even though the same definition is already reachable (and has been deduplicated) from the import of modB? Seems like this is something we could/should avoid.
[Bug c++/103524] [meta-bug] modules issue
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103524 Bug 103524 depends on bug 106820, which changed state. Bug 106820 Summary: [modules] ICE in function_and_variable_visibility with modules and weakref https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106820 What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED
[Bug c++/99227] [meta-bug] [modules] Bugs relating to header-units of STL header files
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99227 Bug 99227 depends on bug 106820, which changed state. Bug 106820 Summary: [modules] ICE in function_and_variable_visibility with modules and weakref https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106820 What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED
[Bug c++/106820] [modules] ICE in function_and_variable_visibility with modules and weakref
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106820 Patrick Palka changed: What|Removed |Added Resolution|--- |FIXED Status|NEW |RESOLVED Target Milestone|--- |14.0 --- Comment #11 from Patrick Palka --- Fixed for GCC 14(?)
[Bug c++/108059] internal compiler error: in tsubst_copy, at cp/pt.c:16425
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108059 --- Comment #6 from Patrick Palka --- FWIW a workaround for most valid code is to replace e.g. ignore_index_t, where v is the problematic NTTP argument, with ignore_index_t.
[Bug c++/114889] [modules] ICE in friend_accessible_p with imported class template specialization befriending class template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114889 Patrick Palka changed: What|Removed |Added Target Milestone|--- |14.2
[Bug c++/114888] [14/15 Regression] ICE when cross compiling binutils
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114888 Patrick Palka changed: What|Removed |Added Resolution|--- |FIXED Status|ASSIGNED|RESOLVED --- Comment #9 from Patrick Palka --- Fixed.
[Bug c++/114888] [14/15 Regression] ICE when cross compiling binutils
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114888 --- Comment #6 from Patrick Palka --- Yeah I think the TREE_TYPE of a compound type should never be null, at least as far as type dependence is concerned.
[Bug c++/114888] [14/15 Regression] ICE when cross compiling binutils
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114888 Patrick Palka changed: What|Removed |Added Summary|[14 Regression] ICE when|[14/15 Regression] ICE when |cross compiling binutils|cross compiling binutils Keywords||ice-checking, ||ice-on-valid-code Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Status|NEW |ASSIGNED --- Comment #3 from Patrick Palka --- Seems we're missing a dependence check in the sizeof / sizeof code: diff --git a/gcc/cp/typeck.cc b/gcc/cp/typeck.cc index e5a52dc2b39..284f6e29e36 100644 --- a/gcc/cp/typeck.cc +++ b/gcc/cp/typeck.cc @@ -5500,7 +5500,7 @@ cp_build_binary_op (const op_location_t , type0 = TREE_TYPE (type0); if (!TYPE_P (type1)) type1 = TREE_TYPE (type1); - if (type0 + if (type0 && type1 && INDIRECT_TYPE_P (type0) && same_type_p (TREE_TYPE (type0), type1)) {
[Bug c++/114889] [modules] ICE in friend_accessible_p with imported class template specialization befriending class template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114889 Patrick Palka changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Blocks||103524 Ever confirmed|0 |1 Keywords||ice-checking, rejects-valid Last reconfirmed||2024-04-29 Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103524 [Bug 103524] [meta-bug] modules issue
[Bug c++/114889] New: [modules] ICE in friend_accessible_p with imported class template specialization befriending class template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114889 Bug ID: 114889 Summary: [modules] ICE in friend_accessible_p with imported class template specialization befriending class template Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ppalka at gcc dot gnu.org Target Milestone: --- $ cat testcase_a.C export module mymod; template struct _Hashtable; export template struct _Map_base { void f() { _Hashtable<_Key, _Val> __h; __h._M_hash_code(0); } }; template struct _Hashtable { template friend struct _Map_base; protected: void _M_hash_code(int); }; _Hashtable m; $ cat testcase_b.C import mymod; int main() { _Map_base m; m.f(); } $ g++ -fmodules-ts testcase_* In module mymod, imported at testcase_b.C:1: testcase_a.C: In instantiation of ‘void _Map_base@mymod<_Key, _Val>::f() [with _Key = int; _Val = int]’: testcase_b.C:5:6: required from here 5 | m.f(); | ~~~^~ testcase_a.C:11:21: internal compiler error: in friend_accessible_p, at cp/search.cc:803 11 | __h._M_hash_code(0); | ^~~
[Bug libstdc++/111258] std::string cannot to be moved in constant evaluated expression
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111258 --- Comment #4 from Patrick Palka --- Many of these testcases (from here and the related PRs) are now accepted by GCC 14 after r14-10134.
[Bug c++/114630] [14/15 Regression] [modules] building module with submodule causes corrupt gcm
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114630 --- Comment #6 from Patrick Palka --- (In reply to Nathaniel Shead from comment #5) > That said, my version doesn't actually solve the underlying issue: my > adjustment of your testcase to put instantiations into the module purview > (and force emission there) still gives the same error for me. So it sounds > like there's something else being affected by DECL_MODULE_PURVIEW_P being > set when maybe it shouldn't for an explicit specialisation. Interesting, I guess one difference with your approach is that for 114630_b.C we'll still end up installing the imported instantiations of _M_do_parse()::A/B instead of instantiating them ourselves (within the GMF), and so DECL_MODULE_IMPORT_P will be set on these local type instantiations, and yet not on _M_do_parse() because this function specialization was formed (but not instantiated) within the GMF. That seems like a weird inconsistency, that DECL_MODULE_IMPORT_P is set on the local types but not on the containing function..
[Bug c++/114630] [14/15 Regression] [modules] building module with submodule causes corrupt gcm
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114630 --- Comment #4 from Patrick Palka --- (In reply to Patrick Palka from comment #3) > And in 114630_c.C we no longer try to stream in the definition > of _M_do_parse() twice, for some reason. Oops, looks like we still stream in the definition twice with the fix but the local types therein get deduplicated correctly now.