This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/57149] [4.8/4.9 Regression] wrong -Wmaybe-uninitialized warning with -Os


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]