https://bugs.kde.org/show_bug.cgi?id=381326

--- Comment #4 from John Reiser <jrei...@bitwagon.com> ---
(In reply to John Reiser from comment #1)
More generally, when memcheck complains about uninit in a test for equality
between variables, then the Valid bits should "cross-pollinate":
   if (a == b) {  // 'a' and 'b' are the user values
      if (~aV | ~bV) {  //' 'aV' are the Valid bits for 'a'
         complain("uninit bits in equality test", ...);
         old_aV = aV;
         old_bV = bV;
         // The user bits are equal.  Therefore the Valid bits
         // of each operand must erase Uninit
         // for the corresponding bits of the other operand.
         // There is no difference between being Initialized by a Write,
         // and being equal to an Initialized bit.
         aV |= old_bV;
         bV |= old_aV;
      }
    }
    else { ... }

Carried to extremes, this could mean that some previous complaints are no
longer correct!  The user bits have not changed (there were no Write
operations), but we have learned new information: some bits that a while ago
were thought to be Uninit, have turned out to be initialized after all.  (This
is not the French national Dictée dictation examination, where late discovery
of gender requires that you go back and correct previous pronouns, but ...)

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to