From: Jakub Jelinek Date: Thu, 24 Jan 2019 19:14:51 +0000 (+0100) Subject: re PR tree-optimization/89027 (ICE: verify_gimple failed (Error: non-trivial conversi... X-Git-Tag: upstream/12.2.0~26563 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=acac773aaa0434993650c079685a41b78121a619;p=platform%2Fupstream%2Fgcc.git re PR tree-optimization/89027 (ICE: verify_gimple failed (Error: non-trivial conversion at assignment)) PR tree-optimization/89027 * tree-inline.c (add_clobbers_to_eh_landing_pad): Don't add clobbers for "omp simd array" variables. * gfortran.dg/gomp/pr89027.f90: New test. From-SVN: r268243 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ca6dfe6..efb20f7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-01-24 Jakub Jelinek + + PR tree-optimization/89027 + * tree-inline.c (add_clobbers_to_eh_landing_pad): Don't add clobbers + for "omp simd array" variables. + 2019-01-24 Richard Earnshaw PR target/88469 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 158c471..75467a3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,8 +1,13 @@ +2019-01-24 Jakub Jelinek + + PR tree-optimization/89027 + * gfortran.dg/gomp/pr89027.f90: New test. + 2019-01-24 Paul Thomas PR fortran/88929 - * gfortran.dg/ISO_Fortran_binding_3.f90 : New test - * gfortran.dg/ISO_Fortran_binding_3.c : Subsidiary source. + * gfortran.dg/ISO_Fortran_binding_3.f90: New test. + * gfortran.dg/ISO_Fortran_binding_3.c: Subsidiary source. 2019-01-23 H.J. Lu diff --git a/gcc/testsuite/gfortran.dg/gomp/pr89027.f90 b/gcc/testsuite/gfortran.dg/gomp/pr89027.f90 new file mode 100644 index 0000000..2fa0d23 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/gomp/pr89027.f90 @@ -0,0 +1,22 @@ +! PR tree-optimization/89027 +! { dg-do compile } +! { dg-additional-options "-O2 -fexceptions -fno-tree-dce" } + +subroutine bar + integer :: a, b + a = 1 + b = 2 + call foo +contains + subroutine foo +!$omp simd linear(a:2) linear(b:1) + do a = 1, 20, 2 + b = b + 1 + end do +!$omp end simd + if (a /= 21 .or. b /= 12) STOP 1 +!$omp task depend(out : a) + a = a + 1 +!$omp end task + end subroutine foo +end subroutine bar diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 29f119a..eb5073c 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -2204,7 +2204,8 @@ add_clobbers_to_eh_landing_pad (basic_block bb, copy_body_data *id) && !TREE_THIS_VOLATILE (var) && !DECL_HAS_VALUE_EXPR_P (var) && !is_gimple_reg (var) - && auto_var_in_fn_p (var, id->src_fn)) + && auto_var_in_fn_p (var, id->src_fn) + && !lookup_attribute ("omp simd array", DECL_ATTRIBUTES (var))) { tree *t = id->decl_map->get (var); if (!t)