Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-15461

[C++] arrow-utility-test fails with clang-12 (TestCopyAndReverseBitmapPreAllocated)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 7.0.0
    • C++

    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

          Activity

            People

              apitrou Antoine Pitrou
              yibocai Yibo Cai
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 2h 20m
                  2h 20m