Commit 06e8db10 by Jakub Jelinek

re PR middle-end/91195 (incorrect may be used uninitialized smw (272711, 273474])

	PR middle-end/91195
	* tree-ssa-phiopt.c (cond_store_replacement): Move lhs unsharing
	earlier.  Set TREE_NO_WARNING on the rhs1 of the artificially added
	load.

	* gcc.dg/pr91195.c: New test.

From-SVN: r278479
parent c04341ec
2019-11-20 Jiangning Liu <jiangning.liu@amperecomputing.com>
Jakub Jelinek <jakub@redhat.com>
PR middle-end/91195
* tree-ssa-phiopt.c (cond_store_replacement): Move lhs unsharing
earlier. Set TREE_NO_WARNING on the rhs1 of the artificially added
load.
2019-11-20 Georg-Johann Lay <avr@gjlay.de>
Make 0-series device specs work with older versions of avr-gcc.
2019-11-20 Jakub Jelinek <jakub@redhat.com>
PR middle-end/91195
* gcc.dg/pr91195.c: New test.
2019-11-20 Richard Biener <rguenther@suse.de>
PR c/92088
......
/* PR middle-end/91195 */
/* { dg-do compile } */
/* { dg-options "-Wmaybe-uninitialized -O2" } */
int bar (char*);
void
foo (char *x, char *y)
{
char *a[2];
int b = 0;
if (x)
a[b++] = x; /* { dg-bogus "may be used uninitialized in this function" } */
if (y)
a[b++] = y;
for (int j = 0; j < 4; j++)
switch (j)
{
case 0:
if (b == 0 || bar (a[0]))
break;
}
}
......@@ -2269,6 +2269,10 @@ cond_store_replacement (basic_block middle_bb, basic_block join_bb,
name = make_temp_ssa_name (TREE_TYPE (lhs), NULL, "cstore");
new_stmt = gimple_build_assign (name, lhs);
gimple_set_location (new_stmt, locus);
lhs = unshare_expr (lhs);
/* Set TREE_NO_WARNING on the rhs of the load to avoid uninit
warnings. */
TREE_NO_WARNING (gimple_assign_rhs1 (new_stmt)) = 1;
gsi_insert_on_edge (e1, new_stmt);
/* 3) Create a PHI node at the join block, with one argument
......@@ -2279,7 +2283,6 @@ cond_store_replacement (basic_block middle_bb, basic_block join_bb,
add_phi_arg (newphi, rhs, e0, locus);
add_phi_arg (newphi, name, e1, locus);
lhs = unshare_expr (lhs);
new_stmt = gimple_build_assign (lhs, PHI_RESULT (newphi));
/* 4) Insert that PHI node. */
......
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