https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71941
Bug ID: 71941 Summary: ICE with OpenMP tasks and queue Product: gcc Version: 6.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libgomp Assignee: unassigned at gcc dot gnu.org Reporter: thakkinen at gmail dot com CC: jakub at gcc dot gnu.org Target Milestone: --- Created attachment 38940 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38940&action=edit ICE with OpenMP tasks and queue, .ii file Hi, following dummy code causes ICE with gcc 6.1.0: #include <omp.h> #include <queue> #include <string> #include <iostream> using namespace std; int main(void){ int loops=10; int end_flag=0; queue<string> testq; #pragma omp single { #pragma omp task { #pragma omp parallel for for(int i=0;i<loops;++i){ #pragma omp critical testq.push("Test"); } end_flag=1; } #pragma omp task { while(!end_flag){ #pragma omp critical if(testq.size()>0){ cout << "Testq size: " << testq.size() << endl; } } } } return 0; } Compiler command and output: $ g++ -Wall -Wextra -save-temps -fopenmp omp_task_queue.cpp In file included from /home/xxxxxx/gcc_61/gcc-6.1.0/include/c++/6.1.0/queue:64:0, from omp_task_queue.cpp:3: /home/xxxxxx/gcc_61/gcc-6.1.0/include/c++/6.1.0/bits/stl_queue.h: In copy constructor ‘std::queue<std::__cxx11::basic_string<char> >::queue(const std::queue<std::__cxx11::basic_string<char> >&)’: /home/xxxxxx/gcc_61/gcc-6.1.0/include/c++/6.1.0/bits/stl_queue.h:96:11: internal compiler error: in cp_genericize, at cp/cp-gimplify.c:1568 class queue ^~~~~ 0x6de96a cp_genericize(tree_node*) ../.././gcc/cp/cp-gimplify.c:1568 0x5e82d9 finish_function(int) ../.././gcc/cp/decl.c:14820 0x69338e synthesize_method(tree_node*) ../.././gcc/cp/method.c:817 0x632cc0 mark_used(tree_node*, int) ../.././gcc/cp/decl2.c:5251 0x5c990a build_over_call ../.././gcc/cp/call.c:7608 0x5c812f build_new_method_call_1 ../.././gcc/cp/call.c:8419 0x5c812f build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, tree_node**, int) ../.././gcc/cp/call.c:8489 0x693f5e locate_fn_flags ../.././gcc/cp/method.c:900 0x694126 get_copy_ctor(tree_node*, int) ../.././gcc/cp/method.c:958 0x6db3bb omp_cxx_notice_variable ../.././gcc/cp/cp-gimplify.c:908 0x6db301 omp_cxx_notice_variable ../.././gcc/cp/cp-gimplify.c:876 0x6dcc64 cp_genericize_r ../.././gcc/cp/cp-gimplify.c:1018 0xcb7713 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*)) ../.././gcc/tree.c:11531 0xcb7903 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*)) ../.././gcc/tree.c:11848 0xcb7903 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*)) ../.././gcc/tree.c:11848 0x6dbe4e genericize_omp_for_stmt ../.././gcc/cp/cp-gimplify.c:388 0x6dd438 cp_genericize_r ../.././gcc/cp/cp-gimplify.c:1385 0xcb7713 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*)) ../.././gcc/tree.c:11531 0x6dd24c cp_genericize_r ../.././gcc/cp/cp-gimplify.c:1222 0xcb7713 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*)) ../.././gcc/tree.c:11531 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. Gcc and system specs: $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/home/xxxxxx/gcc_61/gcc-6.1.0/libexec/gcc/x86_64-pc-linux-gnu/6.1.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ./configure --disable-multilib --prefix=/home/xxxxxx/gcc_61/gcc-6.1.0 --with-gmp=/home/xxxxxx/gcc_61/gmp-6.1.0 --with-mpfr=/home/xxxxxx/gcc_61/mpfr-3.1.4 --with-mpc=/home/xxxxxx/gcc_61/mpc-1.0.3 Thread model: posix gcc version 6.1.0 (GCC) $ uname -a Linux abcd.efg.hi 2.6.32-642.3.1.el6.x86_64 #1 SMP Sun Jun 26 18:16:44 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux