This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/68581] New: ICE in build_conditional_expr_1 upon instantiation of a templated function with Cilk+ directives (valid code)
- From: "yury.zaytsev at traveltainment dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 27 Nov 2015 10:24:37 +0000
- Subject: [Bug c++/68581] New: ICE in build_conditional_expr_1 upon instantiation of a templated function with Cilk+ directives (valid code)
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68581
Bug ID: 68581
Summary: ICE in build_conditional_expr_1 upon instantiation of
a templated function with Cilk+ directives (valid
code)
Product: gcc
Version: 5.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: yury.zaytsev at traveltainment dot de
Target Milestone: ---
Affected: GCC 4.9.3, GCC 5.2.1.
The ICE only happens with -fcilkplus, without it everything is fine.
$ cat ice.i
#include <cilk/cilk.h>
struct x{};
template<typename>
void parallel() {
const auto &lambda = [] () {};
true ? lambda() : cilk_spawn lambda();
cilk_sync;
}
int main() {
parallel<x>();
}
$ g++-5 -std=c++11 -fcilkplus ice.i
ice.i: In instantiation of âvoid parallel() [with <template-parameter-1-1> =
x]â:
ice.i:13:17: required from here
ice.i:8:10: internal compiler error: Segmentation fault
true ? lambda() : cilk_spawn lambda();
^
0xa9aa9f crash_signal
../../src/gcc/toplev.c:383
0x5ec65d build_conditional_expr_1
../../src/gcc/cp/call.c:4739
0x5ed6ec build_conditional_expr(unsigned int, tree_node*, tree_node*,
tree_node*, int)
../../src/gcc/cp/call.c:5148
0x6890e3 build_x_conditional_expr(unsigned int, tree_node*, tree_node*,
tree_node*, int)
../../src/gcc/cp/typeck.c:6109
0x6130ed tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../src/gcc/cp/pt.c:15416
0x61a6f2 tsubst_expr
../../src/gcc/cp/pt.c:14553
0x619856 tsubst_expr
../../src/gcc/cp/pt.c:13964
0x619fe4 tsubst_expr
../../src/gcc/cp/pt.c:13950
0x61a63c tsubst_expr
../../src/gcc/cp/pt.c:14136
0x6193a7 instantiate_decl(tree_node*, int, bool)
../../src/gcc/cp/pt.c:20583
0x62e08b instantiate_pending_templates(int)
../../src/gcc/cp/pt.c:20700
0x649220 cp_write_global_declarations()
../../src/gcc/cp/decl2.c:4465
$ g++-4.9 -std=c++11 -fcilkplus ice.i
ice.i: In instantiation of âvoid parallel() [with <template-parameter-1-1> =
x]â:
ice.i:13:17: required from here
ice.i:8:10: internal compiler error: Segmentation fault
true ? lambda() : cilk_spawn lambda();
^
$ g++-5 -std=c++11 ice.i
ice.i: In function âvoid parallel()â:
ice.i:8:34: error: -fcilkplus must be enabled to use â_Cilk_spawnâ
true ? lambda() : cilk_spawn lambda();
^
$ g++-4.9 -std=c++11 ice.i
ice.i: In function âvoid parallel()â:
ice.i:8:34: error: -fcilkplus must be enabled to use â_Cilk_spawnâ
true ? lambda() : cilk_spawn lambda();
^
$ g++-5 --version
g++-5 (Ubuntu 5.2.1-23ubuntu1~14.04.2) 5.2.1 20151031
$ g++-4.9 --version
g++-4.9 (Ubuntu 4.9.3-5ubuntu1~14.04) 4.9.3