diff options
author | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-01-24 20:14:51 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-01-24 20:14:51 +0100 |
commit | acac773aaa0434993650c079685a41b78121a619 (patch) | |
tree | 978a2c4430ecdc5524c15d260e1aa5d9f8df98a0 /gcc | |
parent | 21f657a48fe0d110f3d35646657090cd77d0f76a (diff) | |
download | gcc-acac773aaa0434993650c079685a41b78121a619.zip gcc-acac773aaa0434993650c079685a41b78121a619.tar.gz gcc-acac773aaa0434993650c079685a41b78121a619.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/pr89027.f90 | 22 | ||||
-rw-r--r-- | gcc/tree-inline.c | 3 |
4 files changed, 37 insertions, 3 deletions
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 <jakub@redhat.com> + + 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 <rearnsha@arm.com> 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 <jakub@redhat.com> + + PR tree-optimization/89027 + * gfortran.dg/gomp/pr89027.f90: New test. + 2019-01-24 Paul Thomas <pault@gcc.gnu.org> 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 <hongjiu.lu@intel.com> 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) |