Commit 68e6d5a6 by Richard Biener Committed by Richard Biener

re PR middle-end/81782 (Yet another -Wmaybe-uninitialized false positive with empty array)

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.

From-SVN: r255512
parent 4f29e040
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.
2017-12-08 Martin Jambor <mjambor@suse.cz> 2017-12-08 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/83141 PR tree-optimization/83141
2017-12-08 Richard Biener <rguenther@suse.de>
PR middle-end/81782
* gcc.dg/uninit-pr81782.c: New testcase.
2017-12-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 2017-12-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* g++.dg/opt/pr83252.C: Add -mclear-hwcap on *-*-solaris*. * g++.dg/opt/pr83252.C: Add -mclear-hwcap on *-*-solaris*.
......
/* { 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;
}
...@@ -296,8 +296,8 @@ warn_uninitialized_vars (bool warn_possibly_uninitialized) ...@@ -296,8 +296,8 @@ warn_uninitialized_vars (bool warn_possibly_uninitialized)
variable. */ variable. */
if (DECL_P (base) if (DECL_P (base)
&& ref.size != -1 && ref.size != -1
&& ref.max_size == ref.size && ((ref.max_size == ref.size
&& (ref.offset + ref.size <= 0 && ref.offset + ref.size <= 0)
|| (ref.offset >= 0 || (ref.offset >= 0
&& DECL_SIZE (base) && DECL_SIZE (base)
&& TREE_CODE (DECL_SIZE (base)) == INTEGER_CST && TREE_CODE (DECL_SIZE (base)) == INTEGER_CST
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment