https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118590

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I think we need something like
--- gcc/cp/typeck.cc.jj 2025-01-21 16:26:04.154690509 +0100
+++ gcc/cp/typeck.cc    2025-01-22 15:09:09.487161968 +0100
@@ -4867,6 +4867,11 @@ tree
 build_omp_array_section (location_t loc, tree array_expr, tree index,
                         tree length)
 {
+  if (TREE_CODE (array_expr) == TYPE_DECL
+      || type_dependent_expression_p (array_expr))
+    return build3_loc (loc, OMP_ARRAY_SECTION, NULL_TREE, array_expr, index,
+                      length);
+
   tree type = TREE_TYPE (array_expr);
   gcc_assert (type);
   type = non_reference (type);

If array_expr is a type dependent expression, then all attempts to do something
about its type are bogus.  The type can be NULL or something the code doesn't
really handle.
But unfortunately type_dependent_expression_p will ICE if called on a TYPE_DECL
which happens on pr67522.C.  It will also ICE if array_expr is TYPE_P, but
unsure if that can appear there.  Sadly diagnostics for array sections is done
much later...

Reply via email to