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

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-02-10 
16:29:18 UTC ---
Changing boost slightly:
    template<class OptionalPointee> inline bool equal_pointees2
(OptionalPointee const& x, OptionalPointee const& y ) {
-    return (!x) != (!y) ? false : ( !x ? true : (*x) == (*y) ) ;
+    if (!x && !y) return true;
+    if (!x || !y) return false;
+    return (*x) == (*y);
   }
makes the warning go away, then the predicate aware uninit analysis figures
things out.  But the generated code for this testcase is then 3 bytes longer
(though, same number of insns).

Reply via email to