diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-03-28 23:33:29 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-03-28 23:33:29 +0100 |
commit | 79d64ee8295b19668e47e0f38bfe77ad9d67c0a7 (patch) | |
tree | 89da244f9e4f48eabb4b07ba477ea7762b9c30fd /gcc/tree-inline.h | |
parent | e4479ec676b96445e52f47950703218162c4637a (diff) | |
download | gcc-79d64ee8295b19668e47e0f38bfe77ad9d67c0a7.zip gcc-79d64ee8295b19668e47e0f38bfe77ad9d67c0a7.tar.gz gcc-79d64ee8295b19668e47e0f38bfe77ad9d67c0a7.tar.bz2 |
re PR middle-end/89621 (ICE with allocatable character and openmp)
PR middle-end/89621
* tree-inline.h (struct copy_body_data): Add
dont_remap_vla_if_no_change flag.
* tree-inline.c (remap_type_3, remap_type_2): New functions.
(remap_type): Don't remap vla types if id->dont_remap_vla_if_no_change
and remap_type_2 returns false.
* omp-low.c (new_omp_context): Set ctx->cb.dont_remap_vla_if_no_change.
Move ctx->cb.adjust_array_error_bounds setting to the outermost ctx
only from where it is copied to nested contexts.
* gfortran.dg/gomp/pr89621.f90: New test.
From-SVN: r270009
Diffstat (limited to 'gcc/tree-inline.h')
-rw-r--r-- | gcc/tree-inline.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/tree-inline.h b/gcc/tree-inline.h index 9c2915e..9e3c249 100644 --- a/gcc/tree-inline.h +++ b/gcc/tree-inline.h @@ -123,6 +123,13 @@ struct copy_body_data an uninitialized VAR_DECL temporary. */ bool adjust_array_error_bounds; + /* Usually copy_decl callback always creates new decls, in that case + we want to remap all variably_modified_type_p types. If this flag + is set, remap_type will do further checks to see if remap_decl + of any decls mentioned in the type will remap to anything but itself + and only in that case will actually remap the type. */ + bool dont_remap_vla_if_no_change; + /* A function to be called when duplicating BLOCK nodes. */ void (*transform_lang_insert_block) (tree); |