This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/63207] New: ICE in expand_expr_real_l when instantiating a template with a lambda that captures a const variable with a dependent initializer
- From: "st at quanttec dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 08 Sep 2014 14:29:39 +0000
- Subject: [Bug c++/63207] New: ICE in expand_expr_real_l when instantiating a template with a lambda that captures a const variable with a dependent initializer
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63207
Bug ID: 63207
Summary: ICE in expand_expr_real_l when instantiating a
template with a lambda that captures a const variable
with a dependent initializer
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: st at quanttec dot com
Compiling the following following code with the current trunk GCC results in an
ICE.
template <typename T>
struct Base {
T value;
};
template <typename T>
struct Test : Base<T> {
T test() {
const int x = this->value;
return ([&]{ return x; })();
}
};
int main() {
Test<int> t;
t.value = 0;
return t.test();
}
g++ test.cpp --std=c++11 -Wall
test.cpp: In lambda function:
test.cpp:10:28: warning: âxâ is used uninitialized in this function
[-Wuninitialized]
return ([&]{ return x; })();
^
test.cpp:9:15: note: âxâ was declared here
const int x = this->value;
^
test.cpp:10:28: internal compiler error: in expand_expr_real_1, at expr.c:9517
return ([&]{ return x; })();
^
0x8c96ba expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
../../gcc/gcc/expr.c:9517
0x8d0dea store_expr(tree_node*, rtx_def*, int, bool)
../../gcc/gcc/expr.c:5338
0x8d8e4b expand_assignment(tree_node*, tree_node*, bool)
../../gcc/gcc/expr.c:5124
0x7e3b33 expand_gimple_stmt_1
../../gcc/gcc/cfgexpand.c:3274
0x7e3b33 expand_gimple_stmt
../../gcc/gcc/cfgexpand.c:3376
0x7e99d3 expand_gimple_basic_block
../../gcc/gcc/cfgexpand.c:5215
0x7eb86f execute
../../gcc/gcc/cfgexpand.c:5821