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/32759] False claim of that "xyz is used uninitialized"



------- Comment #4 from manu at gcc dot gnu dot org  2007-08-22 16:49 -------
Basically, when we reach "diff = xlimit;" we don't know that xlimit must be
initialized. This may end up in different scenarios depending on the SSA tree
finally generated. In any of those scenarios, not warning is sheer luck.

If you remove the assignment to diff, still when we reach "ang ? xlimit : 0.0;"
we don't know that xlimit is always initialized. We get the "may be" because we
don't know the value of "ang", so xlimit may not be used at all.

Finally, I guess that using constants make the warning disappear because the
constant-propagation pass assumes that the uninitialized value of xlimit is
either of the constants and thus xlimit is never used uninitialized.

My conclusion here is that we should not get a "is uninitialized". Maybe we can
use the fact that the block is not entered 100% of times to avoid saying "is
used"? 

Nonetheless, avoiding the warning completely depends on being able to avoid a
default case for the switch (which is a missed-optimization in VRP and not a
diagnostics problem).


-- 


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


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