middle-end/102269 - avoid auto-init of empty types

Message ID 623prp9r-16q8-8s61-r140-7714p89p315@fhfr.qr
State New
Headers show
Series
  • middle-end/102269 - avoid auto-init of empty types
Related show

Commit Message

Xionghu Luo via Gcc-patches Sept. 10, 2021, 8:19 a.m.
This avoids initializing empty types for which we'll eventually
leave a .DEFERRED_INIT call without a LHS.

Bootstrap & regtest running on x86_64-unknown-linux-gnu.

2021-09-10  Richard Biener  <rguenther@suse.de>

	PR middle-end/102269
	* gimplify.c (is_var_need_auto_init): Empty types do not need
	initialization.

	* gcc.dg/pr102269.c: New testcase.
---
 gcc/gimplify.c                  | 3 ++-
 gcc/testsuite/gcc.dg/pr102269.c | 4 ++++
 2 files changed, 6 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/gcc.dg/pr102269.c

-- 
2.31.1

Patch

diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 3314f76cf3f..8820f873993 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -1826,7 +1826,8 @@  is_var_need_auto_init (tree decl)
 {
   if (auto_var_p (decl)
       && (flag_auto_var_init > AUTO_INIT_UNINITIALIZED)
-      && (!lookup_attribute ("uninitialized", DECL_ATTRIBUTES (decl))))
+      && (!lookup_attribute ("uninitialized", DECL_ATTRIBUTES (decl)))
+      && !is_empty_type (TREE_TYPE (decl)))
     return true;
   return false;
 }
diff --git a/gcc/testsuite/gcc.dg/pr102269.c b/gcc/testsuite/gcc.dg/pr102269.c
new file mode 100644
index 00000000000..9d41b8fd7c7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr102269.c
@@ -0,0 +1,4 @@ 
+/* { dg-do compile } */
+/* { dg-options "-ftrivial-auto-var-init=zero" } */
+
+void fn() { int a[0]; }