public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/98545] New: [11 Regression] ICE in write_expression, at cp/mangle.c:3352
@ 2021-01-05 19:26 doko at debian dot org
2021-01-05 20:02 ` [Bug c++/98545] " mpolacek at gcc dot gnu.org
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: doko at debian dot org @ 2021-01-05 19:26 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98545
Bug ID: 98545
Summary: [11 Regression] ICE in write_expression, at
cp/mangle.c:3352
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: doko at debian dot org
Target Milestone: ---
seen with trunk 20210102, building the sopt package
$ cat serial_vs_parallel_padmm.ii
class Matrix {
public:
Matrix();
template <typename OtherDerived> Matrix(OtherDerived);
};
template <class = double> using Vector = Matrix;
class L1TightFrame {
protected:
template <class T0, class T1> void operator()(T0, double, T1);
};
class L1 : L1TightFrame {
public:
template <class... T>
auto tight_frame(T...) -> decltype(operator()(T()...)) {}
};
template <class> class ImagingProximalADMM {
public:
template <class DERIVED> ImagingProximalADMM(DERIVED);
L1 l1_proximal() const;
int operator()() {
int result, __trans_tmp_10;
Vector<> out, __trans_tmp_12;
operator()(out, __trans_tmp_10, __trans_tmp_12);
return result;
}
int operator()(Vector<> &, Vector<> const &, Vector<> const &) const;
template <class T0, class T1>
void l1_proximal(T0 out, double gamma, T1 x) const {
l1_proximal().tight_frame(out, gamma, x);
}
};
template <class SCALAR>
int ImagingProximalADMM<SCALAR>::operator()(Vector<> &, Vector<> const &,
Vector<> const &) const {
int result;
[&](Vector<> out, double gamma, Vector<> x) { l1_proximal(out, gamma, x); };
return result;
}
Vector<> y = ImagingProximalADMM<double>(y)();
$ g++ -c -O0 -std=gnu++11 serial_vs_parallel_padmm.ii
serial_vs_parallel_padmm.ii: In instantiation of ‘decltype
(((L1*)this)->L1TightFrame::operator()(T()...)) L1::tight_frame(T ...) [with T
= {Matrix, double, Matrix}]’:
serial_vs_parallel_padmm.ii:14:8: internal compiler error: in write_expression,
at cp/mangle.c:3352
14 | auto tight_frame(T...) -> decltype(operator()(T()...)) {}
| ^~~~~~~~~~~
0x97242d write_expression
../../src/gcc/cp/mangle.c:3352
0x190cd14 write_expression
../../src/gcc/cp/mangle.c:3449
0x14b393f write_type
../../src/gcc/cp/mangle.c:2343
0x14bafb1 write_bare_function_type
../../src/gcc/cp/mangle.c:2746
0x12bdcb0 mangle_decl_string
../../src/gcc/cp/mangle.c:4001
0x12bcfcc get_mangled_id
../../src/gcc/cp/mangle.c:4022
0x12bcfcc mangle_decl(tree_node*)
../../src/gcc/cp/mangle.c:4060
0x12b4558 decl_assembler_name(tree_node*)
../../src/gcc/tree.c:708
0x12b4558 symtab_node::get_comdat_group_id()
../../src/gcc/cgraph.h:253
0x12b4558 analyze_functions
../../src/gcc/cgraphunit.c:1185
0x17f0543 symbol_table::finalize_compilation_unit()
../../src/gcc/cgraphunit.c:2513
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/98545] [11 Regression] ICE in write_expression, at cp/mangle.c:3352
2021-01-05 19:26 [Bug c++/98545] New: [11 Regression] ICE in write_expression, at cp/mangle.c:3352 doko at debian dot org
@ 2021-01-05 20:02 ` mpolacek at gcc dot gnu.org
2021-01-13 20:45 ` mpolacek at gcc dot gnu.org
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-01-05 20:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98545
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2021-01-05
CC| |jason at gcc dot gnu.org,
| |mpolacek at gcc dot gnu.org
Ever confirmed|0 |1
Priority|P3 |P1
Target Milestone|--- |11.0
Status|UNCONFIRMED |NEW
--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Started with r11-6301.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/98545] [11 Regression] ICE in write_expression, at cp/mangle.c:3352
2021-01-05 19:26 [Bug c++/98545] New: [11 Regression] ICE in write_expression, at cp/mangle.c:3352 doko at debian dot org
2021-01-05 20:02 ` [Bug c++/98545] " mpolacek at gcc dot gnu.org
@ 2021-01-13 20:45 ` mpolacek at gcc dot gnu.org
2021-01-13 21:03 ` mpolacek at gcc dot gnu.org
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-01-13 20:45 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98545
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Candidate fix:
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -3349,7 +3349,8 @@ write_expression (tree expr)
else if (dependent_name (expr))
{
tree name = dependent_name (expr);
- gcc_assert (!IDENTIFIER_ANY_OP_P (name));
+ if (IDENTIFIER_ANY_OP_P (name))
+ write_string ("on");
write_unqualified_id (name);
}
else
but I need to figure out how to test this.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/98545] [11 Regression] ICE in write_expression, at cp/mangle.c:3352
2021-01-05 19:26 [Bug c++/98545] New: [11 Regression] ICE in write_expression, at cp/mangle.c:3352 doko at debian dot org
2021-01-05 20:02 ` [Bug c++/98545] " mpolacek at gcc dot gnu.org
2021-01-13 20:45 ` mpolacek at gcc dot gnu.org
@ 2021-01-13 21:03 ` mpolacek at gcc dot gnu.org
2021-01-13 22:53 ` mpolacek at gcc dot gnu.org
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-01-13 21:03 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98545
--- Comment #3 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
(In reply to Marek Polacek from comment #2)
> but I need to figure out how to test this.
[[gnu::used]] to actually emit the function.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/98545] [11 Regression] ICE in write_expression, at cp/mangle.c:3352
2021-01-05 19:26 [Bug c++/98545] New: [11 Regression] ICE in write_expression, at cp/mangle.c:3352 doko at debian dot org
` (2 preceding siblings ...)
2021-01-13 21:03 ` mpolacek at gcc dot gnu.org
@ 2021-01-13 22:53 ` mpolacek at gcc dot gnu.org
2021-01-22 18:02 ` cvs-commit at gcc dot gnu.org
2021-01-22 18:07 ` mpolacek at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-01-13 22:53 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98545
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |mpolacek at gcc dot gnu.org
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/98545] [11 Regression] ICE in write_expression, at cp/mangle.c:3352
2021-01-05 19:26 [Bug c++/98545] New: [11 Regression] ICE in write_expression, at cp/mangle.c:3352 doko at debian dot org
` (3 preceding siblings ...)
2021-01-13 22:53 ` mpolacek at gcc dot gnu.org
@ 2021-01-22 18:02 ` cvs-commit at gcc dot gnu.org
2021-01-22 18:07 ` mpolacek at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-01-22 18:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98545
--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Marek Polacek <mpolacek@gcc.gnu.org>:
https://gcc.gnu.org/g:25fc4d01a8ed1888e6a65597a3387349eb3c950c
commit r11-6864-g25fc4d01a8ed1888e6a65597a3387349eb3c950c
Author: Marek Polacek <polacek@redhat.com>
Date: Wed Jan 13 16:33:39 2021 -0500
c++: ICE when mangling operator name [PR98545]
r11-6301 added some asserts in mangle.c, and now we trip over one of
them. In particular, it's the one asserting that we didn't get
IDENTIFIER_ANY_OP_P when mangling an expression with a dependent name.
As this testcase shows, it's possible to get that, so turn the assert
into an if and write "on". That changes the mangling in the following
way:
With this patch:
$ c++filt _ZN1i1hIJ1adS1_EEEDTcldtdefpTonclspcvT__EEEDpS2_
decltype (((*this).(operator()))((a)(), (double)(), (a)())) i::h<a, double,
a>(a, double, a)
G++10:
$ c++filt _ZN1i1hIJ1adS1_EEEDTcldtdefpTclspcvT__EEEDpS2_
decltype (((*this).(operator()))((a)(), (double)(), (a)())) i::h<a, double,
a>(a, double, a)
clang++/icc:
$ c++filt _ZN1i1hIJ1adS1_EEEDTclonclspcvT__EEEDpS2_
decltype ((operator())((a)(), (double)(), (a)())) i::h<a, double, a>(a,
double, a)
This is now tracked in PR98756.
gcc/cp/ChangeLog:
PR c++/98545
* mangle.c (write_member_name): Emit
abi_warn_or_compat_version_crosses
warnings regardless of abi_version_at_least.
(write_expression): When the expression is a dependent name
and an operator name, write "on" before writing its name.
gcc/ChangeLog:
PR c++/98545
* doc/invoke.texi: Update C++ ABI Version 15 description.
gcc/testsuite/ChangeLog:
PR c++/98545
* g++.dg/abi/mangle76.C: New test.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/98545] [11 Regression] ICE in write_expression, at cp/mangle.c:3352
2021-01-05 19:26 [Bug c++/98545] New: [11 Regression] ICE in write_expression, at cp/mangle.c:3352 doko at debian dot org
` (4 preceding siblings ...)
2021-01-22 18:02 ` cvs-commit at gcc dot gnu.org
@ 2021-01-22 18:07 ` mpolacek at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-01-22 18:07 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98545
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|ASSIGNED |RESOLVED
--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Fixed.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-01-22 18:07 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-05 19:26 [Bug c++/98545] New: [11 Regression] ICE in write_expression, at cp/mangle.c:3352 doko at debian dot org
2021-01-05 20:02 ` [Bug c++/98545] " mpolacek at gcc dot gnu.org
2021-01-13 20:45 ` mpolacek at gcc dot gnu.org
2021-01-13 21:03 ` mpolacek at gcc dot gnu.org
2021-01-13 22:53 ` mpolacek at gcc dot gnu.org
2021-01-22 18:02 ` cvs-commit at gcc dot gnu.org
2021-01-22 18:07 ` mpolacek at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).