https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95292
Bug ID: 95292
Summary: internal compiler error
Product: gcc
Version: 10.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: tilin97 at yandex dot ru
Target Milestone: ---
the following code causes an internal compiler error on versions from 7.1
onwards
#include <functional>
class A {
public:
bool a;
static inline std::function<void(A&)> foo = std::function<void(A&)>([]
(A& o) {
bool A::*ptr = &A::a;
o.*ptr = true;
});
};
int main() {
A a;
A::foo(a);
}
gcc version 10.1.0 (Ubuntu 10.1.0-2ubuntu1~18.04)
===
gcc -std=c++17 main.cpp
during RTL pass: expand
main.cpp: In lambda function:
main.cpp:7:12: internal compiler error: in expand_expr_real_2, at expr.c:8538
7 | bool A::*ptr = &A::a;
===
OR
===
gcc -std=c++17 -O2 main.cpp
during IPA pass: icf
main.cpp:15:1: internal compiler error: in hash_operand, at fold-const.c:3768
15 | }
| ^
===