https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107304
--- Comment #21 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to H.J. Lu from comment #20) > This is the opposite of PR 80583. Like this diff --git a/gcc/expr.cc b/gcc/expr.cc index 4c892d69249..b4e1ec9dbe7 100644 --- a/gcc/expr.cc +++ b/gcc/expr.cc @@ -7898,8 +7898,7 @@ get_inner_reference (tree exp, poly_int64_pod *pbitsize, /* For vector fields re-check the target flags, as DECL_MODE could have been set with different target flags than the current function has. */ - if (mode == BLKmode - && VECTOR_TYPE_P (TREE_TYPE (field)) + if (VECTOR_TYPE_P (TREE_TYPE (field)) && VECTOR_MODE_P (TYPE_MODE_RAW (TREE_TYPE (field)))) mode = TYPE_MODE (TREE_TYPE (field)); }