------- Comment #20 from manu at gcc dot gnu dot org 2007-08-20 17:12 ------- (In reply to comment #19) > > What if you had "const int i=0"? As I said before, use() may do a const-cast > to get rid of the constness of its argument, but the result is only > well-defined > if the object pointed to is actually non-const. That is the case here, so > use() > may do exactly this and clobber 'i'. On the other hand, if 'i' was const, then > the result of any const-cast use() may do on its argument are undefined, and > it would seem legitimate to propagate the initial value of 'i' into the call > to foo(). >
Wolfgang, I understand perfectly what you explain. Yet, from the point of view of Wuninitialized, only local non-const objects are interesting. And it seems that for those, GCC does not assume that the function is not going to modify the object. Thus, it doesn't make much sense for Wuninitialized to assume it. And, from a technical point of view, it would be difficult to maintain such dichotomy, since Wuninitialized relies on the SSA representation and the work of the optimisation passes. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10138