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)