re PR middle-end/67512 (internal compiler error: in invert_tree_comparison, at fold-const.c:2456)

PR middle-end/67512
	* tree-ssa-uninit.c (pred_equal_p): Only call invert_tree_comparison
	for comparisons.

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

From-SVN: r227594
This commit is contained in:
Marek Polacek 2015-09-09 17:09:32 +00:00 committed by Marek Polacek
parent 273aa49e2f
commit c27348aaa5
4 changed files with 28 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2015-09-09 Marek Polacek <polacek@redhat.com>
PR middle-end/67512
* tree-ssa-uninit.c (pred_equal_p): Only call invert_tree_comparison
for comparisons.
2015-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/53184

View File

@ -1,3 +1,8 @@
2015-09-09 Marek Polacek <polacek@redhat.com>
PR middle-end/67512
* gcc.dg/pr67512.c: New test.
2015-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/53184

View File

@ -0,0 +1,15 @@
/* PR middle-end/67512 */
/* { dg-do compile } */
/* { dg-options "-O -Wuninitialized" } */
extern int fn2 (void);
extern int fn3 (int);
void
fn1 (void)
{
int z, m;
if (1 & m) /* { dg-warning "is used uninitialized" } */
z = fn2 ();
z = 1 == m ? z : 2 == m;
fn3 (z);
}

View File

@ -1296,7 +1296,8 @@ pred_equal_p (pred_info x1, pred_info x2)
return false;
c1 = x1.cond_code;
if (x1.invert != x2.invert)
if (x1.invert != x2.invert
&& TREE_CODE_CLASS (x2.cond_code) == tcc_comparison)
c2 = invert_tree_comparison (x2.cond_code, false);
else
c2 = x2.cond_code;