public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] middle-end/102587 - avoid auto-init for VLA vectors
@ 2021-10-04  8:57 Richard Biener
  2021-10-04 17:00 ` Qing Zhao
  0 siblings, 1 reply; 8+ messages in thread
From: Richard Biener @ 2021-10-04  8:57 UTC (permalink / raw)
  To: gcc-patches

This avoids ICEing for VLA vector auto-init by not initializing.

Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.

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.
---
 gcc/internal-fn.c                                 | 3 ++-
 gcc/testsuite/gcc.target/aarch64/sve/pr102587-1.c | 4 ++++
 gcc/testsuite/gcc.target/aarch64/sve/pr102587-2.c | 4 ++++
 3 files changed, 10 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/pr102587-1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/pr102587-2.c

diff --git a/gcc/internal-fn.c b/gcc/internal-fn.c
index 8312d08aab2..ef5dc90db56 100644
--- a/gcc/internal-fn.c
+++ b/gcc/internal-fn.c
@@ -3035,7 +3035,8 @@ expand_DEFERRED_INIT (internal_fn, gcall *stmt)
       /* 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.  */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr102587-1.c b/gcc/testsuite/gcc.target/aarch64/sve/pr102587-1.c
new file mode 100644
index 00000000000..2b9a68b0b59
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr102587-1.c
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-ftrivial-auto-var-init=zero" } */
+
+void foo() { __SVFloat64_t f64; }
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr102587-2.c b/gcc/testsuite/gcc.target/aarch64/sve/pr102587-2.c
new file mode 100644
index 00000000000..4cdb9056002
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr102587-2.c
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-ftrivial-auto-var-init=pattern" } */
+
+void foo() { __SVFloat64_t f64; }
-- 
2.31.1

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-10-05 15:34 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-04  8:57 [PATCH] middle-end/102587 - avoid auto-init for VLA vectors Richard Biener
2021-10-04 17:00 ` Qing Zhao
2021-10-04 17:19   ` Richard Biener
2021-10-04 17:24     ` Qing Zhao
2021-10-05  6:25       ` Richard Biener
2021-10-05  8:28         ` Richard Sandiford
2021-10-05  8:33           ` Richard Biener
2021-10-05 15:33         ` Qing Zhao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).