Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
Description
Unit test BitUtilTests.TestCopyAndReverseBitmapPreAllocated failed if release build arrow with clang-12, on both x86 and Arm.
Per my debug, it's related to GetReversedBlock function [1], when right shift a uint8 value by 8 bits.
I think it's a compiler bug. From the test code [2], clang-12 returns 1, which is wrong. clang-11 and clang-13 both return 2, the correct answer. Looks clang-12 over optimized the code, there should be no UB in the code (uint8 is promoted to integer before shift).
A workaround is to treat shifting 8 bits as a special case. Or we can simply ignore this error if the compiler bug is confirmed (I didn't find clang bug report).
[1] https://github.com/apache/arrow/blob/master/cpp/src/arrow/util/bitmap_ops.cc#L101
[2] https://godbolt.org/z/TzYWfcP1E
Attachments
Issue Links
- links to