re PR tree-optimization/81578 (ICE in omp_reduction_init_op)
PR tree-optimization/81578 * tree-parloops.c (build_new_reduction): Bail out if reduction_code isn't one of the standard OpenMP reductions. Move the details printing after that decision. * gcc.dg/pr81578.c: New test. From-SVN: r250651
This commit is contained in:
parent
1ce75e4156
commit
d0ee55a1f7
|
@ -1,3 +1,10 @@
|
||||||
|
2017-07-28 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR tree-optimization/81578
|
||||||
|
* tree-parloops.c (build_new_reduction): Bail out if
|
||||||
|
reduction_code isn't one of the standard OpenMP reductions.
|
||||||
|
Move the details printing after that decision.
|
||||||
|
|
||||||
2017-07-27 Peter Bergner <bergner@vnet.ibm.com>
|
2017-07-27 Peter Bergner <bergner@vnet.ibm.com>
|
||||||
|
|
||||||
* config/rs6000/predicates.md (volatile_mem_operand): Remove code
|
* config/rs6000/predicates.md (volatile_mem_operand): Remove code
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2017-07-28 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR tree-optimization/81578
|
||||||
|
* gcc.dg/pr81578.c: New test.
|
||||||
|
|
||||||
2017-07-28 Richard Biener <rguenther@suse.de>
|
2017-07-28 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/81573
|
PR tree-optimization/81573
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
/* PR tree-optimization/81578 */
|
||||||
|
/* { dg-do compile { target pthread } } */
|
||||||
|
/* { dg-options "-O2 -ftree-parallelize-loops=2" } */
|
||||||
|
|
||||||
|
int
|
||||||
|
foo (int *x)
|
||||||
|
{
|
||||||
|
int i, r = 1;
|
||||||
|
for (i = 0; i != 1024; i++)
|
||||||
|
r *= x[i] < 0;
|
||||||
|
return r;
|
||||||
|
}
|
|
@ -2475,6 +2475,32 @@ build_new_reduction (reduction_info_table_type *reduction_list,
|
||||||
|
|
||||||
gcc_assert (reduc_stmt);
|
gcc_assert (reduc_stmt);
|
||||||
|
|
||||||
|
if (gimple_code (reduc_stmt) == GIMPLE_PHI)
|
||||||
|
{
|
||||||
|
tree op1 = PHI_ARG_DEF (reduc_stmt, 0);
|
||||||
|
gimple *def1 = SSA_NAME_DEF_STMT (op1);
|
||||||
|
reduction_code = gimple_assign_rhs_code (def1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
reduction_code = gimple_assign_rhs_code (reduc_stmt);
|
||||||
|
/* Check for OpenMP supported reduction. */
|
||||||
|
switch (reduction_code)
|
||||||
|
{
|
||||||
|
case PLUS_EXPR:
|
||||||
|
case MULT_EXPR:
|
||||||
|
case MAX_EXPR:
|
||||||
|
case MIN_EXPR:
|
||||||
|
case BIT_IOR_EXPR:
|
||||||
|
case BIT_XOR_EXPR:
|
||||||
|
case BIT_AND_EXPR:
|
||||||
|
case TRUTH_OR_EXPR:
|
||||||
|
case TRUTH_XOR_EXPR:
|
||||||
|
case TRUTH_AND_EXPR:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||||
{
|
{
|
||||||
fprintf (dump_file,
|
fprintf (dump_file,
|
||||||
|
@ -2483,16 +2509,6 @@ build_new_reduction (reduction_info_table_type *reduction_list,
|
||||||
fprintf (dump_file, "\n");
|
fprintf (dump_file, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gimple_code (reduc_stmt) == GIMPLE_PHI)
|
|
||||||
{
|
|
||||||
tree op1 = PHI_ARG_DEF (reduc_stmt, 0);
|
|
||||||
gimple *def1 = SSA_NAME_DEF_STMT (op1);
|
|
||||||
reduction_code = gimple_assign_rhs_code (def1);
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
reduction_code = gimple_assign_rhs_code (reduc_stmt);
|
|
||||||
|
|
||||||
new_reduction = XCNEW (struct reduction_info);
|
new_reduction = XCNEW (struct reduction_info);
|
||||||
|
|
||||||
new_reduction->reduc_stmt = reduc_stmt;
|
new_reduction->reduc_stmt = reduc_stmt;
|
||||||
|
|
Loading…
Reference in New Issue