[Bug middle-end/58809] New: [4.7/4.8/4.9 Regression] ICE with complex variable in OpenMP reduction clause

reichelt at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Oct 19 22:31:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58809

            Bug ID: 58809
           Summary: [4.7/4.8/4.9 Regression] ICE with complex variable in
                    OpenMP reduction clause
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: reichelt at gcc dot gnu.org

The following valid code snippet (compiled with "-fopenmp -O") triggers an ICE
since GCC 4.3.0:

======================================================
int i;
#pragma omp threadprivate (i)

void foo()
{
  _Complex int j;
#pragma omp parallel copyin (i) reduction (&&:j)
  ;
}
======================================================

bug.c: In function 'foo':
bug.c:7:9: internal compiler error: in build_int_cst_wide, at tree.c:1258
 #pragma omp parallel copyin (i) reduction (&&:j)
         ^
0xb6dcd3 build_int_cst_wide(tree_node*, unsigned long, long)
        ../../gcc/gcc/tree.c:1258
0xb6e010 double_int_to_tree(tree_node*, double_int)
        ../../gcc/gcc/tree.c:1112
0xb6e05a build_int_cst(tree_node*, long)
        ../../gcc/gcc/tree.c:1089
0x7804b3 make_range(tree_node*, int*, tree_node**, tree_node**, bool*)
        ../../gcc/gcc/fold-const.c:4231
0x785533 fold_range_test
        ../../gcc/gcc/fold-const.c:4987
0x785533 fold_truth_andor
        ../../gcc/gcc/fold-const.c:8629
0x74d86c fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*,
tree_node*)
        ../../gcc/gcc/fold-const.c:12711
0x76a86a fold_build2_stat_loc(unsigned int, tree_code, tree_node*, tree_node*,
tree_node*)
        ../../gcc/gcc/fold-const.c:15051
0x8a2e7a lower_reduction_clauses
        ../../gcc/gcc/omp-low.c:3799
0x8a4fbe lower_omp_taskreg
        ../../gcc/gcc/omp-low.c:9383
0x89e0ab lower_omp_1
        ../../gcc/gcc/omp-low.c:9907
0x89e0ab lower_omp
        ../../gcc/gcc/omp-low.c:10029
0x89e82e lower_omp_1
        ../../gcc/gcc/omp-low.c:9899
0x89e82e lower_omp
        ../../gcc/gcc/omp-low.c:10029
0x89fe5c execute_lower_omp
        ../../gcc/gcc/omp-low.c:10064
0x89fe5c execute
        ../../gcc/gcc/omp-low.c:10103
Please submit a full bug report, [etc.]


A similar code snippet triggers an ICE in a different position on trunk:

======================================================
int i;
#pragma omp threadprivate (i)

void foo()
{
  _Complex int j;
#pragma omp parallel copyin (i) reduction (&:j)
  ;
}
======================================================

bug.c: In function 'foo._omp_fn.0':
bug.c:17:9: internal compiler error: in expand_expr_real_2, at expr.c:9119
 #pragma omp parallel copyin (i) reduction (&:j)
         ^
0x723807 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode,
expand_modifier)
        ../../gcc/gcc/expr.c:9119
0x710127 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**)
        ../../gcc/gcc/expr.c:10487
0x710e86 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**)
        ../../gcc/gcc/expr.c:9296
0x71b5b8 store_expr(tree_node*, rtx_def*, int, bool)
        ../../gcc/gcc/expr.c:5208
0x71d663 expand_assignment(tree_node*, tree_node*, bool)
        ../../gcc/gcc/expr.c:4994
0x64667d expand_gimple_stmt_1
        ../../gcc/gcc/cfgexpand.c:2277
0x64667d expand_gimple_stmt
        ../../gcc/gcc/cfgexpand.c:2373
0x6480e3 expand_gimple_basic_block
        ../../gcc/gcc/cfgexpand.c:4212
0x649a2c gimple_expand_cfg
        ../../gcc/gcc/cfgexpand.c:4731
0x649a2c execute
        ../../gcc/gcc/cfgexpand.c:4945
Please submit a full bug report, [etc.]



More information about the Gcc-bugs mailing list