This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/68581] New: ICE in build_conditional_expr_1 upon instantiation of a templated function with Cilk+ directives (valid code)


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]