This avoids ICEing for VLA vector auto-init by not initializing.
2021-10-04 Richard Biener <rguenther@suse.de>
PR middle-end/102587
* internal-fn.c (expand_DEFERRED_INIT): Guard register
initialization path an avoid initializing VLA registers
with it.
* gcc.target/aarch64/sve/pr102587-1.c: New testcase.
* gcc.target/aarch64/sve/pr102587-2.c: Likewise.
/* Expand this memset call. */
expand_builtin_memset (m_call, NULL_RTX, TYPE_MODE (var_type));
}
- else
+ /* ??? Deal with poly-int sized registers. */
+ else if (tree_fits_uhwi_p (TYPE_SIZE_UNIT (var_type)))
{
/* If this variable is in a register, use expand_assignment might
generate better code. */
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-ftrivial-auto-var-init=zero" } */
+
+void foo() { __SVFloat64_t f64; }
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-ftrivial-auto-var-init=pattern" } */
+
+void foo() { __SVFloat64_t f64; }