[Bug tree-optimization/69726] [6 Regression] Bogus warnings with -O3 -Wuninitialized because dead code after if-conversion

2016-02-10 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69726

Richard Biener  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from Richard Biener  ---
Fixed.

[Bug tree-optimization/69726] [6 Regression] Bogus warnings with -O3 -Wuninitialized because dead code after if-conversion

2016-02-10 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69726

--- Comment #5 from Richard Biener  ---
Author: rguenth
Date: Wed Feb 10 12:46:33 2016
New Revision: 233267

URL: https://gcc.gnu.org/viewcvs?rev=233267&root=gcc&view=rev
Log:
2016-02-10  Richard Biener  

PR tree-optimization/69726
* passes.def: Add DCE pass before late uninit.
* match.pd: Add A ? B : (!A ? C : X) -> A ? B : C patterns to
really fixup if-conversions job.

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

Added:
trunk/gcc/testsuite/gcc.dg/uninit-22.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/match.pd
trunk/gcc/passes.def
trunk/gcc/testsuite/ChangeLog

[Bug tree-optimization/69726] [6 Regression] Bogus warnings with -O3 -Wuninitialized because dead code after if-conversion

2016-02-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69726

--- Comment #3 from Richard Biener  ---
It solved itself with

2016-02-08  Richard Biener  

PR tree-optimization/69719
* tree-vect-data-refs.c (vect_prune_runtime_alias_test_list):
Properly use absolute of the difference of the two offsets to
compare or adjust the segment length.

and no longer vectorizing (too many versioning for alias checks - another
missed optimization).

The following patch would have avoided the warning:

Index: gcc/tree-ssa-uninit.c
===
--- gcc/tree-ssa-uninit.c   (revision 233239)
+++ gcc/tree-ssa-uninit.c   (working copy)
@@ -231,6 +231,24 @@ warn_uninitialized_vars (bool warn_possi
  || is_global_var (base))
continue;

+ /* Do not confuse ourselves with dead code.  See PR69726.  */
+ bool dont_warn = false;
+ gimple *use_stmt = stmt;
+ use_operand_p use_p;
+ tree lhs;
+ do
+   {
+ lhs = gimple_assign_lhs (use_stmt);
+ if (TREE_CODE (lhs) != SSA_NAME)
+   break;
+ if (has_zero_uses (lhs))
+   {
+ dont_warn = true;
+ continue;
+   }
+   }
+ while (single_imm_use (lhs, &use_p, &use_stmt));
+
  if (always_executed)
warn_uninit (OPT_Wuninitialized, use,
 gimple_assign_rhs1 (stmt), base,

[Bug tree-optimization/69726] [6 Regression] Bogus warnings with -O3 -Wuninitialized because dead code after if-conversion

2016-02-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69726

Richard Biener  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
   Target Milestone|--- |6.0
Summary|Bogus warnings with -O3 |[6 Regression] Bogus
   |-Wuninitialized because |warnings with -O3
   |dead code after |-Wuninitialized because
   |if-conversion   |dead code after
   ||if-conversion