]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/c-family/array-notation-common.c
PR other/61962
[thirdparty/gcc.git] / gcc / c-family / array-notation-common.c
index 84f6f452799487a0534ad9aa523ab00e798dd749..f8bce04bbc1e7e7efa1d95793790abd12008564e 100644 (file)
@@ -221,11 +221,14 @@ find_rank (location_t loc, tree orig_expr, tree expr, bool ignore_builtin_fn,
              current_rank++;
              ii_tree = ARRAY_NOTATION_ARRAY (ii_tree);
            }
-         else if (TREE_CODE (ii_tree) == ARRAY_REF)
+         else if (handled_component_p (ii_tree)
+                  || TREE_CODE (ii_tree) == INDIRECT_REF)
            ii_tree = TREE_OPERAND (ii_tree, 0);
          else if (TREE_CODE (ii_tree) == PARM_DECL
                   || TREE_CODE (ii_tree) == VAR_DECL)
            break;
+         else
+           gcc_unreachable ();
        }
       if (*rank == 0)
        /* In this case, all the expressions this function has encountered thus