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

            Bug ID: 381326
           Summary: recognize re-convergent fanout before complaining
                    about Uninitialized
           Product: valgrind
           Version: 3.13 SVN
          Platform: Other
                OS: Linux
            Status: UNCONFIRMED
          Severity: wishlist
          Priority: NOR
         Component: memcheck
          Assignee: jsew...@acm.org
          Reporter: jrei...@bitwagon.com
  Target Milestone: ---

libmusl has:
void *__malloc0(size_t n)
{
        void *p = malloc(n);
        if (p && !IS_MMAPPED(MEM_TO_CHUNK(p))) {
                size_t *z;
                n = (n + sizeof *z - 1)/sizeof *z;
                for (z=p; n; n--, z++) if (*z) *z=0;
        }
        return p;
}

Memcheck should recognize the idiom "if (*z) *z=0;", then not complain
"Conditional jump or move depends on uninitialised value(s)".  The final state
is "all initialized [and zero!]", and the two-instruction intermediate state
[Compare, Branch if already 0] has no lasting consequences.

Of course libmusl should integrate better with memcheck, but the idiom occurs
in "random" user code, too.

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

Reply via email to