Francois Saint-Jacques created ARROW-5007: ---------------------------------------------
Summary: [C++] Move DCHECK out of sse-utils Key: ARROW-5007 URL: https://issues.apache.org/jira/browse/ARROW-5007 Project: Apache Arrow Issue Type: Improvement Components: C++ Reporter: Francois Saint-Jacques Some users tried to compile arrow on ppc64, but they face the following error {code:bash} 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"; {code} 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. -- This message was sent by Atlassian JIRA (v7.6.3#76005)