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.