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

[C++] Move DCHECK out of sse-utils

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • None
    • 0.14.0
    • C++

    Description

      Some users tried to compile arrow on ppc64, but they face the following error

      In file included from /root/repos/arrow/cpp/src/arrow/json/chunker.h:26:0,
                       from /root/repos/arrow/cpp/src/arrow/json/chunker.cc:18:
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h: In function ‘__m128i arrow::SSE4_cmpestrm(__m128i, int, __m128i, int)’:
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h:125:3: error: there are no arguments to ‘DCHECK’ that depend on a template parameter, so a declaration of ‘DCHECK’ must be available [-fpermissive]
         DCHECK(false) << "CPU doesn't support SSE 4.2";
         ^~~~~~
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h:125:3: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h: In function ‘int arrow::SSE4_cmpestri(__m128i, int, __m128i, int)’:
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h:131:3: error: there are no arguments to ‘DCHECK’ that depend on a template parameter, so a declaration of ‘DCHECK’ must be available [-fpermissive]
         DCHECK(false) << "CPU doesn't support SSE 4.2";
         ^~~~~~
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h: In function ‘uint32_t arrow::SSE4_crc32_u8(uint32_t, uint8_t)’:
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h:136:3: error: ‘DCHECK’ was not declared in this scope
         DCHECK(false) << "SSE support is not enabled";
         ^~~~~~
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h: In function ‘uint32_t arrow::SSE4_crc32_u16(uint32_t, uint16_t)’:
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h:141:3: error: ‘DCHECK’ was not declared in this scope
         DCHECK(false) << "SSE support is not enabled";
         ^~~~~~
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h: In function ‘uint32_t arrow::SSE4_crc32_u32(uint32_t, uint32_t)’:
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h:146:3: error: ‘DCHECK’ was not declared in this scope
         DCHECK(false) << "SSE support is not enabled";
         ^~~~~~
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h: In function ‘uint32_t arrow::SSE4_crc32_u64(uint32_t, uint64_t)’:
      /root/repos/arrow/cpp/src/arrow/util/sse-util.h:151:3: error: ‘DCHECK’ was not declared in this scope
         DCHECK(false) << "SSE support is not enabled";
      

      By importing `logging.h` or removing `DCHECK`, they can compile. The fix should be to refactor the SSE detection macro out of this file such that the needing code does not need to import this file and only a header with macro detection.

      Attachments

        Issue Links

          Activity

            People

              fsaintjacques Francois Saint-Jacques
              fsaintjacques Francois Saint-Jacques
              Votes:
              2 Vote for this issue
              Watchers:
              5 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 - 20m
                  20m