[Bug c++/86443] ICEs on #pragma omp distribute parallel for with class iterators

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jul 10 07:13:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86443

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Tue Jul 10 07:12:37 2018
New Revision: 262534

URL: https://gcc.gnu.org/viewcvs?rev=262534&root=gcc&view=rev
Log:
        PR c++/86443
        * gimplify.c (find_combined_omp_for): Add DATA argument, in addition
        to finding the inner OMP_FOR/OMP_SIMD stmt find non-trivial wrappers,
        BLOCKs with BLOCK_VARs, OMP_PARALLEL in between, OMP_FOR in between.
        (gimplify_omp_for): For composite loops, move outer
        OMP_{DISTRIBUTE,TASKLOOP,FOR,PARALLEL} right around innermost
        OMP_FOR/OMP_SIMD if there are any non-trivial wrappers.  For class
        iterators add any needed clauses.  Allow OMP_FOR_ORIG_DECLS to contain
        TREE_LIST for both the original class iterator and the "last" helper
        var.  Gimplify OMP_FOR_PRE_BODY before the outermost composite
        loop, remember has_decl_expr from outer composite loops for the
        innermost OMP_SIMD in TREE_PRIVATE bit on OMP_FOR_INIT.
gcc/c-family/
        * c-omp.c (c_omp_check_loop_iv_r, c_omp_check_loop_iv): Allow declv
        to contain TREE_LIST for both the original class iterator and the
        "last" helper var.
gcc/cp/
        * semantics.c (handle_omp_for_class_iterator): Remove lastp argument,
        instead of setting *lastp turn orig_declv elt into a TREE_LIST.
        (finish_omp_for): Adjust handle_omp_for_class_iterator caller.
        * pt.c (tsubst_omp_for_iterator): Allow OMP_FOR_ORIG_DECLS to contain
        TREE_LIST for both the original class iterator and the "last" helper
        var.
libgomp/
        * testsuite/libgomp.c++/for-15.C: New test.

Added:
    trunk/libgomp/testsuite/libgomp.c++/for-15.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/c-family/ChangeLog
    trunk/gcc/c-family/c-omp.c
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/pt.c
    trunk/gcc/cp/semantics.c
    trunk/gcc/gimplify.c
    trunk/libgomp/ChangeLog


More information about the Gcc-bugs mailing list