On 11/10/2007, Roberto Bagnara <[EMAIL PROTECTED]> wrote:
>
> Just to make sure before I submit a bug report: when GCC says that
> a certain variable _is_ (as opposed to _may be_) used uninitialized
> in this function, it means that it has proved that the variable
> is indeed used uninitialized, right?

When GCC says that a certain variable "is used" uninitialized, it just
means that it has found a SSA name with an empty definition in a
particular BB. That proves nothing about a variable being used
uninitialized, since, that BB may be conditional or it may not even be
executed at all.

Nonetheless, this is not the desirable behaviour so, please submit a
bug report and if possible, attach the smallest self-contained
testcase and the *.ssa file obtained by adding the option
-fdump-tree-all-all. Please add manu at gcc dot gnu dot org to the CC
list.

> I am asking because I have a testcase where g++ gives this warning for
> `z' in the statement marked with (***) below.  However, `z' is indeed
> initialized by the mul() function template, which takes the first
> argument by (non-const) reference:

The current Wuninitialized mechanism does not handle memory references
well (it does not handle virtual operands at all), so it gets easily
confused by pointers, references, arrays, etc. I am almost sure that
the wrong warning is a consequence of the combination of this and the
previously mentioned issues.

Thanks,

Manuel.

Reply via email to