http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57149



--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-05-07 
07:00:58 UTC ---

The difference in *.uninit before/after that commit is small, just:

@@ -78,7 +79,7 @@ fn4 (struct F * x, unsigned int k)

     goto <bb 7>;



   <bb 7>:

-  # retval_25 = PHI <0(3), retval_26(6)>

+  # err_25 = PHI <0(3), retval_26(6)>

   _12 = y_9->f;

   if (_12 == 0)

     goto <bb 9>;

@@ -89,17 +90,17 @@ fn4 (struct F * x, unsigned int k)

   goto <bb 13>;



   <bb 9>:

-  if (retval_25 > 0)

+  if (err_25 > 0)

     goto <bb 10>;

   else

     goto <bb 11>;



   <bb 10>:

-  retval_14 = fn0 ();

+  err_14 = fn0 ();



   <bb 11>:

-  # retval_2 = PHI <retval_25(9), retval_14(10)>

-  if (retval_2 < 0)

+  # err_2 = PHI <err_25(9), err_14(10)>

+  if (err_2 < 0)

     goto <bb 12>;

   else

     goto <bb 8>;



and in both cases there is

   # retval_26 = PHI <retval_27(D)(4), retval_21(5)>

that is the reason for the warning.  The important thing is that the retval

decl has TREE_NO_WARNING set  (because of the retval = retval uninit warning

suppression), while err doesn't.



Trying a patch not to consider TREE_NO_WARNING SSA_NAME_VARs

ssa_undefined_value_p when inside of tree-ssa-uninit.c now.

Reply via email to