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

            Bug ID: 417993
           Summary: vbit-test fail on s390x with Iop_Add32: spurious
                    dependency on uninitialised value
           Product: valgrind
           Version: unspecified
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: memcheck
          Assignee: jsew...@acm.org
          Reporter: ar...@linux.ibm.com
  Target Milestone: ---

This is seen on s390x with the test case in `memcheck/tests/vbit-test':
┌────
│ valgrind -q --expensive-definedness-checks=yes ./vbit-test
│ ==113353== Conditional jump or move depends on uninitialised value(s)
│ ==113353==    at 0x10012A8: check_result_for_binary (binary.c:372)
│ ==113353==    by 0x10025A7: test_binary_op (binary.c:683)
│ ==113353==    by 0x1000B35: main (main.c:192)
└────
The uninitialised value results from the calculation in
int_add_or_sub_vbits().  In the failing case the function receives two
32-bit unsigned integers as arguments, the first of which equals zero,
but has its least significant bit undefined, and the second value equals
0xffffffff.

One step of the calculation determines the value `a_min' as
┌────
│ a_min = aa & ~vaa;
└────
where `aa' has the lowest bit undefined and `vaa' has exactly the lowest
bit set.  However, the compiler transforms this to
┌────
│ a_min = (aa & vaa) ^ aa;
└────
After that, Valgrind's memcheck considers the lowest bit of `a_min'
undefined as well.

NOTE: In order to run the test case, I temporarily disabled Iop_Or1 and
Iop_And1 for s390x in the `irops' array in irops.c.

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

Reply via email to