+2020-04-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94621
+ * tree-inline.c (remap_type_1): Don't dereference NULL TYPE_DOMAIN.
+ Move id->adjust_array_error_bounds check first in the condition.
+
2020-04-17 Martin Liska <mliska@suse.cz>
Jonathan Yong <10walls@gmail.com>
2020-04-17 Jakub Jelinek <jakub@redhat.com>
+ PR tree-optimization/94621
+ * gcc.c-torture/compile/pr94621.c: New test.
+
PR c++/94314
* g++.dg/pr94314-4.C: Require c++14 rather than c++11.
--- /dev/null
+/* PR tree-optimization/94621 */
+
+struct S { int c, e[]; };
+
+static inline int
+foo (struct S *m, int r, int c)
+{
+ int (*a)[][m->c] = (int (*)[][m->c])&m->e;
+ return (*a)[r][c];
+}
+
+void
+bar (struct S *a)
+{
+ foo (a, 0, 0);
+}
/* For array bounds where we have decided not to copy over the bounds
variable which isn't used in OpenMP/OpenACC region, change them to
an uninitialized VAR_DECL temporary. */
- if (TYPE_MAX_VALUE (TYPE_DOMAIN (new_tree)) == error_mark_node
- && id->adjust_array_error_bounds
+ if (id->adjust_array_error_bounds
+ && TYPE_DOMAIN (new_tree)
+ && TYPE_MAX_VALUE (TYPE_DOMAIN (new_tree)) == error_mark_node
&& TYPE_MAX_VALUE (TYPE_DOMAIN (type)) != error_mark_node)
{
tree v = create_tmp_var (TREE_TYPE (TYPE_DOMAIN (new_tree)));