This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix PR81782


The following fixes spurious uninit warnings for zero-sized arrays.

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

Richard.

2017-12-08  Richard Biener  <rguenther@suse.de>

	PR middle-end/81782
	* tree-ssa-uninit.c (warn_uninitialized_vars): Properly
	handle accesses outside of zero-sized vars.

	* gcc.dg/uninit-pr81782.c: New testcase.

Index: gcc/tree-ssa-uninit.c
===================================================================
--- gcc/tree-ssa-uninit.c	(revision 255499)
+++ gcc/tree-ssa-uninit.c	(working copy)
@@ -296,8 +296,8 @@ warn_uninitialized_vars (bool warn_possi
 	         variable.  */
 	      if (DECL_P (base)
 		  && ref.size != -1
-		  && ref.max_size == ref.size
-		  && (ref.offset + ref.size <= 0
+		  && ((ref.max_size == ref.size
+		       && ref.offset + ref.size <= 0)
 		      || (ref.offset >= 0
 			  && DECL_SIZE (base)
 			  && TREE_CODE (DECL_SIZE (base)) == INTEGER_CST
Index: gcc/testsuite/gcc.dg/uninit-pr81782.c
===================================================================
--- gcc/testsuite/gcc.dg/uninit-pr81782.c	(nonexistent)
+++ gcc/testsuite/gcc.dg/uninit-pr81782.c	(working copy)
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-Wmaybe-uninitialized" } */
+
+int
+foo (void)
+{
+  char empty_array[] = { };
+  int i, ret = 0;
+
+  for (i = 0; i < (int) (sizeof (empty_array) / sizeof (empty_array[0])); i++)
+    ret = empty_array[i]; /* { dg-bogus "uninitialized" } */
+
+  return ret;
+}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]