https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108256

            Bug ID: 108256
           Summary: Missing integer overflow instrumentation when
                    assignment LHS is narrow
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: amonakov at gcc dot gnu.org
  Target Milestone: ---

For

unsigned short f(unsigned short x, unsigned short y)
{
    return x * y;
}

unsigned short g(unsigned short x, unsigned short y)
{
    int r = x * y;
    return r;
}

gcc -O2 -fsanitize=undefined emits instrumentation only for 'g', although both
are equivalent. When 'int r' is changed to 'unsigned short r', 'g' is also not
instrumented.

PR 107912 shows a slightly more complicated variant of this. Affects both C and
C++.

Reply via email to