aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.h
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-03-28 23:33:29 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2019-03-28 23:33:29 +0100
commit79d64ee8295b19668e47e0f38bfe77ad9d67c0a7 (patch)
tree89da244f9e4f48eabb4b07ba477ea7762b9c30fd /gcc/tree-inline.h
parente4479ec676b96445e52f47950703218162c4637a (diff)
downloadgcc-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.h7
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);